summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTING.rst5
-rw-r--r--README.rst10
-rw-r--r--harmony/apr-util/APKBUILD64
-rw-r--r--harmony/attr/APKBUILD75
-rw-r--r--harmony/attr/fix-decls.patch35
-rw-r--r--harmony/attr/fix-throw.patch33
-rw-r--r--harmony/attr/test-runner-musl.patch11
-rw-r--r--harmony/attr/test-runner-perl.patch11
-rw-r--r--harmony/autoconf/APKBUILD45
-rw-r--r--harmony/autoconf/autoconf-2.69-fix-perl-regex.patch11
-rw-r--r--harmony/boost/APKBUILD145
-rw-r--r--harmony/boost/boost-1.57.0-python-abi_letters.patch62
-rw-r--r--harmony/boost/boost-1.57.0-python-libpython_dep.patch13
-rw-r--r--harmony/boost/dual-python.patch27
-rw-r--r--harmony/boost/libressl.patch146
-rw-r--r--harmony/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch63
-rw-r--r--harmony/busybox/0001-ash-exec-busybox.static.patch25
-rw-r--r--harmony/busybox/0002-app-location-for-cpio-vi-and-lspci.patch54
-rw-r--r--harmony/busybox/0003-udhcpc-set-default-discover-retries-to-5.patch35
-rw-r--r--harmony/busybox/0004-ping-make-ping-work-without-root-privileges.patch197
-rw-r--r--harmony/busybox/0005-fbsplash-support-console-switching.patch187
-rw-r--r--harmony/busybox/0006-fbsplash-support-image-and-bar-alignment-and-positio.patch185
-rw-r--r--harmony/busybox/0007-depmod-support-generating-kmod-binary-index-files.patch516
-rw-r--r--harmony/busybox/0008-diff-add-support-for-no-dereference.patch63
-rw-r--r--harmony/busybox/0009-sysklogd-add-Z-option-to-adjust-message-timezones.patch104
-rw-r--r--harmony/busybox/0010-udhcpc-Don-t-background-if-n-is-given.patch45
-rw-r--r--harmony/busybox/0011-testsuite-fix-cpio-tests.patch82
-rw-r--r--harmony/busybox/0012-microcom-segfault.patch31
-rw-r--r--harmony/busybox/APKBUILD194
-rw-r--r--harmony/busybox/acpid.logrotate8
-rw-r--r--harmony/busybox/bbsuid.c106
-rw-r--r--harmony/busybox/busybox-extras.post-install4
-rw-r--r--harmony/busybox/busybox-extras.pre-deinstall9
-rw-r--r--harmony/busybox/busybox.post-install4
-rw-r--r--harmony/busybox/busybox.post-upgrade26
-rw-r--r--harmony/busybox/busybox.trigger20
-rw-r--r--harmony/busybox/busyboxconfig1138
-rw-r--r--harmony/busybox/busyboxconfig-extras1114
-rw-r--r--harmony/busybox/dad.if-up8
-rw-r--r--harmony/busybox/nologin.c38
-rw-r--r--harmony/busybox/top-buffer-overflow.patch20
-rw-r--r--harmony/c-ares/APKBUILD46
-rw-r--r--harmony/ca-certificates/APKBUILD54
-rw-r--r--harmony/ca-certificates/ca-certificates.post-deinstall7
-rw-r--r--harmony/ca-certificates/ca-certificates.trigger3
-rw-r--r--harmony/check/APKBUILD42
-rw-r--r--harmony/cmake/APKBUILD59
-rw-r--r--harmony/coreutils/051_all_coreutils-mangen.patch120
-rw-r--r--harmony/coreutils/APKBUILD79
-rw-r--r--harmony/coreutils/coreutils.post-deinstall4
-rw-r--r--harmony/coreutils/disable-mbrtowc-test.patch10
-rw-r--r--harmony/coreutils/localename-test-fix.patch34
-rw-r--r--harmony/coreutils/no-doc.patch22
-rw-r--r--harmony/coreutils/printf-musl.patch53
-rw-r--r--harmony/coreutils/seq-write-error.patch45
-rw-r--r--harmony/coreutils/sort-debug-locale.patch79
-rw-r--r--harmony/curl/APKBUILD93
-rw-r--r--harmony/curl/curl-do-bounds-check-using-a-double-comparison.patch32
-rw-r--r--harmony/diffutils/APKBUILD50
-rw-r--r--harmony/diffutils/disable-mbrtowc-test.patch10
-rw-r--r--harmony/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch55
-rw-r--r--harmony/ffmpeg/APKBUILD103
-rw-r--r--harmony/freetype/0001-Enable-table-validation-modules.patch34
-rw-r--r--harmony/freetype/0002-Enable-subpixel-rendering.patch25
-rw-r--r--harmony/freetype/0003-Enable-infinality-subpixel-hinting.patch27
-rw-r--r--harmony/freetype/0004-Enable-long-PCF-family-names.patch25
-rw-r--r--harmony/freetype/40-memcpy-fix.patch14
-rw-r--r--harmony/freetype/APKBUILD59
-rw-r--r--harmony/freetype/freetype-profile.sh12
-rw-r--r--harmony/gamin/APKBUILD58
-rw-r--r--harmony/gamin/fix-deprecated-const.patch56
-rw-r--r--harmony/gamin/fix-pthread-mutex.patch11
-rw-r--r--harmony/git/0001-gc-use-s-type-character-for-fscanf.patch33
-rw-r--r--harmony/git/APKBUILD255
-rw-r--r--harmony/git/bb-tar.patch8
-rw-r--r--harmony/git/dont-test-other-encodings.patch193
-rw-r--r--harmony/git/git-daemon.confd19
-rw-r--r--harmony/git/git-daemon.initd13
-rw-r--r--harmony/glib-networking/APKBUILD43
-rw-r--r--harmony/glib-networking/proxy-test.patch13
-rw-r--r--harmony/glib/0001-gquark-fix-initialization-with-c-constructors.patch47
-rw-r--r--harmony/glib/APKBUILD103
-rw-r--r--harmony/glib/broken-gio-tests.patch100
-rw-r--r--harmony/glib/fix-spawn.patch22
-rw-r--r--harmony/glib/glib.trigger16
-rw-r--r--harmony/glib/i386-fpu-test.patch13
-rw-r--r--harmony/glib/musl-no-locale.patch55
-rw-r--r--harmony/glib/ridiculous-strerror-nonconformance.patch11
-rw-r--r--harmony/glib/thread-test-fix.patch11
-rw-r--r--harmony/gnutls/APKBUILD74
-rw-r--r--harmony/gnutls/tests-date-compat.patch12
-rw-r--r--harmony/gpgme/APKBUILD59
-rw-r--r--harmony/gpgme/fix-bashism.patch10
-rw-r--r--harmony/graphviz/0001-clone-nameclash.patch87
-rw-r--r--harmony/graphviz/APKBUILD120
-rw-r--r--harmony/graphviz/graphviz.pre-deinstall5
-rw-r--r--harmony/graphviz/graphviz.trigger3
-rw-r--r--harmony/gsl/APKBUILD41
-rw-r--r--harmony/gsl/dont-disable-deprecated.patch24
-rw-r--r--harmony/hexchat/APKBUILD61
-rw-r--r--harmony/hexchat/libressl.patch105
-rw-r--r--harmony/hexchat/pixdata.patch56
-rw-r--r--harmony/i3lock/APKBUILD43
-rw-r--r--harmony/iproute2/APKBUILD59
-rw-r--r--harmony/iproute2/iproute2.post-install6
-rw-r--r--harmony/iproute2/musl-fixes.patch214
-rw-r--r--harmony/jasper/APKBUILD49
-rw-r--r--harmony/kyua/APKBUILD41
-rw-r--r--harmony/libbluray/APKBUILD36
-rw-r--r--harmony/libcanberra/APKBUILD95
-rw-r--r--harmony/libevent/APKBUILD65
-rw-r--r--harmony/libevent/dont-test-fallback.patch16
-rw-r--r--harmony/libevent/fix-test-on-32bit.patch11
-rw-r--r--harmony/libevent/libressl.patch97
-rw-r--r--harmony/libevent/py3_dumpevents.patch30
-rw-r--r--harmony/libevent/py3_rpcgen.patch423
-rw-r--r--harmony/libffi/APKBUILD57
-rw-r--r--harmony/libffi/disable-ppc-ldvariant.patch11
-rw-r--r--harmony/libffi/fix-testsuite-longdouble.patch44
-rw-r--r--harmony/libffi/gnu-linux-define.patch15
-rw-r--r--harmony/libffi/pax-dlmmap.patch120
-rw-r--r--harmony/libgit2/APKBUILD52
-rw-r--r--harmony/libgit2/build-both-static-dynamic.patch53
-rw-r--r--harmony/libgit2/libressl.patch12
-rw-r--r--harmony/libgit2/pkgconfig-do-not-quote-Libs.patch26
-rw-r--r--harmony/libnih/APKBUILD57
-rw-r--r--harmony/libnih/disable-broken-test.patch11
-rw-r--r--harmony/libnih/musl-enomem-message.patch489
-rw-r--r--harmony/libnih/musl-fix-signals.patch12
-rw-r--r--harmony/libnih/parse-test-fix.patch11
-rw-r--r--harmony/libnotify/APKBUILD34
-rw-r--r--harmony/libsndfile/APKBUILD61
-rw-r--r--harmony/libsndfile/CVE-2017-12562.patch88
-rw-r--r--harmony/libsndfile/CVE-2017-8361_CVE-2017-8363_CVE-2017-8365.patch64
-rw-r--r--harmony/libsndfile/CVE-2017-8362.patch50
-rw-r--r--harmony/libsndfile/varargs-32bit.patch11
-rw-r--r--harmony/libssh2/APKBUILD41
-rw-r--r--harmony/libtool/APKBUILD55
-rw-r--r--harmony/libtool/libtool-fix-cross-compile.patch36
-rw-r--r--harmony/libtool/libtool.patch41
-rw-r--r--harmony/libvpx/APKBUILD52
-rw-r--r--harmony/libvpx/libm-pc.patch11
-rw-r--r--harmony/libxml2/APKBUILD78
-rw-r--r--harmony/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch12
-rw-r--r--harmony/libxml2/python-segfault-fix.patch36
-rw-r--r--harmony/libxslt/APKBUILD40
-rw-r--r--harmony/lighttpd/APKBUILD116
-rw-r--r--harmony/lighttpd/char-signedness.patch46
-rw-r--r--harmony/lighttpd/lighttpd.conf261
-rw-r--r--harmony/lighttpd/lighttpd.confd12
-rw-r--r--harmony/lighttpd/lighttpd.initd75
-rw-r--r--harmony/lighttpd/lighttpd.logrotate15
-rw-r--r--harmony/lighttpd/lighttpd.pre-install8
l---------harmony/lighttpd/lighttpd.pre-upgrade1
-rw-r--r--harmony/lighttpd/mime-types.conf79
-rw-r--r--harmony/lighttpd/mod_cgi.conf33
-rw-r--r--harmony/lighttpd/mod_fastcgi.conf17
-rw-r--r--harmony/lighttpd/mod_fastcgi_fpm.conf16
-rw-r--r--harmony/linux-pam/APKBUILD91
-rw-r--r--harmony/linux-pam/base-account.pamd3
-rw-r--r--harmony/linux-pam/base-auth.pamd5
-rw-r--r--harmony/linux-pam/base-password.pamd3
-rw-r--r--harmony/linux-pam/base-session-noninteractive.pamd4
-rw-r--r--harmony/linux-pam/base-session.pamd4
-rw-r--r--harmony/linux-pam/fix-compat.patch21
-rw-r--r--harmony/linux-pam/libpam-fix-build-with-eglibc-2.16.patch10
-rw-r--r--harmony/linux-pam/musl-fix-pam_exec.patch31
-rw-r--r--harmony/linux-pam/other.pamd6
-rw-r--r--harmony/linux-pam/su.pamd6
-rw-r--r--harmony/lm_sensors/APKBUILD85
-rw-r--r--harmony/lm_sensors/fancontrol.initd33
-rw-r--r--harmony/lm_sensors/musl-fix-includes.patch62
-rw-r--r--harmony/lm_sensors/sensord.confd3
-rw-r--r--harmony/lm_sensors/sensord.initd33
-rw-r--r--harmony/lm_sensors/sensors-detect-alpine.patch47
-rw-r--r--harmony/lm_sensors/sensors.install12
-rw-r--r--harmony/mutt/APKBUILD61
-rw-r--r--harmony/neon/APKBUILD41
-rw-r--r--harmony/openldap/APKBUILD208
-rw-r--r--harmony/openldap/CVE-2017-9287.patch28
-rw-r--r--harmony/openldap/configs.patch117
-rw-r--r--harmony/openldap/fix-manpages.patch75
-rw-r--r--harmony/openldap/libressl.patch65
-rw-r--r--harmony/openldap/openldap-2.4-ppolicy.patch13
-rw-r--r--harmony/openldap/openldap-2.4.11-libldap_r.patch11
-rw-r--r--harmony/openldap/openldap-mqtt-overlay.patch447
-rw-r--r--harmony/openldap/openldap.post-install11
-rw-r--r--harmony/openldap/openldap.post-upgrade31
-rw-r--r--harmony/openldap/openldap.pre-install7
-rw-r--r--harmony/openldap/slapd.confd12
-rw-r--r--harmony/openldap/slapd.initd34
-rw-r--r--harmony/orbit2/APKBUILD45
-rw-r--r--harmony/orbit2/glib-2.36.patch15
-rw-r--r--harmony/parted/APKBUILD60
-rw-r--r--harmony/parted/disable-two-tests.patch16
-rw-r--r--harmony/parted/fix-includes.patch10
-rw-r--r--harmony/parted/fix-libintl-header-s390x.patch58
-rw-r--r--harmony/parted/tests-call-name-correctly.patch42
-rw-r--r--harmony/parted/tests-python3.patch68
-rw-r--r--harmony/pcre/APKBUILD90
-rw-r--r--harmony/pcre2/APKBUILD88
-rw-r--r--harmony/postgresql/APKBUILD259
-rw-r--r--harmony/postgresql/conf-unix_socket_directories.patch14
-rw-r--r--harmony/postgresql/disable-broken-tests.patch119
-rw-r--r--harmony/postgresql/initdb.patch14
-rw-r--r--harmony/postgresql/perl-rpath.patch22
-rw-r--r--harmony/postgresql/pg-restore.confd16
-rw-r--r--harmony/postgresql/pg-restore.initd36
-rw-r--r--harmony/postgresql/pltcl_create_tables.sql13
-rw-r--r--harmony/postgresql/postgresql.confd59
-rw-r--r--harmony/postgresql/postgresql.initd220
-rw-r--r--harmony/postgresql/postgresql.pre-upgrade32
-rw-r--r--harmony/py-dbus/APKBUILD44
-rw-r--r--harmony/py-mako/APKBUILD51
-rw-r--r--harmony/qca/APKBUILD35
-rw-r--r--harmony/redis/APKBUILD84
-rw-r--r--harmony/redis/posix-runtest.patch33
-rw-r--r--harmony/redis/redis.confd9
-rwxr-xr-xharmony/redis/redis.initd52
-rw-r--r--harmony/redis/redis.logrotate4
-rw-r--r--harmony/redis/redis.pre-install6
-rw-r--r--harmony/rsync/APKBUILD65
-rw-r--r--harmony/rsync/rsyncd.conf7
-rw-r--r--harmony/rsync/rsyncd.confd8
-rw-r--r--harmony/rsync/rsyncd.initd16
-rw-r--r--harmony/rsync/rsyncd.logrotate9
-rw-r--r--harmony/sed/APKBUILD49
-rw-r--r--harmony/sed/disable-mbrtowc-test.patch10
-rw-r--r--harmony/sed/localename-test-fix.patch34
-rw-r--r--harmony/sed/sed.post-deinstall6
-rw-r--r--harmony/snappy/APKBUILD35
-rw-r--r--harmony/snappy/fix-UnalignedCopy64.patch13
-rw-r--r--harmony/ssmtp/APKBUILD52
-rw-r--r--harmony/ssmtp/generate_config.patch49
-rw-r--r--harmony/ssmtp/inet6-getaddrinfo.patch12
-rw-r--r--harmony/ssmtp/libcrypto-underlinking.patch11
-rw-r--r--harmony/strace/APKBUILD64
-rw-r--r--harmony/strace/disable-fortify.patch39
-rw-r--r--harmony/strace/fix-ppc-pt-regs-collision.patch19
-rw-r--r--harmony/strace/nlattr-fix.patch21
-rw-r--r--harmony/tzdata/0001-posixtz-fix-up-lseek.patch27
-rw-r--r--harmony/tzdata/APKBUILD66
-rw-r--r--harmony/upower/APKBUILD40
-rw-r--r--harmony/upower/daemon-fix-get_critical_action.patch28
-rw-r--r--harmony/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch184
-rw-r--r--harmony/wayland/APKBUILD59
-rw-r--r--harmony/weechat/APKBUILD66
-rw-r--r--harmony/weechat/fix-python-linking.patch11
-rw-r--r--harmony/weechat/libintl-fix.patch12
-rw-r--r--harmony/wget/APKBUILD50
-rw-r--r--harmony/wpa_supplicant/APKBUILD104
-rw-r--r--harmony/wpa_supplicant/config550
-rw-r--r--harmony/wpa_supplicant/eloop.patch16
-rw-r--r--harmony/wpa_supplicant/libressl.patch49
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch174
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch250
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch184
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch79
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch64
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch132
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch43
-rw-r--r--harmony/wpa_supplicant/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch82
-rw-r--r--harmony/wpa_supplicant/wpa_cli.sh33
-rw-r--r--harmony/wpa_supplicant/wpa_supplicant.confd6
-rw-r--r--harmony/wpa_supplicant/wpa_supplicant.initd53
-rw-r--r--harmony/zsh/APKBUILD159
-rw-r--r--harmony/zsh/zprofile24
-rw-r--r--harmony/zsh/zsh.post-install3
-rw-r--r--harmony/zsh/zsh.post-upgrade19
-rw-r--r--harmony/zsh/zsh.pre-deinstall3
-rw-r--r--system/abuild/0001-abuild-add-env-option-to-require-tests.patch33
-rw-r--r--system/abuild/APKBUILD78
-rw-r--r--system/abuild/abuild.pre-install5
l---------system/abuild/abuild.pre-upgrade1
-rw-r--r--system/abuild/adelie-customisations.patch48
-rw-r--r--system/abuild/newapkbuild-cmake.patch35
-rw-r--r--system/abuild/posix-abuild.patch68
-rw-r--r--system/adelie-base/APKBUILD13
-rwxr-xr-xsystem/adelie-base/adduser2
-rw-r--r--system/bash/APKBUILD116
-rw-r--r--system/bash/bash-noinfo.patch11
-rw-r--r--system/bash/bash.post-upgrade3
-rw-r--r--system/bash/bash.pre-deinstall3
-rw-r--r--system/bash/bash44-sensible-defaults.patch25
-rw-r--r--system/bash/bashrc71
-rw-r--r--system/binutils/APKBUILD140
-rw-r--r--system/binutils/CVE-2017-7614.patch84
-rw-r--r--system/binutils/binutils-ld-fix-static-linking.patch46
-rw-r--r--system/binutils/disable-gnu-mbind.patch32
-rw-r--r--system/binutils/disable-ifunc-tests.patch12
-rw-r--r--system/binutils/disable-preinit-array-tests.patch29
-rw-r--r--system/binutils/gold-mips.patch39
-rw-r--r--system/binutils/hash-style-configure-flag.patch348
-rw-r--r--system/binutils/mips-illegal-memcpy.patch11
-rw-r--r--system/binutils/remove-no-static-plt-test.patch21
-rw-r--r--system/binutils/remove-pr19553c-test.patch14
-rw-r--r--system/binutils/remove-pr2404-tests.patch73
-rw-r--r--system/build-tools/APKBUILD4
-rw-r--r--system/clang/APKBUILD103
-rw-r--r--system/clang/clang-0001-Add-Alpine-Linux-distro.patch37
-rw-r--r--system/clang/clang-0002-Use-z-relro-on-Alpine-Linux.patch16
-rw-r--r--system/clang/clang-0003-Use-hash-style-gnu-for-Alpine-Linux.patch16
-rw-r--r--system/clang/clang-0004-Add-musl-targets.patch116
-rw-r--r--system/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch55
-rw-r--r--system/clang/clang-0006-Link-with-z-now-by-default-for-Alpine-Linux.patch19
-rw-r--r--system/clang/clang-0007-Enable-stack-protector-by-default-for-alpine-linux.patch54
-rw-r--r--system/consolekit2/0001-busybox-reboot-and-poweroff-support.patch40
-rw-r--r--system/consolekit2/APKBUILD63
-rw-r--r--system/consolekit2/ac_disable_static.patch13
-rw-r--r--system/consolekit2/add-listseats.patch100
-rw-r--r--system/consolekit2/consolekit2.initd9
-rw-r--r--system/consolekit2/pam-foreground-compat.ck17
-rw-r--r--system/cups/APKBUILD135
-rw-r--r--system/cups/cups-no-export-ssllibs.patch12
-rw-r--r--system/cups/cups.logrotate8
-rw-r--r--system/cups/cups.pre-install8
-rw-r--r--system/cups/cupsd.initd44
-rw-r--r--system/cups/default-config-no-gssapi.patch26
-rw-r--r--system/dash/APKBUILD44
-rw-r--r--system/debianutils/APKBUILD6
-rw-r--r--system/easy-kernel/APKBUILD50
-rw-r--r--system/easy-kernel/config-pmmx17
-rw-r--r--system/easy-kernel/config-ppc21
-rw-r--r--system/easy-kernel/config-ppc645
-rw-r--r--system/easy-kernel/config-x86_641550
-rw-r--r--system/gcc/001_all_default-ssp-strong.patch215
-rw-r--r--system/gcc/002_all_default-relro.patch33
-rw-r--r--system/gcc/003_all_default-fortify-source.patch40
-rw-r--r--system/gcc/005_all_default-as-needed.patch241
-rw-r--r--system/gcc/011_all_default-warn-format-security.patch43
-rw-r--r--system/gcc/012_all_default-warn-trampolines.patch25
-rw-r--r--system/gcc/020_all_msgfmt-libstdc++-link.patch39
-rw-r--r--system/gcc/050_all_libiberty-asprintf.patch18
-rw-r--r--system/gcc/051_all_libiberty-pic.patch10
-rw-r--r--system/gcc/053_all_libitm-no-fortify-source.patch27
-rw-r--r--system/gcc/067_all_gcc-poison-system-directories.patch194
-rw-r--r--system/gcc/090_all_pr55930-dependency-tracking.patch18
-rw-r--r--system/gcc/201-cilkrts.patch59
-rw-r--r--system/gcc/203-libgcc_s.patch56
-rw-r--r--system/gcc/204-linux_libc_has_function.patch25
-rw-r--r--system/gcc/205-nopie.patch75
-rw-r--r--system/gcc/207-static-pie.patch40
-rw-r--r--system/gcc/300-main-gcc-add-musl-s390x-dynamic-linker.patch32
-rw-r--r--system/gcc/310-build-gcj-s390x.patch28
-rw-r--r--system/gcc/320-libffi-gnulinux.patch13
-rw-r--r--system/gcc/APKBUILD646
-rw-r--r--system/gcc/ada-aarch64-multiarch.patch16
-rw-r--r--system/gcc/ada-fixes.patch35
-rw-r--r--system/gcc/ada-musl.patch137
-rw-r--r--system/gcc/ada-shared.patch30
-rw-r--r--system/gcc/add-classic_table-support.patch152
-rw-r--r--system/gcc/boehm-gc-musl.patch62
-rw-r--r--system/gcc/fix-cxxflags-passing.patch10
-rw-r--r--system/gcc/fix-gcj-iconv-musl.patch120
-rw-r--r--system/gcc/fix-gcj-musl.patch49
-rw-r--r--system/gcc/fix-gcj-stdgnu14-link.patch35
-rw-r--r--system/gcc/fix-rs6000-pie.patch59
-rw-r--r--system/gcc/gcc-4.8-build-args.patch41
-rw-r--r--system/gcc/gcc-4.9-musl-fortify.patch11
-rw-r--r--system/gcc/gcc-6.1-musl-libssp.patch20
-rw-r--r--system/gcc/gcc-pure64.patch89
-rw-r--r--system/gcc/libgcc-always-build-gcceh.a.patch39
-rw-r--r--system/gcc/lra-pentium.patch48
-rw-r--r--system/libarchive/APKBUILD55
-rw-r--r--system/libarchive/CVE-2017-14166.patch36
-rw-r--r--system/libarchive/penis.patch11
-rw-r--r--system/llvm4/APKBUILD253
-rw-r--r--system/llvm4/cmake-fix-libLLVM-name.patch26
-rw-r--r--system/llvm4/disable-FileSystemTest.CreateDir-perms-assert.patch61
-rw-r--r--system/llvm4/fix-CheckAtomic.cmake.patch22
-rw-r--r--system/llvm4/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch33
-rw-r--r--system/llvm4/llvm-fix-build-with-musl-libc.patch46
-rw-r--r--system/llvm4/silent-amdgpu-test-failing.patch40
-rw-r--r--system/mesa/APKBUILD252
-rw-r--r--system/mesa/disk_cache-stack-overflow.patch42
-rw-r--r--system/mesa/drmdeps.patch41
-rw-r--r--system/mesa/glx_ro_text_segm.patch28
-rw-r--r--system/mesa/musl-fix-includes.patch14
-rw-r--r--system/mesa/musl-fixes.patch22
-rw-r--r--system/mesa/python3-compat.patch106
-rw-r--r--system/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch25
-rw-r--r--system/openrc/0002-force-root-be-rw-before-localmount.patch30
-rw-r--r--system/openrc/0003-sysctl-add-compatibility-for-busybox-sysctl.patch46
-rw-r--r--system/openrc/0004-hide-error-when-migrating-var-run-to-run.patch28
-rw-r--r--system/openrc/0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch71
-rw-r--r--system/openrc/0006-mount-efivars-read-only.patch27
-rw-r--r--system/openrc/0007-make-consolefont-service-compatible-with-busyboxs-se.patch70
-rw-r--r--system/openrc/APKBUILD93
-rw-r--r--system/openrc/hostname.initd18
-rw-r--r--system/openrc/hwdrivers.initd32
-rw-r--r--system/openrc/keymaps.initd20
-rw-r--r--system/openrc/modloop.confd3
-rw-r--r--system/openrc/modloop.initd124
-rw-r--r--system/openrc/modules.initd29
-rw-r--r--system/openrc/openrc-configuration.patch20
-rw-r--r--system/openrc/openrc.logrotate4
-rw-r--r--system/openrc/openrc.post-install36
-rw-r--r--system/openrc/openrc.post-upgrade35
-rw-r--r--system/openrc/sysfsconf.initd66
-rw-r--r--system/openssh/APKBUILD181
-rw-r--r--system/openssh/bsd-compatible-realpath.patch62
-rw-r--r--system/openssh/fix-utmp.patch11
-rw-r--r--system/openssh/openssh-7.5p1-sandbox.patch23
-rw-r--r--system/openssh/openssh7.4-dynwindows.patch835
-rw-r--r--system/openssh/openssh7.4-peaktput.patch62
-rw-r--r--system/openssh/sftp-interactive.patch14
-rw-r--r--system/openssh/sshd.confd21
-rwxr-xr-xsystem/openssh/sshd.initd100
-rw-r--r--system/openssl/0002-busybox-basename.patch34
-rw-r--r--system/openssl/0003-use-termios.patch26
-rw-r--r--system/openssl/0004-fix-default-ca-path-for-apps.patch79
-rw-r--r--system/openssl/0005-fix-parallel-build.patch349
-rw-r--r--system/openssl/0006-add-ircv3-tls-3.1-extension-support-to-s_client.patch68
-rw-r--r--system/openssl/0008-maintain-abi-compat-with-no-freelist-and-regular-bui.patch27
-rw-r--r--system/openssl/0009-no-rpath.patch11
-rw-r--r--system/openssl/0010-ssl-env-zlib.patch38
-rw-r--r--system/openssl/1001-crypto-hmac-support-EVP_MD_CTX_FLAG_ONESHOT-and-set-.patch88
-rw-r--r--system/openssl/1002-backport-changes-from-upstream-padlock-module.patch200
-rw-r--r--system/openssl/1003-engines-e_padlock-implement-sha1-sha224-sha256-accel.patch782
-rw-r--r--system/openssl/1004-crypto-engine-autoload-padlock-dynamic-engine.patch33
-rw-r--r--system/openssl/APKBUILD151
-rw-r--r--system/polkit/0001-Bug-50145-make-netgroup-support-optional.patch108
-rw-r--r--system/polkit/APKBUILD80
-rw-r--r--system/polkit/CVE-2013-4288.patch123
-rw-r--r--system/polkit/CVE-2015-3218.patch115
-rw-r--r--system/polkit/CVE-2015-3255.patch67
-rw-r--r--system/polkit/CVE-2015-4625.patch1008
-rw-r--r--system/polkit/automake.patch19
-rw-r--r--system/polkit/disable-ck-test.patch15
-rw-r--r--system/polkit/fix-consolekit-db-stat.patch30
-rw-r--r--system/polkit/fix-parallel-make.patch40
-rw-r--r--system/polkit/fix-test-fgetpwent.patch20
-rw-r--r--system/procps/APKBUILD73
-rw-r--r--system/procps/strtod.patch115
-rw-r--r--system/shimmy/APKBUILD6
-rw-r--r--system/sudo/APKBUILD67
-rw-r--r--system/sudo/fix-cross-compile.patch15
-rw-r--r--system/sudo/libcrypt.patch11
-rw-r--r--system/sudo/musl-fix-headers.patch10
-rw-r--r--system/syslinux/APKBUILD51
-rw-r--r--system/syslinux/syslinux.post-upgrade61
-rw-r--r--system/syslinux/syslinux.trigger3
-rwxr-xr-xsystem/syslinux/update-extlinux252
-rw-r--r--system/syslinux/update-extlinux.conf75
-rw-r--r--system/vim/APKBUILD68
-rw-r--r--system/vim/vimrc18
-rw-r--r--system/vlc/APKBUILD359
-rw-r--r--system/vlc/check-headless.patch13
-rw-r--r--system/vlc/disable-sub-autodetect-fuzzy-1-test.patch20
-rw-r--r--system/vlc/fribidi-update.patch83
-rw-r--r--system/vlc/omxil-rpi-codecs.patch15
-rw-r--r--system/vlc/tar-compat.patch11
-rw-r--r--system/vlc/test-s390x.patch13
-rw-r--r--system/vlc/vlc-daemon.pre-install15
-rw-r--r--system/vlc/vlc-libs.trigger5
-rw-r--r--system/vlc/vlc.confd15
-rwxr-xr-xsystem/vlc/vlc.initd32
-rw-r--r--system/wine/APKBUILD139
-rw-r--r--system/wine/no-pie.patch14
-rw-r--r--system/wine/nopie.patch10
-rw-r--r--system/wine/winhlp32-flex.patch9
-rw-r--r--user/acpilight/APKBUILD36
-rw-r--r--user/acpilight/acpilight.post-install11
-rw-r--r--user/acpilight/python3.patch22
-rw-r--r--user/acpilight/rules-warning.patch8
-rw-r--r--user/akonadi-contacts/APKBUILD12
-rw-r--r--user/akonadi-mime/APKBUILD7
-rw-r--r--user/akonadi-notes/APKBUILD4
-rw-r--r--user/akonadi/APKBUILD6
-rw-r--r--user/analitza/APKBUILD43
-rw-r--r--user/ark/APKBUILD4
-rw-r--r--user/artikulate/APKBUILD45
-rw-r--r--user/attica/APKBUILD4
-rw-r--r--user/audacious-plugins-qt/APKBUILD77
-rw-r--r--user/audacious-qt/APKBUILD42
-rw-r--r--user/audiofile/APKBUILD47
-rw-r--r--user/audiofile/tests-unsigned-gcc6.patch29
-rw-r--r--user/baloo/APKBUILD4
-rw-r--r--user/blinken/APKBUILD44
-rw-r--r--user/blinken/test.patch13
-rw-r--r--user/bomber/APKBUILD4
-rw-r--r--user/bovo/APKBUILD4
-rw-r--r--user/breeze-icons/APKBUILD4
-rw-r--r--user/breeze/APKBUILD4
-rw-r--r--user/cflow/APKBUILD7
-rw-r--r--user/corindon-red/APKBUILD2
-rw-r--r--user/digikam/APKBUILD53
-rw-r--r--user/dolphin/APKBUILD4
-rw-r--r--user/dracut/APKBUILD14
-rw-r--r--user/dragonplayer/APKBUILD46
-rw-r--r--user/extra-cmake-modules/APKBUILD4
-rw-r--r--user/featherpad/APKBUILD4
-rw-r--r--user/feh/APKBUILD10
-rw-r--r--user/feh/cflags.patch11
-rw-r--r--user/feh/stdout-buff.patch113
-rw-r--r--user/fluidsynth/APKBUILD41
-rw-r--r--user/frameworkintegration/APKBUILD5
-rw-r--r--user/gcompris-qt/APKBUILD44
-rw-r--r--user/granatier/APKBUILD4
-rw-r--r--user/gwenview/APKBUILD48
-rw-r--r--user/heirloom-pax/APKBUILD32
-rw-r--r--user/id3lib/APKBUILD51
-rw-r--r--user/id3lib/modern-cpp.patch22
-rw-r--r--user/id3lib/test-expose-proper-stdlib-symbols.patch12
-rw-r--r--user/juk/APKBUILD46
-rw-r--r--user/kactivities-stats/APKBUILD4
-rw-r--r--user/kactivities/APKBUILD4
-rw-r--r--user/kactivitymanagerd/APKBUILD4
-rw-r--r--user/kaffeine/APKBUILD44
-rw-r--r--user/kalarmcal/APKBUILD4
-rw-r--r--user/kalarmcal/build-with-kf5-kholidays.patch11
-rw-r--r--user/kalgebra/APKBUILD44
-rw-r--r--user/kalzium/APKBUILD47
-rw-r--r--user/kanagram/APKBUILD45
-rw-r--r--user/kapman/APKBUILD4
-rw-r--r--user/karchive/APKBUILD4
-rw-r--r--user/kate/APKBUILD5
-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/APKBUILD5
-rw-r--r--user/kbounce/APKBUILD4
-rw-r--r--user/kbreakout/APKBUILD4
-rw-r--r--user/kbruch/APKBUILD43
-rw-r--r--user/kcalc/APKBUILD4
-rw-r--r--user/kcalcore/APKBUILD6
-rw-r--r--user/kcalutils/APKBUILD5
-rw-r--r--user/kcharselect/APKBUILD4
-rw-r--r--user/kcmutils/APKBUILD4
-rw-r--r--user/kcodecs/APKBUILD4
-rw-r--r--user/kcolorchooser/APKBUILD43
-rw-r--r--user/kcompletion/APKBUILD7
-rw-r--r--user/kconfig/APKBUILD4
-rw-r--r--user/kconfigwidgets/APKBUILD5
-rw-r--r--user/kcontacts/APKBUILD7
-rw-r--r--user/kcoreaddons/APKBUILD5
-rw-r--r--user/kcrash/APKBUILD4
-rw-r--r--user/kdbusaddons/APKBUILD4
-rw-r--r--user/kde-cli-tools/APKBUILD6
-rw-r--r--user/kde-education/APKBUILD27
-rw-r--r--user/kde-education/org.adelie-linux.about-education.desktop8
-rw-r--r--user/kde-games/APKBUILD14
-rw-r--r--user/kde-games/org.adelie-linux.about-games.desktop8
-rw-r--r--user/kde-graphics/APKBUILD28
-rw-r--r--user/kde-graphics/org.adelie-linux.about-graphics.desktop8
-rw-r--r--user/kde-multimedia/APKBUILD25
-rw-r--r--user/kde-multimedia/org.adelie-linux.about-multimedia.desktop8
-rw-r--r--user/kde-system/APKBUILD2
-rw-r--r--user/kde-utilities/APKBUILD14
-rw-r--r--user/kde-utilities/org.adelie-linux.about-utilities.desktop8
-rw-r--r--user/kdeclarative/APKBUILD4
-rw-r--r--user/kdecoration/APKBUILD4
-rw-r--r--user/kded/APKBUILD4
-rw-r--r--user/kdelibs4support/APKBUILD4
-rw-r--r--user/kdenlive/APKBUILD48
-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/kemoticons/APKBUILD4
-rw-r--r--user/kfilemetadata/APKBUILD4
-rw-r--r--user/kfind/APKBUILD4
-rw-r--r--user/kfloppy/APKBUILD4
-rw-r--r--user/kfourinline/APKBUILD4
-rw-r--r--user/kgeography/APKBUILD44
-rw-r--r--user/kglobalaccel/APKBUILD5
-rw-r--r--user/kgoldrunner/APKBUILD4
-rw-r--r--user/kgpg/APKBUILD4
-rw-r--r--user/kgraphviewer/APKBUILD45
-rw-r--r--user/kguiaddons/APKBUILD4
-rw-r--r--user/khangman/APKBUILD45
-rw-r--r--user/khelpcenter/APKBUILD4
-rw-r--r--user/kholidays/APKBUILD6
-rw-r--r--user/khtml/APKBUILD5
-rw-r--r--user/ki18n/APKBUILD4
-rw-r--r--user/kiconthemes/APKBUILD4
-rw-r--r--user/kidentitymanagement/APKBUILD4
-rw-r--r--user/kidletime/APKBUILD4
-rw-r--r--user/kig/APKBUILD44
-rw-r--r--user/kigo/APKBUILD4
-rw-r--r--user/killbots/APKBUILD4
-rw-r--r--user/kimap/APKBUILD4
-rw-r--r--user/kinfocenter/APKBUILD4
-rw-r--r--user/kinit/APKBUILD4
-rw-r--r--user/kio-extras/APKBUILD6
-rw-r--r--user/kio/APKBUILD8
-rw-r--r--user/kio/D11011-msghdr-iovec-struct.patch23
-rw-r--r--user/kirigami2/APKBUILD6
-rw-r--r--user/kiriki/APKBUILD4
-rw-r--r--user/kitemmodels/APKBUILD4
-rw-r--r--user/kitemviews/APKBUILD5
-rw-r--r--user/kiten/APKBUILD44
-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/APKBUILD44
-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/APKBUILD45
-rw-r--r--user/kmime/APKBUILD4
-rw-r--r--user/kmines/APKBUILD4
-rw-r--r--user/kmix/APKBUILD46
-rw-r--r--user/kmousetool/APKBUILD4
-rw-r--r--user/kmplot/APKBUILD45
-rw-r--r--user/knetwalk/APKBUILD4
-rw-r--r--user/knewstuff/APKBUILD7
-rw-r--r--user/knotifications/APKBUILD4
-rw-r--r--user/knotifyconfig/APKBUILD4
-rw-r--r--user/kollision/APKBUILD4
-rw-r--r--user/kolourpaint/APKBUILD45
-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/APKBUILD6
-rw-r--r--user/kpeople/APKBUILD4
-rw-r--r--user/kphotoalbum/0001-Process-Don-t-use-stdio-identifiers-for-methods.patch116
-rw-r--r--user/kphotoalbum/APKBUILD48
-rw-r--r--user/kpimtextedit/APKBUILD4
-rw-r--r--user/kplotting/APKBUILD4
-rw-r--r--user/kpty/APKBUILD4
-rw-r--r--user/kreversi/APKBUILD4
-rw-r--r--user/krfb/APKBUILD4
-rw-r--r--user/krita/APKBUILD57
-rw-r--r--user/kronometer/APKBUILD1
-rw-r--r--user/kruler/APKBUILD44
-rw-r--r--user/krunner/APKBUILD4
-rw-r--r--user/kscreenlocker/APKBUILD8
-rw-r--r--user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch71
-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/ksysguard/APKBUILD10
-rw-r--r--user/ksysguard/ksysguard-5.5.5-netstat-use-a-real-type.patch16
-rw-r--r--user/ksysguard/ksysguard-5.6.5-processlist-gnu_source.patch12
-rw-r--r--user/ksystemlog/APKBUILD5
-rw-r--r--user/kteatime/APKBUILD4
-rw-r--r--user/ktexteditor/APKBUILD4
-rw-r--r--user/ktextwidgets/APKBUILD5
-rw-r--r--user/ktimer/APKBUILD4
-rw-r--r--user/ktouch/APKBUILD46
-rw-r--r--user/ktuberling/APKBUILD6
-rw-r--r--user/kturtle/APKBUILD44
-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/APKBUILD47
-rw-r--r--user/kwayland/APKBUILD4
-rw-r--r--user/kwidgetsaddons/APKBUILD4
-rw-r--r--user/kwin/APKBUILD13
-rw-r--r--user/kwin/kwin-5.8-respect-uint.patch29
-rw-r--r--user/kwin/kwin-5.8-stop-depending-on-qt5-internals.patch479
-rw-r--r--user/kwindowsystem/APKBUILD4
-rw-r--r--user/kwordquiz/APKBUILD46
-rw-r--r--user/kxmlgui/APKBUILD4
-rw-r--r--user/kxmlrpcclient/APKBUILD4
-rw-r--r--user/kxstitch/APKBUILD45
-rw-r--r--user/labplot/APKBUILD46
-rw-r--r--user/libdca/APKBUILD43
-rw-r--r--user/libkcddb/APKBUILD46
-rw-r--r--user/libkcddb/update-tests.patch22
-rw-r--r--user/libkdegames/APKBUILD4
-rw-r--r--user/libkeduvocdocument/APKBUILD43
-rw-r--r--user/libkipi/APKBUILD41
-rw-r--r--user/libkleo/APKBUILD4
-rw-r--r--user/libkmahjongg/APKBUILD4
-rw-r--r--user/libksane/APKBUILD45
-rw-r--r--user/libkscreen/APKBUILD4
-rw-r--r--user/libksysguard/APKBUILD6
-rw-r--r--user/lskat/APKBUILD4
-rw-r--r--user/lxqt-config/APKBUILD3
-rw-r--r--user/lxqt-desktop/APKBUILD14
-rwxr-xr-xuser/lxqt-desktop/startlxqt99
-rw-r--r--user/lxqt-desktop/startlxqt.148
-rw-r--r--user/lxqt-session/APKBUILD4
-rw-r--r--user/man-db/APKBUILD8
-rw-r--r--user/man-db/man-db-2.7.5-iconv.patch75
-rw-r--r--user/marble/APKBUILD42
-rw-r--r--user/milou/APKBUILD8
-rw-r--r--user/milou/fix-test-signedness.patch11
-rw-r--r--user/minuet/APKBUILD44
-rw-r--r--user/ncompress/APKBUILD13
-rw-r--r--user/ncompress/fix-9bit-compress.patch20
-rw-r--r--user/okteta/APKBUILD10
-rw-r--r--user/okular/APKBUILD49
-rw-r--r--user/otter-browser/APKBUILD6
-rw-r--r--user/oxygen/APKBUILD4
-rw-r--r--user/papirus-icons/APKBUILD27
-rw-r--r--user/pax/APKBUILD41
-rw-r--r--user/pax/needed-header.patch11
-rw-r--r--user/pax/pax-20160306-glibc-to-linux.patch38
-rw-r--r--user/perl-test-command/APKBUILD50
-rw-r--r--user/phonon-vlc/APKBUILD43
-rw-r--r--user/phonon/APKBUILD4
-rw-r--r--user/plasma-desktop/APKBUILD10
-rw-r--r--user/plasma-framework/APKBUILD6
-rw-r--r--user/plasma-integration/APKBUILD14
-rw-r--r--user/plasma-workspace/APKBUILD18
-rw-r--r--user/plasma-workspace/fix-crash-on-wallpaper-change.patch58
-rw-r--r--user/plasma-workspace/plasma-workspace-5.8-cmake-update.patch34
-rw-r--r--user/plasma-workspace/plasma-workspace-5.8-honour-uint.patch43
-rw-r--r--user/plasma-workspace/plasma-workspace-5.8.7-disable-broken-test.patch9
-rw-r--r--user/poppler-qt5/APKBUILD48
-rw-r--r--user/prison/APKBUILD4
-rw-r--r--user/qml-box2d/APKBUILD30
-rw-r--r--user/qpdfview/APKBUILD30
-rw-r--r--user/qt5-qtquickcontrols2/APKBUILD4
-rw-r--r--user/qt5-qtsensors/APKBUILD38
-rw-r--r--user/qt5-qtx11extras/APKBUILD4
-rw-r--r--user/qt5ct/APKBUILD30
-rw-r--r--user/rfkill/APKBUILD12
-rw-r--r--user/rfkill/dont-use-git.patch24
-rw-r--r--user/rocs/APKBUILD46
-rw-r--r--user/schismtracker/APKBUILD30
-rw-r--r--user/sddm-kcm/APKBUILD7
-rw-r--r--user/skanlite/APKBUILD51
-rw-r--r--user/skanlite/fix-version.patch23
-rw-r--r--user/skanlite/png-review-129988.patch99
-rw-r--r--user/skanlite/review-129989.patch72
-rw-r--r--user/solid/APKBUILD4
-rw-r--r--user/sonnet/APKBUILD11
-rw-r--r--user/spectacle/APKBUILD4
-rw-r--r--user/sprunge/APKBUILD57
-rw-r--r--user/step/APKBUILD45
-rw-r--r--user/symboleditor/APKBUILD45
-rw-r--r--user/syntax-highlighting/APKBUILD4
-rw-r--r--user/systemsettings/APKBUILD11
-rw-r--r--user/threadweaver/APKBUILD4
-rw-r--r--user/thunderbird/APKBUILD90
-rw-r--r--user/thunderbird/bad-google-code.patch49
-rw-r--r--user/thunderbird/disable-hunspell_hooks.patch11
-rw-r--r--user/thunderbird/fix-seccomp-bpf.patch14
-rw-r--r--user/thunderbird/mach-linux-musl.patch119
-rw-r--r--user/thunderbird/mozconfig33
-rw-r--r--user/thunderbird/profiler.patch44
-rw-r--r--user/thunderbird/proper-system-hunspell.patch22
-rw-r--r--user/thunderbird/stab.h71
-rw-r--r--user/thunderbird/thunderbird.desktop64
-rw-r--r--user/umbrello/APKBUILD46
-rw-r--r--user/xsane/APKBUILD37
-rw-r--r--user/xsane/xsane-0.999-libpng16.patch20
751 files changed, 37072 insertions, 1889 deletions
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index f3a399011..ef03a93a2 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -6,7 +6,7 @@
:Status:
Draft
:Copyright:
- © 2017 Adélie Linux Team. NCSA open source licence.
+ © 2017-2018 Adélie Linux Team. NCSA open source licence.
@@ -119,4 +119,5 @@ Mailing List
if you have made three commits, you will use the command
``git format-patch HEAD^^^``.
-#. Email the resulting patch to the packagers mailing list.
+#. Email the resulting patch to the mailing list, using ``git send-email`` or
+ your mail client. The mailing list is adelie-pkg@lists.adelielinux.org.
diff --git a/README.rst b/README.rst
index ce31366dd..836e1ca05 100644
--- a/README.rst
+++ b/README.rst
@@ -7,7 +7,7 @@
:Status:
Production
:Copyright:
- © 2017 Adélie Linux Team. NCSA open source licence.
+ © 2017-2018 Adélie Linux Team. NCSA open source licence.
@@ -62,6 +62,14 @@ interested in installing. Desktop applications, server software (also known as
*daemons*), and other useful packages can be found here.
+``harmony``: Packages affected by Project Harmony
+`````````````````````````````````````````````````
+The ``harmony`` directory contains packages that are being discussed with
+Alpine Linux for later merging. These packages may either end up in ``system``
+or Alpine's ``main`` depending on the outcome of discussions. (These packages
+are always available in the ``system`` repo when built by Adélie.)
+
+
Usage
diff --git a/harmony/apr-util/APKBUILD b/harmony/apr-util/APKBUILD
new file mode 100644
index 000000000..415c3e9cd
--- /dev/null
+++ b/harmony/apr-util/APKBUILD
@@ -0,0 +1,64 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=apr-util
+pkgver=1.6.1
+pkgrel=0
+pkgdesc="The Apache Portable Runtime Utility Library"
+url="http://apr.apache.org/"
+arch="all"
+license="ASL 2.0"
+depends=
+subpackages="$pkgname-dev $pkgname-dbm_db $pkgname-dbd_pgsql
+ $pkgname-dbd_sqlite3 $pkgname-ldap"
+
+depends_dev="expat-dev apr-dev openldap-dev sqlite-dev postgresql-dev
+ db-dev openssl-dev"
+makedepends="$depends_dev bash chrpath openssl"
+source="http://www.apache.org/dist/apr/$pkgname-$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --with-apr=/usr \
+ --with-ldap \
+ --with-pgsql \
+ --with-sqlite3 \
+ --with-berkeley-db \
+ --with-crypto \
+ --with-openssl \
+ --without-sqlite2 \
+ --without-gdbm
+ make
+}
+
+check() {
+ cd "$builddir"
+ # testxlate fails because UTF-7 is unsupported
+ make check || return 0
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm "$pkgdir"/usr/lib/*.exp
+ chrpath -d "$pkgdir"/usr/lib/*.so.*
+}
+
+_mv_mod() {
+ pkgdesc="The Apache Portable Runtime Utility Library - $2 driver"
+ depends=
+ local _moddir="usr/lib/apr-util-1"
+ mkdir -p "$subpkgdir"/$_moddir
+ mv "$pkgdir"/$_moddir/apr_$1*.so "$subpkgdir"/$_moddir/
+}
+
+dbm_db() { _mv_mod dbm_db "Berkley DB"; }
+dbd_pgsql() { _mv_mod dbd_pgsql "PostgreSQL"; }
+dbd_mysql() { _mv_mod dbd_mysql "MySQL"; }
+dbd_sqlite3() { _mv_mod dbd_sqlite "SQLite3"; }
+ldap() { _mv_mod ldap "LDAP"; }
+
+sha512sums="40eff8a37c0634f7fdddd6ca5e596b38de15fd10767a34c30bbe49c632816e8f3e1e230678034f578dd5816a94f246fb5dfdf48d644829af13bf28de3225205d apr-util-1.6.1.tar.bz2"
diff --git a/harmony/attr/APKBUILD b/harmony/attr/APKBUILD
new file mode 100644
index 000000000..1a05e8d7b
--- /dev/null
+++ b/harmony/attr/APKBUILD
@@ -0,0 +1,75 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=attr
+pkgver=2.4.47
+pkgrel=7
+pkgdesc="Utilities for managing filesystem extended attributes"
+url="https://savannah.nongnu.org/projects/attr"
+arch="all"
+license="GPL2+ LGPL2+"
+depends=""
+options="!checkroot"
+makedepends="libtool autoconf automake bash gzip"
+checkdepends="perl"
+subpackages="$pkgname-dev $pkgname-doc libattr"
+source="http://download.savannah.nongnu.org/releases/attr/attr-$pkgver.src.tar.gz
+ fix-decls.patch
+ fix-throw.patch
+ test-runner-musl.patch
+ test-runner-perl.patch
+ "
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+
+ sed -i -e '/HAVE_ZIPPED_MANPAGES/s:=.*:=false:' \
+ include/builddefs.in
+}
+
+build() {
+ cd "$builddir"
+
+ OPTIMIZER="${CFLAGS}" DEBUG=-DNDEBUG INSTALL_USER=root INSTALL_GROUP=root ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/ \
+ --exec-prefix=/ \
+ --sbindir=/bin \
+ --bindir=/usr/bin \
+ --libdir=/lib \
+ --libexecdir=/usr/lib \
+ --includedir=/usr/include \
+ --mandir=/usr/share/man \
+ --datadir=/usr/share \
+ --disable-gettext
+ make
+}
+
+check() {
+ cd "$builddir"
+ make tests
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" \
+ install install-lib install-dev
+
+ # provided by man-pages
+ rm -r "$pkgdir"/usr/share/man/man2 \
+ "$pkgdir"/usr/share/man/man5/attr.5
+}
+
+libattr() {
+ pkgdesc="Dynamic library for extended attribute support"
+ replaces="attr"
+ mkdir -p "$subpkgdir"/lib
+ mv "$pkgdir"/lib/lib*.so.* "$subpkgdir"/lib/
+}
+
+sha512sums="2a333f63655758298650cf8f89c175efdc0112dcc4013e8d023e2a9a69f177e4bcb1f1d10b6666d6f2027dca4dec0833d54749952ab153d28367e1a72e6e2831 attr-2.4.47.src.tar.gz
+fa7925f63c611e39b28adbf8fa3838bd91c245e4694957c1a8e212cb8f289eb62e04f50806227f6c1947d432ddf7633a471c13dd08d513d1e2b8a9ac1906cb33 fix-decls.patch
+d758b864bac9bdbc3360df2e7a3bc7d04e06789975cf539b8e2b98b1d874744b55c80f0502e283f7233d6ec41f8a39624fe07b512a7fdc6af8d19dd3af5f9f5a fix-throw.patch
+da4b903ae0ba1c72bae60405745c1135d1c3c1cefd7525fca296f8dc7dac1e60e48eeba0ba80fddb035b24b847b00c5a9926d0d586c5d7989d0428e458d977d3 test-runner-musl.patch
+d10821cc73751171c6b9cc4172cf4c85be9b6e154782090a262a16fd69172a291c5d5c94587aebcf5b5d1e02c27769245d88f0aa86478193cf1a277ac7f4f18e test-runner-perl.patch"
diff --git a/harmony/attr/fix-decls.patch b/harmony/attr/fix-decls.patch
new file mode 100644
index 000000000..0de70a93d
--- /dev/null
+++ b/harmony/attr/fix-decls.patch
@@ -0,0 +1,35 @@
+From 667137acaffb8d0cc62b47821a67a52ba0637d5c Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 10 Jan 2014 13:56:37 +0000
+Subject: avoid glibc-specific DECLS defines
+
+This matches what we do in all the other headers.
+---
+diff --git a/include/xattr.h b/include/xattr.h
+index 70a84be..070d7c5 100644
+--- a/include/xattr.h
++++ b/include/xattr.h
+@@ -30,8 +30,9 @@
+ #define XATTR_CREATE 0x1 /* set value, fail if attr already exists */
+ #define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */
+
+-
+-__BEGIN_DECLS
++#ifdef __cplusplus
++extern "C" {
++#endif
+
+ extern int setxattr (const char *__path, const char *__name,
+ const void *__value, size_t __size, int __flags) __THROW;
+@@ -58,6 +59,8 @@ extern int removexattr (const char *__path, const char *__name) __THROW;
+ extern int lremovexattr (const char *__path, const char *__name) __THROW;
+ extern int fremovexattr (int __filedes, const char *__name) __THROW;
+
+-__END_DECLS
++#ifdef __cplusplus
++}
++#endif
+
+ #endif /* __XATTR_H__ */
+--
+cgit v0.9.0.2
diff --git a/harmony/attr/fix-throw.patch b/harmony/attr/fix-throw.patch
new file mode 100644
index 000000000..220e3ad28
--- /dev/null
+++ b/harmony/attr/fix-throw.patch
@@ -0,0 +1,33 @@
+From 92247401984dd9a80d9d0c8c030692323f980678 Mon Sep 17 00:00:00 2001
+From: Emmanuel Dreyfus <manu@netbsd.org>
+Date: Mon, 30 Jun 2014 13:06:05 +0000
+Subject: Portability fixes
+
+- <features.h> is Linux specific
+- Define __THROW for non glibc based systems
+---
+diff --git a/include/xattr.h b/include/xattr.h
+index 070d7c5..fd1f268 100644
+--- a/include/xattr.h
++++ b/include/xattr.h
+@@ -20,7 +20,18 @@
+ #ifndef __XATTR_H__
+ #define __XATTR_H__
+
++#if defined(linux)
+ #include <features.h>
++#endif
++
++/* Portability non glibc c++ build systems */
++#ifndef __THROW
++# if defined __cplusplus
++# define __THROW throw ()
++# else
++# define __THROW
++# endif
++#endif
+
+ #include <errno.h>
+ #ifndef ENOATTR
+--
+cgit v0.9.0.2
diff --git a/harmony/attr/test-runner-musl.patch b/harmony/attr/test-runner-musl.patch
new file mode 100644
index 000000000..082217477
--- /dev/null
+++ b/harmony/attr/test-runner-musl.patch
@@ -0,0 +1,11 @@
+--- attr-2.4.47/test/attr.test.old 2013-05-19 04:53:54.000000000 +0000
++++ attr-2.4.47/test/attr.test 2017-07-01 22:44:23.620785074 +0000
+@@ -11,7 +11,7 @@
+
+ $ touch f
+ $ setfattr -n user -v value f
+- > setfattr: f: Operation not supported
++ > setfattr: f: Not supported
+
+ $ setfattr -n user. -v value f
+ > setfattr: f: Invalid argument
diff --git a/harmony/attr/test-runner-perl.patch b/harmony/attr/test-runner-perl.patch
new file mode 100644
index 000000000..67e117034
--- /dev/null
+++ b/harmony/attr/test-runner-perl.patch
@@ -0,0 +1,11 @@
+--- attr-2.4.47/test/run.old 2013-05-19 04:53:54.000000000 +0000
++++ attr-2.4.47/test/run 2017-07-01 22:43:09.541515814 +0000
+@@ -84,7 +84,7 @@
+ if (defined $line) {
+ # Substitute %VAR and %{VAR} with environment variables.
+ $line =~ s[%(\w+)][$ENV{$1}]eg;
+- $line =~ s[%{(\w+)}][$ENV{$1}]eg;
++ $line =~ s[%\{(\w+)\}][$ENV{$1}]eg;
+ }
+ if (defined $line) {
+ if ($line =~ s/^\s*< ?//) {
diff --git a/harmony/autoconf/APKBUILD b/harmony/autoconf/APKBUILD
new file mode 100644
index 000000000..deceea9f9
--- /dev/null
+++ b/harmony/autoconf/APKBUILD
@@ -0,0 +1,45 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=autoconf
+pkgver=2.69
+pkgrel=1
+pkgdesc="A GNU tool for automatically configuring source code"
+arch="noarch"
+license="GPL2+"
+url="http://www.gnu.org/software/autoconf"
+depends="m4 perl"
+subpackages="$pkgname-doc"
+source="ftp://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz
+ autoconf-2.69-fix-perl-regex.patch
+ "
+
+builddir="$srcdir"/$pkgname-$pkgver
+prepare() {
+ update_config_sub
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ M4=/usr/bin/m4 ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make
+}
+
+check() {
+ cd "$builddir"
+ # 38 fails with new perl; 501 fails with new libtool
+ make check TESTSUITEFLAGS="1-37 39-500 502-503"
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm -f "$pkgdir"/usr/share/info/dir
+ # conflict with bintuils
+ rm -f "$pkgdir"/usr/share/info/standards.info
+}
+
+sha512sums="e34c7818bcde14d2cb13cdd293ed17d70740d4d1fd7c67a07b415491ef85d42f450d4fe5f8f80cc330bf75c40a62774c51a4336e06e8da07a4cbc49922d975ee autoconf-2.69.tar.gz
+8b779ecec178091c899b75df4471fb72334a062d6b413502d414e8827fe0c9e2f335a8bef6878ae261e1af1568e3fe71fe82d6b5e53cb54e6585ffd91f069d8d autoconf-2.69-fix-perl-regex.patch"
diff --git a/harmony/autoconf/autoconf-2.69-fix-perl-regex.patch b/harmony/autoconf/autoconf-2.69-fix-perl-regex.patch
new file mode 100644
index 000000000..9cccf912b
--- /dev/null
+++ b/harmony/autoconf/autoconf-2.69-fix-perl-regex.patch
@@ -0,0 +1,11 @@
+--- autoconf-2.69/bin/autoscan.in.old 2012-04-25 02:37:26.000000000 +0000
++++ autoconf-2.69/bin/autoscan.in 2017-08-03 23:59:38.720214631 +0000
+@@ -358,7 +358,7 @@
+ {
+ # Strip out comments and variable references.
+ s/#.*//;
+- s/\${[^\}]*}//g;
++ s/\$\{[^\}]*\}//g;
+ s/@[^@]*@//g;
+
+ # Tokens in the code.
diff --git a/harmony/boost/APKBUILD b/harmony/boost/APKBUILD
new file mode 100644
index 000000000..9024cb9fe
--- /dev/null
+++ b/harmony/boost/APKBUILD
@@ -0,0 +1,145 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=boost
+pkgver=1.62.0
+_pkgver="${pkgver//./_}"
+pkgrel=6
+pkgdesc="Free peer-reviewed portable C++ source libraries"
+url="http://www.boost.org/"
+arch="all"
+license="custom"
+options="!check" # No test suite.
+depends=""
+depends_dev="linux-headers"
+makedepends="$depends_dev python3-dev flex bison bzip2-dev zlib-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/${pkgname}_$_pkgver.tar.bz2
+ libressl.patch
+ boost-1.57.0-python-abi_letters.patch
+ boost-1.57.0-python-libpython_dep.patch
+ "
+builddir="$srcdir/${pkgname}_${_pkgver}"
+
+_libs="date_time
+ filesystem
+ graph
+ iostreams
+ math
+ prg_exec_monitor
+ program_options
+ python3
+ random
+ regex
+ serialization
+ signals
+ system
+ thread
+ unit_test_framework
+ wave
+ wserialization
+ "
+for _lib in $_libs; do
+ subpackages="$subpackages $pkgname-$_lib:_boostlib"
+done
+
+prepare() {
+ default_prepare || return 1
+
+ cd "$builddir"
+
+ PY3_VERSION="$(_pyversion python3)"
+ abiflags=$(python3-config --abiflags)
+
+
+ # create user-config.jam
+ cat > user-config.jam <<-__EOF__
+
+ using gcc : : $CC : <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
+ using python : ${PY3_VERSION} : /usr/bin/python3 : /usr/include/python${PY3_VERSION}m : : : : $abiflags ;
+
+ __EOF__
+}
+
+case "$CARCH" in
+ armhf|aarch64) _boostarch=arm ;;
+ ppc64*) _boostarch=ppc ;;
+ s390x) _boostarch=s390 ;;
+ pmmx) _boostarch=x86 ;;
+ *) _boostarch=$CARCH ;;
+esac
+_enginedir=tools/build/src/engine
+_bjam="${builddir}/$_enginedir/bin.linux${_boostarch}/bjam"
+[ "$_boostarch" = "s390" ] && _bjam="${builddir}/$_enginedir/bin.linux390/bjam" && \
+ _options_s390="--without-context --without-coroutine --without-coroutine2"
+
+_options="--user-config=\"$builddir/user-config.jam\"
+ --prefix=\"$pkgdir/usr\"
+ release
+ debug-symbols=off
+ threading=single,multi
+ runtime-link=shared
+ link=shared,static
+ cflags=-fno-strict-aliasing
+ -sPYTHON_ROOT=/usr
+ -sTOOLS=gcc
+ --layout=tagged
+ -q
+ -j${JOBS:-2}
+ ${_options_s390}
+ "
+
+build() {
+ export BOOST_ROOT="$builddir"
+
+ msg "Building bjam"
+ cd "$builddir"/$_enginedir
+ CC= ./build.sh cc || return 1
+
+ msg "Building bcp"
+ cd "$builddir"/tools/bcp
+ "$_bjam" -j${JOBS:-2} || return 1
+
+ msg "Building boost"
+ cd "$builddir"
+ "$_bjam" $_options
+}
+
+package() {
+ export BOOST_ROOT="$builddir"
+ cd "$builddir"
+
+ install -Dm755 $_bjam \
+ "$pkgdir"/usr/bin/bjam || return 1
+
+ install -Dm755 dist/bin/bcp "$pkgdir"/usr/bin/bcp || return 1
+
+ install -Dm644 LICENSE_1_0.txt \
+ "$pkgdir"/usr/share/licenses/$pkgname/LICENSE_1_0.txt || return 1
+
+ "$pkgdir"/usr/bin/bjam $_options \
+ --includedir="$pkgdir"/usr/include \
+ --libdir="$pkgdir"/usr/lib \
+ install || return 1
+
+ cd libs/python/pyste/install
+ python3 setup.py install --root="$pkgdir" || return 1
+}
+
+_boostlib() {
+ local name="${subpkgname#$pkgname-}"
+ pkgdesc="Boost $name library"
+ case "$name" in
+ python*) depends="$depends $name"
+ esac
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libboost_$name* "$subpkgdir"/usr/lib/
+}
+
+_pyversion() {
+ $1 -c 'import sys; print("%i.%i" % (sys.version_info.major, sys.version_info.minor))'
+}
+
+sha512sums="5385ae3d5255a433a704169ad454d8dc2b0b5bcae3fb23defd6570df4ff7d845cf9fcbeebccdc1c5db0eec9f82ee3d90040de9507c8167467c635d3b215463be boost_1_62_0.tar.bz2
+5804c344b5e5ece17811e744f1965c58840b6695a084dd09c23c9db380f3cbfbca201d6c595b5379bc12ff6f285794509799d28864df6037db6212c63adb2207 libressl.patch
+d96d4d37394a31764ed817d0bc4a99cffa68a75ff1ecfd4417b9e1e5ae2c31a96ed24f948c6f2758ffdac01328d2402c4cf0d33a37107e4f5f721e636daebd66 boost-1.57.0-python-abi_letters.patch
+132c4b62815d605c2d3c9038427fa4f422612a33711d47b2862f2311516af8a371d6b75bf078a7bffe20be863f8d21fb9fe74dc1a1bac3a10d061e9768ec3e02 boost-1.57.0-python-libpython_dep.patch"
diff --git a/harmony/boost/boost-1.57.0-python-abi_letters.patch b/harmony/boost/boost-1.57.0-python-abi_letters.patch
new file mode 100644
index 000000000..7df3ee704
--- /dev/null
+++ b/harmony/boost/boost-1.57.0-python-abi_letters.patch
@@ -0,0 +1,62 @@
+--- boost_1_57_0/tools/build/src/tools/python.jam 2013-05-21 06:14:18.000000000 +0200
++++ boost_1_55_0/tools/build/src/tools/python.jam 2014-05-29 19:09:12.115413877 +0200
+@@ -94,7 +94,7 @@ feature.feature pythonpath : : free opti
+ # using python : 2.3 : /usr/local/bin/python ;
+ #
+ rule init ( version ? : cmd-or-prefix ? : includes * : libraries ?
+- : condition * : extension-suffix ? )
++ : condition * : extension-suffix ? : abi-letters ? )
+ {
+ project.push-current $(.project) ;
+
+@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ?
+ }
+ }
+
+- configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ;
++ configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ;
+
+ project.pop-current ;
+ }
+@@ -653,7 +653,7 @@ local rule system-library-dependencies (
+
+ # Declare a target to represent Python's library.
+ #
+-local rule declare-libpython-target ( version ? : requirements * )
++local rule declare-libpython-target ( version ? : requirements * : abi-letters ? )
+ {
+ # Compute the representation of Python version in the name of Python's
+ # library file.
+@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve
+ }
+
+ # Declare it.
+- lib python.lib : : <name>python$(lib-version) $(requirements) ;
++ lib python.lib : : <name>python$(lib-version)$(abi-letters) $(requirements) ;
+ }
+
+
+ # Implementation of init.
+ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
+- condition * : extension-suffix ? )
++ condition * : extension-suffix ? : abi-letters ? )
+ {
+ local prefix ;
+ local exec-prefix ;
+@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o
+ extension-suffix ?= _d ;
+ }
+ extension-suffix ?= "" ;
++ abi-letters ?= "" ;
+
+ # Normalize and dissect any version number.
+ local major-minor ;
+@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o
+ }
+ else
+ {
+- declare-libpython-target $(version) : $(target-requirements) ;
++ declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ;
+
+ # This is an evil hack. On, Windows, when Python is embedded, nothing
+ # seems to set up sys.path to include Python's standard library
diff --git a/harmony/boost/boost-1.57.0-python-libpython_dep.patch b/harmony/boost/boost-1.57.0-python-libpython_dep.patch
new file mode 100644
index 000000000..57bfc2677
--- /dev/null
+++ b/harmony/boost/boost-1.57.0-python-libpython_dep.patch
@@ -0,0 +1,13 @@
+Index: boost_1_57_0/tools/build/src/tools/python.jam
+===================================================================
+--- boost_1_57_0/tools/build/src/tools/python.jam (revision 50406)
++++ boost_1_57_0/tools/build/src/tools/python.jam (working copy)
+@@ -994,7 +994,7 @@
+ else
+ {
+ alias python_for_extensions
+- :
++ : python
+ : $(target-requirements)
+ :
+ : $(usage-requirements)
diff --git a/harmony/boost/dual-python.patch b/harmony/boost/dual-python.patch
new file mode 100644
index 000000000..6a0647888
--- /dev/null
+++ b/harmony/boost/dual-python.patch
@@ -0,0 +1,27 @@
+diff --git a/tools/build/src/tools/python.jam b/tools/build/src/tools/python.jam
+index cbd6419..0c29df6 100644
+--- a/tools/build/src/tools/python.jam
++++ b/tools/build/src/tools/python.jam
+@@ -907,14 +907,14 @@ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
+ # for a particular target OS as the default. This makes it so that we can
+ # select a python interpreter with only knowledge of the target OS. And hence
+ # can configure different Pythons based on the target OS only.
+- local toolset-requirements = [ toolset.requirements ] ;
+- local toolset-target-os-requirements
+- = [ property.evaluate-conditionals-in-context
+- [ $(toolset-requirements).raw ] : <target-os>$(target-os) ] ;
+- if ! <python> in $(toolset-target-os-requirements:G)
+- {
+- toolset.add-requirements <target-os>$(target-os):<python>$(version:E=default) ;
+- }
++# local toolset-requirements = [ toolset.requirements ] ;
++# local toolset-target-os-requirements
++# = [ property.evaluate-conditionals-in-context
++# [ $(toolset-requirements).raw ] : <target-os>$(target-os) ] ;
++# if ! <python> in $(toolset-target-os-requirements:G)
++# {
++# toolset.add-requirements <target-os>$(target-os):<python>$(version:E=default) ;
++# }
+
+ # Register the right suffix for extensions.
+ register-extension-suffix $(extension-suffix) : $(target-requirements) ;
diff --git a/harmony/boost/libressl.patch b/harmony/boost/libressl.patch
new file mode 100644
index 000000000..30c13bfcc
--- /dev/null
+++ b/harmony/boost/libressl.patch
@@ -0,0 +1,146 @@
+diff --git a/boost/asio/ssl/detail/impl/engine.ipp b/boost/asio/ssl/detail/impl/engine.ipp
+index f15f2e3..d33935f 100644
+--- a/boost/asio/ssl/detail/impl/engine.ipp
++++ b/boost/asio/ssl/detail/impl/engine.ipp
+@@ -209,7 +209,7 @@ const boost::system::error_code& engine::map_error_code(
+
+ // SSL v2 doesn't provide a protocol-level shutdown, so an eof on the
+ // underlying transport is passed through.
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
+ if (ssl_->version == SSL2_VERSION)
+ return ec;
+ #endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
+diff --git a/boost/asio/ssl/detail/impl/openssl_init.ipp b/boost/asio/ssl/detail/impl/openssl_init.ipp
+index 94b67f3..acbd926 100644
+--- a/boost/asio/ssl/detail/impl/openssl_init.ipp
++++ b/boost/asio/ssl/detail/impl/openssl_init.ipp
+@@ -40,7 +40,7 @@ public:
+ ::SSL_load_error_strings();
+ ::OpenSSL_add_all_algorithms();
+
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
+ mutexes_.resize(::CRYPTO_num_locks());
+ for (size_t i = 0; i < mutexes_.size(); ++i)
+ mutexes_[i].reset(new boost::asio::detail::mutex);
+@@ -68,7 +68,7 @@ public:
+ #if (OPENSSL_VERSION_NUMBER < 0x10000000L)
+ ::CRYPTO_set_id_callback(0);
+ #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
+ ::CRYPTO_set_locking_callback(0);
+ ::ERR_free_strings();
+ ::EVP_cleanup();
+@@ -76,7 +76,7 @@ public:
+ #endif // (OPENSSL_VERSION_NUMBER < 0x10100000L)
+ #if (OPENSSL_VERSION_NUMBER < 0x10000000L)
+ ::ERR_remove_state(0);
+-#elif (OPENSSL_VERSION_NUMBER < 0x10100000L)
++#elif (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
+ ::ERR_remove_thread_state(NULL);
+ #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
+ #if (OPENSSL_VERSION_NUMBER >= 0x10002000L) \
+@@ -117,7 +117,7 @@ private:
+ }
+ #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
+
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
+ static void openssl_locking_func(int mode, int n,
+ const char* /*file*/, int /*line*/)
+ {
+diff --git a/boost/asio/ssl/error.hpp b/boost/asio/ssl/error.hpp
+index 7f85fbd..7e07e65 100644
+--- a/boost/asio/ssl/error.hpp
++++ b/boost/asio/ssl/error.hpp
+@@ -44,7 +44,7 @@ enum stream_errors
+ #if defined(GENERATING_DOCUMENTATION)
+ /// The underlying stream closed before the ssl stream gracefully shut down.
+ stream_truncated
+-#elif (OPENSSL_VERSION_NUMBER < 0x10100000L) && !defined(OPENSSL_IS_BORINGSSL)
++#elif ((OPENSSL_VERSION_NUMBER < 0x10100000L) && !defined(OPENSSL_IS_BORINGSSL)) || defined(LIBRESSL_VERSION_NUMBER)
+ stream_truncated = ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ)
+ #else
+ stream_truncated = 1
+diff --git a/boost/asio/ssl/impl/context.ipp b/boost/asio/ssl/impl/context.ipp
+index aea2cbd..3ef8c86 100644
+--- a/boost/asio/ssl/impl/context.ipp
++++ b/boost/asio/ssl/impl/context.ipp
+@@ -130,7 +130,7 @@ context::context(context::method m)
+ case context::sslv23_server:
+ handle_ = ::SSL_CTX_new(::SSLv23_server_method());
+ break;
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
+ #if defined(SSL_TXT_TLSV1_1)
+ case context::tlsv11:
+ handle_ = ::SSL_CTX_new(::TLSv1_1_method());
+@@ -228,7 +228,7 @@ context::~context()
+ {
+ if (handle_)
+ {
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+ void* cb_userdata = handle_->default_passwd_callback_userdata;
+@@ -239,7 +239,7 @@ context::~context()
+ static_cast<detail::password_callback_base*>(
+ cb_userdata);
+ delete callback;
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, 0);
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+ handle_->default_passwd_callback_userdata = 0;
+@@ -578,7 +578,7 @@ boost::system::error_code context::use_certificate_chain(
+ bio_cleanup bio = { make_buffer_bio(chain) };
+ if (bio.p)
+ {
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+@@ -682,7 +682,7 @@ boost::system::error_code context::use_private_key(
+ {
+ ::ERR_clear_error();
+
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+@@ -749,7 +749,7 @@ boost::system::error_code context::use_rsa_private_key(
+ {
+ ::ERR_clear_error();
+
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+@@ -988,7 +988,7 @@ int context::verify_callback_function(int preverified, X509_STORE_CTX* ctx)
+ boost::system::error_code context::do_set_password_callback(
+ detail::password_callback_base* callback, boost::system::error_code& ec)
+ {
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
+ void* old_callback = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, callback);
+ #else // (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+diff --git a/boost/asio/ssl/impl/error.ipp b/boost/asio/ssl/impl/error.ipp
+index e82afba..1629794 100644
+--- a/boost/asio/ssl/impl/error.ipp
++++ b/boost/asio/ssl/impl/error.ipp
+@@ -53,7 +53,7 @@ const boost::system::error_category& get_ssl_category()
+ namespace ssl {
+ namespace error {
+
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) && !defined(OPENSSL_IS_BORINGSSL)
++#if ((OPENSSL_VERSION_NUMBER < 0x10100000L) && !defined(OPENSSL_IS_BORINGSSL)) || defined(LIBRESSL_VERSION_NUMBER)
+
+ const boost::system::error_category& get_stream_category()
+ {
diff --git a/harmony/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch b/harmony/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch
new file mode 100644
index 000000000..e4ba6ece5
--- /dev/null
+++ b/harmony/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch
@@ -0,0 +1,63 @@
+From f76c1ddd625b3d9912d9e6df2e90fcb94d08be99 Mon Sep 17 00:00:00 2001
+From: William Pitcock <nenolod@dereferenced.org>
+Date: Thu, 19 Oct 2017 17:24:40 +0000
+Subject: [PATCH] ash: add support for command_not_found_handle hook function,
+ like bash
+
+This implements support for the command_not_found_handle hook function, which is
+useful for allowing package managers to suggest packages which could provide the
+command.
+
+Unlike bash, however, we ignore exit codes from the hook function and always return
+the correct POSIX error code (EX_NOTFOUND).
+
+Signed-off-by: William Pitcock <nenolod@dereferenced.org>
+---
+ shell/ash.c | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/shell/ash.c b/shell/ash.c
+index 88e607f08..c3c4f4e93 100644
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -132,6 +132,15 @@
+ //config: you to run the specified command or builtin,
+ //config: even when there is a function with the same name.
+ //config:
++//config:config ASH_COMMAND_NOT_FOUND_HOOK
++//config: bool "command_not_found_handle hook support"
++//config: default y
++//config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
++//config: help
++//config: Enable support for the 'command_not_found_handle' hook function,
++//config: from GNU bash, which allows for alternative command not found
++//config: handling.
++//config:
+ //config:endif # ash options
+
+ //applet:IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP))
+@@ -13123,8 +13132,19 @@ find_command(char *name, struct cmdentry *entry, int act, const char *path)
+ /* We failed. If there was an entry for this command, delete it */
+ if (cmdp && updatetbl)
+ delete_cmd_entry();
+- if (act & DO_ERR)
+- ash_msg("%s: %s", name, errmsg(e, "not found"));
++ if (act & DO_ERR) {
++#ifdef CONFIG_ASH_COMMAND_NOT_FOUND_HOOK
++#define HOOKFN_NAME "command_not_found_handle"
++ char hookfn_name[] = HOOKFN_NAME;
++ struct tblentry *hookp = cmdlookup(hookfn_name, 0);
++ if (hookp != NULL && hookp->cmdtype == CMDFUNCTION) {
++ evalfun(hookp->param.func, 2, (char *[]){ hookfn_name, name }, 0);
++ entry->cmdtype = CMDUNKNOWN;
++ return;
++ } else
++#endif
++ ash_msg("%s: %s", name, errmsg(e, "not found"));
++ }
+ entry->cmdtype = CMDUNKNOWN;
+ return;
+
+--
+2.14.2
+
diff --git a/harmony/busybox/0001-ash-exec-busybox.static.patch b/harmony/busybox/0001-ash-exec-busybox.static.patch
new file mode 100644
index 000000000..fdf134960
--- /dev/null
+++ b/harmony/busybox/0001-ash-exec-busybox.static.patch
@@ -0,0 +1,25 @@
+From 134582e8dd1c85cbcf1fc047956a57fcd642e46a Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 4 Aug 2016 11:03:07 +0200
+Subject: [PATCH 01/11] ash: exec busybox.static
+
+---
+ shell/ash.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/shell/ash.c b/shell/ash.c
+index b7635a823..e613ee6bb 100644
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -7721,6 +7721,8 @@ tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) char *cmd, char **argv, char **
+ }
+ /* re-exec ourselves with the new arguments */
+ execve(bb_busybox_exec_path, argv, envp);
++ execve("/bin/busybox.static",argv,envp);
++ execve("/bin/busybox",argv,envp);
+ /* If they called chroot or otherwise made the binary no longer
+ * executable, fall through */
+ }
+--
+2.13.2
+
diff --git a/harmony/busybox/0002-app-location-for-cpio-vi-and-lspci.patch b/harmony/busybox/0002-app-location-for-cpio-vi-and-lspci.patch
new file mode 100644
index 000000000..8c8e4ee7a
--- /dev/null
+++ b/harmony/busybox/0002-app-location-for-cpio-vi-and-lspci.patch
@@ -0,0 +1,54 @@
+From 8937e2dfb3dbfa23597853e9605f930b3607fa63 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 27 Dec 2016 20:46:59 +0100
+Subject: [PATCH 02/11] app location for cpio, vi and lspci
+
+Adjust location to where alpine linux installs them
+---
+ archival/cpio.c | 2 +-
+ editors/vi.c | 2 +-
+ util-linux/lspci.c | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/archival/cpio.c b/archival/cpio.c
+index 683f0bb1f..45362b6bc 100644
+--- a/archival/cpio.c
++++ b/archival/cpio.c
+@@ -43,7 +43,7 @@
+ //config: help
+ //config: Passthrough mode. Rarely used.
+
+-//applet:IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
++//applet:IF_CPIO(APPLET(cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
+ //kbuild:lib-$(CONFIG_CPIO) += cpio.o
+
+ //usage:#define cpio_trivial_usage
+diff --git a/editors/vi.c b/editors/vi.c
+index 76d1f261b..73d0a67a9 100644
+--- a/editors/vi.c
++++ b/editors/vi.c
+@@ -163,7 +163,7 @@
+ //config: Unless you want more (or less) frequent "undo points" while typing,
+ //config: you should probably leave this unchanged.
+
+-//applet:IF_VI(APPLET(vi, BB_DIR_BIN, BB_SUID_DROP))
++//applet:IF_VI(APPLET(vi, BB_DIR_USR_BIN, BB_SUID_DROP))
+
+ //kbuild:lib-$(CONFIG_VI) += vi.o
+
+diff --git a/util-linux/lspci.c b/util-linux/lspci.c
+index 8b38a2366..f918f0972 100644
+--- a/util-linux/lspci.c
++++ b/util-linux/lspci.c
+@@ -16,7 +16,7 @@
+ //config:
+ //config: This version uses sysfs (/sys/bus/pci/devices) only.
+
+-//applet:IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP))
++//applet:IF_LSPCI(APPLET(lspci, BB_DIR_USR_SBIN, BB_SUID_DROP))
+
+ //kbuild:lib-$(CONFIG_LSPCI) += lspci.o
+
+--
+2.13.2
+
diff --git a/harmony/busybox/0003-udhcpc-set-default-discover-retries-to-5.patch b/harmony/busybox/0003-udhcpc-set-default-discover-retries-to-5.patch
new file mode 100644
index 000000000..5671ee1b0
--- /dev/null
+++ b/harmony/busybox/0003-udhcpc-set-default-discover-retries-to-5.patch
@@ -0,0 +1,35 @@
+From 18415adc1cd9993a95d100dd773daf69b8ec819e Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 4 Aug 2016 11:08:35 +0200
+Subject: [PATCH 03/11] udhcpc: set default discover retries to 5
+
+Some slower nics needs more attempts to get a lease
+---
+ networking/udhcp/dhcpc.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
+index 1a66c610e..43aac1b85 100644
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -1191,7 +1191,7 @@ static void client_background(void)
+ //usage: "\n -s,--script PROG Run PROG at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")"
+ //usage: "\n -p,--pidfile FILE Create pidfile"
+ //usage: "\n -B,--broadcast Request broadcast replies"
+-//usage: "\n -t,--retries N Send up to N discover packets (default 3)"
++//usage: "\n -t,--retries N Send up to N discover packets (default 5)"
+ //usage: "\n -T,--timeout SEC Pause between packets (default 3)"
+ //usage: "\n -A,--tryagain SEC Wait if lease is not obtained (default 20)"
+ //usage: "\n -n,--now Exit if lease is not obtained"
+@@ -1274,7 +1274,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+ llist_t *list_x = NULL;
+ int tryagain_timeout = 20;
+ int discover_timeout = 3;
+- int discover_retries = 3;
++ int discover_retries = 5;
+ uint32_t server_addr = server_addr; /* for compiler */
+ uint32_t requested_ip = 0;
+ uint32_t xid = xid; /* for compiler */
+--
+2.13.2
+
diff --git a/harmony/busybox/0004-ping-make-ping-work-without-root-privileges.patch b/harmony/busybox/0004-ping-make-ping-work-without-root-privileges.patch
new file mode 100644
index 000000000..77fa5ed76
--- /dev/null
+++ b/harmony/busybox/0004-ping-make-ping-work-without-root-privileges.patch
@@ -0,0 +1,197 @@
+From bef770d1ee4179e380dff24305d9b6d899147add Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 29 Mar 2016 18:59:22 +0200
+Subject: [PATCH 04/11] ping: make ping work without root privileges
+
+---
+ networking/ping.c | 103 +++++++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 87 insertions(+), 16 deletions(-)
+
+diff --git a/networking/ping.c b/networking/ping.c
+index 94fb007f5..26e40e1fc 100644
+--- a/networking/ping.c
++++ b/networking/ping.c
+@@ -155,6 +155,7 @@ enum {
+ pingsock = 0,
+ };
+
++static int using_dgram;
+ static void
+ #if ENABLE_PING6
+ create_icmp_socket(len_and_sockaddr *lsa)
+@@ -171,9 +172,23 @@ create_icmp_socket(void)
+ #endif
+ sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */
+ if (sock < 0) {
+- if (errno == EPERM)
+- bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
+- bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
++ if (errno != EPERM)
++ bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
++#if defined(__linux__) || defined(__APPLE__)
++ /* We don't have root privileges. Try SOCK_DGRAM instead.
++ * Linux needs net.ipv4.ping_group_range for this to work.
++ * MacOSX allows ICMP_ECHO, ICMP_TSTAMP or ICMP_MASKREQ
++ */
++#if ENABLE_PING6
++ if (lsa->u.sa.sa_family == AF_INET6)
++ sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6);
++ else
++#endif
++ sock = socket(AF_INET, SOCK_DGRAM, 1); /* 1 == ICMP */
++ if (sock < 0)
++#endif
++ bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
++ using_dgram = 1;
+ }
+
+ xmove_fd(sock, pingsock);
+@@ -226,10 +241,12 @@ static void ping4(len_and_sockaddr *lsa)
+ bb_perror_msg("recvfrom");
+ continue;
+ }
+- if (c >= 76) { /* ip + icmp */
+- struct iphdr *iphdr = (struct iphdr *) G.packet;
++ if (c >= 76 || using_dgram && (c == 64)) { /* ip + icmp */
++ if(!using_dgram) {
++ struct iphdr *iphdr = (struct iphdr *) G.packet;
+
+- pkt = (struct icmp *) (G.packet + (iphdr->ihl << 2)); /* skip ip hdr */
++ pkt = (struct icmp *) (G.packet + (iphdr->ihl << 2)); /* skip ip hdr */
++ } else pkt = (struct icmp *) G.packet;
+ if (pkt->icmp_id != G.myid)
+ continue; /* not our ping */
+ if (pkt->icmp_type == ICMP_ECHOREPLY)
+@@ -627,19 +644,21 @@ static void unpack_tail(int sz, uint32_t *tp,
+ }
+ static void unpack4(char *buf, int sz, struct sockaddr_in *from)
+ {
+- struct icmp *icmppkt;
+ struct iphdr *iphdr;
++ struct icmp *icmppkt;
+ int hlen;
+
+ /* discard if too short */
+ if (sz < (datalen + ICMP_MINLEN))
+ return;
++ if(!using_dgram) {
++ /* check IP header */
++ iphdr = (struct iphdr *) buf;
++ hlen = iphdr->ihl << 2;
++ sz -= hlen;
++ icmppkt = (struct icmp *) (buf + hlen);
++ } else icmppkt = (struct icmp *) buf;
+
+- /* check IP header */
+- iphdr = (struct iphdr *) buf;
+- hlen = iphdr->ihl << 2;
+- sz -= hlen;
+- icmppkt = (struct icmp *) (buf + hlen);
+ if (icmppkt->icmp_id != myid)
+ return; /* not our ping */
+
+@@ -651,7 +670,7 @@ static void unpack4(char *buf, int sz, struct sockaddr_in *from)
+ tp = (uint32_t *) icmppkt->icmp_data;
+ unpack_tail(sz, tp,
+ inet_ntoa(*(struct in_addr *) &from->sin_addr.s_addr),
+- recv_seq, iphdr->ttl);
++ recv_seq, using_dgram ? 42 : iphdr->ttl);
+ } else if (icmppkt->icmp_type != ICMP_ECHO) {
+ bb_error_msg("warning: got ICMP %d (%s)",
+ icmppkt->icmp_type,
+@@ -695,11 +714,31 @@ static void ping4(len_and_sockaddr *lsa)
+ int sockopt;
+
+ pingaddr.sin = lsa->u.sin;
+- if (source_lsa) {
++ if (source_lsa && !using_dgram) {
+ if (setsockopt(pingsock, IPPROTO_IP, IP_MULTICAST_IF,
+ &source_lsa->u.sa, source_lsa->len))
+ bb_error_msg_and_die("can't set multicast source interface");
+ xbind(pingsock, &source_lsa->u.sa, source_lsa->len);
++ } else if(using_dgram) {
++ struct sockaddr_in sa;
++ socklen_t sl;
++
++ sa.sin_family = AF_INET;
++ sa.sin_port = 0;
++ sa.sin_addr.s_addr = source_lsa ?
++ source_lsa->u.sin.sin_addr.s_addr : 0;
++ sl = sizeof(sa);
++
++ if (bind(pingsock, (struct sockaddr *) &sa, sl) == -1) {
++ perror("bind");
++ exit(2);
++ }
++
++ if (getsockname(pingsock, (struct sockaddr *) &sa, &sl) == -1) {
++ perror("getsockname");
++ exit(2);
++ }
++ myid = sa.sin_port;
+ }
+
+ /* enable broadcast pings */
+@@ -716,6 +755,15 @@ static void ping4(len_and_sockaddr *lsa)
+ setsockopt_int(pingsock, IPPROTO_IP, IP_MULTICAST_TTL, opt_ttl);
+ }
+
++ if(using_dgram) {
++ int hold = 65536;
++ if (setsockopt(pingsock, SOL_IP, IP_RECVTTL, (char *)&hold, sizeof(hold)))
++ perror("WARNING: setsockopt(IP_RECVTTL)");
++ if (setsockopt(pingsock, SOL_IP, IP_RETOPTS, (char *)&hold, sizeof(hold)))
++ perror("WARNING: setsockopt(IP_RETOPTS)");
++
++ }
++
+ signal(SIGINT, print_stats_and_exit);
+
+ /* start the ping's going ... */
+@@ -749,10 +797,33 @@ static void ping6(len_and_sockaddr *lsa)
+ char control_buf[CMSG_SPACE(36)];
+
+ pingaddr.sin6 = lsa->u.sin6;
+- if (source_lsa)
++ if (source_lsa && !using_dgram)
+ xbind(pingsock, &source_lsa->u.sa, source_lsa->len);
++ else if(using_dgram) {
++ struct sockaddr_in6 sa = {0};
++ socklen_t sl;
++
++ sa.sin6_family = AF_INET6;
++ sa.sin6_port = 0;
++ if(source_lsa) {
++ memcpy(&sa.sin6_addr, &source_lsa->u.sin6.sin6_addr, sizeof(struct in6_addr));
++ }
++ sl = sizeof(sa);
++
++ if (bind(pingsock, (struct sockaddr *) &sa, sl) == -1) {
++ perror("bind");
++ exit(2);
++ }
++
++ if (getsockname(pingsock, (struct sockaddr *) &sa, &sl) == -1) {
++ perror("getsockname");
++ exit(2);
++ }
++ myid = sa.sin6_port;
++ }
+
+ #ifdef ICMP6_FILTER
++ if(!using_dgram)
+ {
+ struct icmp6_filter filt;
+ if (!(option_mask32 & OPT_VERBOSE)) {
+@@ -880,7 +951,7 @@ static int common_ping_main(int opt, char **argv)
+ if (opt & OPT_p)
+ G.pattern = xstrtou_range(str_p, 16, 0, 255);
+
+- myid = (uint16_t) getpid();
++ if (!using_dgram) myid = (uint16_t) getpid();
+ hostname = argv[optind];
+ #if ENABLE_PING6
+ {
+--
+2.13.2
+
diff --git a/harmony/busybox/0005-fbsplash-support-console-switching.patch b/harmony/busybox/0005-fbsplash-support-console-switching.patch
new file mode 100644
index 000000000..792c2d6c8
--- /dev/null
+++ b/harmony/busybox/0005-fbsplash-support-console-switching.patch
@@ -0,0 +1,187 @@
+From a8f7d33f47cc28732cd04573ae1fb6a1ca6e9617 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Mon, 24 Sep 2012 07:58:29 +0300
+Subject: [PATCH 05/11] fbsplash: support console switching
+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>
+---
+ miscutils/fbsplash.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 76 insertions(+), 7 deletions(-)
+
+diff --git a/miscutils/fbsplash.c b/miscutils/fbsplash.c
+index fc6c9b953..ec5947314 100644
+--- a/miscutils/fbsplash.c
++++ b/miscutils/fbsplash.c
+@@ -47,7 +47,7 @@
+ //kbuild:lib-$(CONFIG_FBSPLASH) += fbsplash.o
+
+ //usage:#define fbsplash_trivial_usage
+-//usage: "-s IMGFILE [-c] [-d DEV] [-i INIFILE] [-f CMD]"
++//usage: "-s IMGFILE [-c] [-d DEV] [-i INIFILE] [-f CMD] [-T tty]"
+ //usage:#define fbsplash_full_usage "\n\n"
+ //usage: " -s Image"
+ //usage: "\n -c Hide cursor"
+@@ -57,11 +57,17 @@
+ //usage: "\n BAR_R,BAR_G,BAR_B"
+ //usage: "\n -f Control pipe (else exit after drawing image)"
+ //usage: "\n commands: 'NN' (% for progress bar) or 'exit'"
++//usage: "\n -T Switch to TTY to hide all console messages"
+
+ #include "libbb.h"
+ #include "common_bufsiz.h"
+ #include <linux/fb.h>
+
++#include <sys/vt.h>
++#include <sys/ioctl.h>
++#include <linux/tiocl.h>
++#include <linux/kd.h>
++
+ /* If you want logging messages on /tmp/fbsplash.log... */
+ #define DEBUG 0
+
+@@ -73,6 +79,8 @@ struct globals {
+ unsigned char *addr; // pointer to framebuffer memory
+ unsigned ns[7]; // n-parameters
+ const char *image_filename;
++ int silent_tty, fd_tty_s;
++ bool do_not_draw;
+ struct fb_var_screeninfo scr_var;
+ struct fb_fix_screeninfo scr_fix;
+ unsigned bytes_per_pixel;
+@@ -483,6 +491,11 @@ static void init(const char *cfg_filename)
+ config_close(parser);
+ }
+
++static void sighandler(int sig)
++{
++ ioctl(G.fd_tty_s, VT_RELDISP, sig == SIGUSR1 ? 1 : 2);
++ G.do_not_draw = (sig != SIGUSR2);
++}
+
+ int fbsplash_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int fbsplash_main(int argc UNUSED_PARAM, char **argv)
+@@ -492,6 +505,9 @@ int fbsplash_main(int argc UNUSED_PARAM, char **argv)
+ char *num_buf;
+ unsigned num;
+ bool bCursorOff;
++ int fd_tty0, active_vt;
++ struct vt_stat vtstat;
++ struct vt_mode vt;
+
+ INIT_G();
+
+@@ -499,8 +515,10 @@ int fbsplash_main(int argc UNUSED_PARAM, char **argv)
+ fb_device = "/dev/fb0";
+ cfg_filename = NULL;
+ fifo_filename = NULL;
+- bCursorOff = 1 & getopt32(argv, "cs:d:i:f:",
+- &G.image_filename, &fb_device, &cfg_filename, &fifo_filename);
++ opt_complementary = "T+"; // numeric params
++ bCursorOff = 1 & getopt32(argv, "cs:d:i:f:T:",
++ &G.image_filename, &fb_device, &cfg_filename, &fifo_filename,
++ &G.silent_tty);
+
+ // parse configuration file
+ if (cfg_filename)
+@@ -510,11 +528,43 @@ int fbsplash_main(int argc UNUSED_PARAM, char **argv)
+ if (!G.image_filename)
+ bb_show_usage();
+
++ fd_tty0 = get_console_fd_or_die();
++ if (G.silent_tty) {
++ char buf[16];
++
++ /* Initialize TTY */
++ bb_signals((1LL << SIGUSR1) | (1LL << SIGUSR2), sighandler);
++ snprintf(buf, sizeof(buf), "/dev/tty%d", G.silent_tty);
++ G.fd_tty_s = xopen(buf, O_RDWR | O_NOCTTY);
++
++ /* Activate TTY */
++ xioctl(fd_tty0, VT_GETSTATE, &vtstat);
++ active_vt = vtstat.v_active;
++ console_make_active(fd_tty0, G.silent_tty);
++
++ /* Get notifications on console changes */
++ vt.mode = VT_PROCESS;
++ vt.waitv = 0;
++ vt.relsig = SIGUSR1;
++ vt.acqsig = SIGUSR2;
++ ioctl(G.fd_tty_s, VT_SETMODE, &vt);
++
++ /* Redirect all kernel messages to tty1 so that they don't get
++ * printed over our silent splash image. And clear it. */
++ buf[0] = TIOCL_SETKMSGREDIRECT;
++ buf[1] = 1;
++ ioctl(G.fd_tty_s, TIOCLINUX, buf);
++ full_write(G.fd_tty_s, "\e[H\e[2J" "\e[?17;0c", 7+8);
++ ioctl(G.fd_tty_s, KDSETMODE, KD_GRAPHICS);
++ } else {
++ G.fd_tty_s = STDOUT_FILENO;
++ }
++
+ fb_open(fb_device);
+
+ if (fifo_filename && bCursorOff) {
+ // hide cursor (BEFORE any fb ops)
+- full_write(STDOUT_FILENO, "\033[?25l", 6);
++ full_write(G.fd_tty_s, "\033[?25l", 6);
+ }
+
+ fb_drawimage();
+@@ -522,6 +572,7 @@ int fbsplash_main(int argc UNUSED_PARAM, char **argv)
+ if (!fifo_filename)
+ return EXIT_SUCCESS;
+
++ sig_block(SIGUSR1);
+ fp = xfopen_stdin(fifo_filename);
+ if (fp != stdin) {
+ // For named pipes, we want to support this:
+@@ -537,8 +588,9 @@ int fbsplash_main(int argc UNUSED_PARAM, char **argv)
+ // and become an additional writer :)
+ open(fifo_filename, O_WRONLY); // errors are ignored
+ }
+-
+ fb_drawprogressbar(0);
++ sig_unblock(SIGUSR1);
++
+ // Block on read, waiting for some input.
+ // Use of <stdio.h> style I/O allows to correctly
+ // handle a case when we have many buffered lines
+@@ -553,12 +605,29 @@ int fbsplash_main(int argc UNUSED_PARAM, char **argv)
+ #if DEBUG
+ DEBUG_MESSAGE(itoa(num));
+ #endif
+- fb_drawprogressbar(num);
++ sig_block(SIGUSR1);
++ if (!G.do_not_draw)
++ fb_drawprogressbar(num);
++ sig_unblock(SIGUSR1);
+ }
+ free(num_buf);
+ }
+
+- if (bCursorOff) // restore cursor
++ if (G.silent_tty) {
++ usleep(100*1000);
++
++ ioctl(G.fd_tty_s, VT_RELDISP, 1);
++ ioctl(G.fd_tty_s, KDSETMODE, KD_TEXT);
++ vt.mode = VT_AUTO;
++ vt.waitv = 0;
++ ioctl(G.fd_tty_s, VT_SETMODE, &vt);
++ close(G.fd_tty_s);
++
++ xioctl(fd_tty0, VT_GETSTATE, &vtstat);
++ if (vtstat.v_active == G.silent_tty)
++ console_make_active(fd_tty0, active_vt);
++ ioctl(fd_tty0, VT_DISALLOCATE, (void *)(ptrdiff_t)G.silent_tty);
++ } else if (bCursorOff) // restore cursor
+ full_write(STDOUT_FILENO, "\033[?25h", 6);
+
+ return EXIT_SUCCESS;
+--
+2.13.2
+
diff --git a/harmony/busybox/0006-fbsplash-support-image-and-bar-alignment-and-positio.patch b/harmony/busybox/0006-fbsplash-support-image-and-bar-alignment-and-positio.patch
new file mode 100644
index 000000000..65c423178
--- /dev/null
+++ b/harmony/busybox/0006-fbsplash-support-image-and-bar-alignment-and-positio.patch
@@ -0,0 +1,185 @@
+From 64e2d2e495f82ef7ccc952bfa4216d1ff8ab3481 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Fri, 21 Nov 2014 16:06:34 +0200
+Subject: [PATCH 06/11] fbsplash: support image and bar alignment and
+ positioning
+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>
+---
+ miscutils/fbsplash.c | 91 +++++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 76 insertions(+), 15 deletions(-)
+
+diff --git a/miscutils/fbsplash.c b/miscutils/fbsplash.c
+index ec5947314..34bbf81f5 100644
+--- a/miscutils/fbsplash.c
++++ b/miscutils/fbsplash.c
+@@ -53,6 +53,7 @@
+ //usage: "\n -c Hide cursor"
+ //usage: "\n -d Framebuffer device (default /dev/fb0)"
+ //usage: "\n -i Config file (var=value):"
++//usage: "\n IMAGE_ALIGN"
+ //usage: "\n BAR_LEFT,BAR_TOP,BAR_WIDTH,BAR_HEIGHT"
+ //usage: "\n BAR_R,BAR_G,BAR_B"
+ //usage: "\n -f Control pipe (else exit after drawing image)"
+@@ -71,13 +72,38 @@
+ /* If you want logging messages on /tmp/fbsplash.log... */
+ #define DEBUG 0
+
++enum {
++ image_align,
++
++ image_posx,
++ image_posy,
++ bar_width,
++ bar_height,
++ bar_posx,
++ bar_posy,
++ bar_colr,
++ bar_colg,
++ bar_colb,
++
++ debug
++};
++
++#define nimage_align ns[image_align]
++#define nbar_width ns[bar_width]
++#define nbar_height ns[bar_height]
++#define nbar_posx ns[bar_posx]
++#define nbar_posy ns[bar_posy]
++#define nbar_colr ns[bar_colr]
++#define nbar_colg ns[bar_colg]
++#define nbar_colb ns[bar_colb]
++
+ struct globals {
+ #if DEBUG
+ bool bdebug_messages; // enable/disable logging
+ FILE *logfile_fd; // log file
+ #endif
+ unsigned char *addr; // pointer to framebuffer memory
+- unsigned ns[7]; // n-parameters
++ unsigned ns[debug+1]; // n-parameters
+ const char *image_filename;
+ int silent_tty, fd_tty_s;
+ bool do_not_draw;
+@@ -94,14 +120,6 @@ struct globals {
+ SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
+ } while (0)
+
+-#define nbar_width ns[0] // progress bar width
+-#define nbar_height ns[1] // progress bar height
+-#define nbar_posx ns[2] // progress bar horizontal position
+-#define nbar_posy ns[3] // progress bar vertical position
+-#define nbar_colr ns[4] // progress bar color red component
+-#define nbar_colg ns[5] // progress bar color green component
+-#define nbar_colb ns[6] // progress bar color blue component
+-
+ #if DEBUG
+ #define DEBUG_MESSAGE(strMessage, args...) \
+ if (G.bdebug_messages) { \
+@@ -382,7 +400,7 @@ static void fb_drawimage(void)
+ FILE *theme_file;
+ char *read_ptr;
+ unsigned char *pixline;
+- unsigned i, j, width, height, line_size;
++ int i, j, width, height, line_size, xoffs, yoffs, xstart;
+
+ if (LONE_DASH(G.image_filename)) {
+ theme_file = stdin;
+@@ -432,18 +450,46 @@ static void fb_drawimage(void)
+ line_size = width*3;
+ pixline = xmalloc(line_size);
+
++#if 0
+ if (width > G.scr_var.xres)
+ width = G.scr_var.xres;
+ if (height > G.scr_var.yres)
+ height = G.scr_var.yres;
+- for (j = 0; j < height; j++) {
++#endif
++
++ xoffs = yoffs = 0;
++ switch (G.nimage_align % 3) {
++ case 1: xoffs = (G.scr_var.xres - width) / 2; break;
++ case 2: xoffs = G.scr_var.xres - width; break;
++ }
++ xstart = 0;
++ if (xoffs < 0) {
++ xstart = -xoffs;
++ width -= xstart;
++ xoffs = 0;
++ }
++ xoffs *= G.bytes_per_pixel;
++ if (width > G.scr_var.xres)
++ width = G.scr_var.xres;
++
++ switch (G.nimage_align / 3) {
++ case 1: yoffs = (G.scr_var.yres - height) / 2; break;
++ case 2: yoffs = G.scr_var.yres - height; break;
++ }
++
++ for (j = 0; j < height && yoffs < G.scr_var.yres; j++, yoffs++) {
+ unsigned char *pixel;
+ unsigned char *src;
+
+ if (fread(pixline, 1, line_size, theme_file) != line_size)
+ bb_error_msg_and_die("bad PPM file '%s'", G.image_filename);
++
++ if (yoffs < 0)
++ continue;
++
+ pixel = pixline;
+- src = G.addr + j * G.scr_fix.line_length;
++ src = G.addr + yoffs * G.scr_fix.line_length + xoffs;
++
+ for (i = 0; i < width; i++) {
+ unsigned thispix = fb_pixel_value(pixel[0], pixel[1], pixel[2]);
+ fb_write_pixel(src, thispix);
+@@ -462,9 +508,17 @@ static void fb_drawimage(void)
+ */
+ static void init(const char *cfg_filename)
+ {
++ static const char align_names[] ALIGN1 =
++ "LT\0" "CT\0" "RT\0"
++ "LM\0" "CM\0" "RM\0"
++ "LB\0" "CB\0" "RB\0";
+ static const char param_names[] ALIGN1 =
++ "IMAGE_ALIGN\0"
++
++ "IMAGE_X\0" "IMAGE_Y\0"
+ "BAR_WIDTH\0" "BAR_HEIGHT\0"
+ "BAR_LEFT\0" "BAR_TOP\0"
++
+ "BAR_R\0" "BAR_G\0" "BAR_B\0"
+ #if DEBUG
+ "DEBUG\0"
+@@ -474,14 +528,21 @@ static void init(const char *cfg_filename)
+ parser_t *parser = config_open2(cfg_filename, xfopen_stdin);
+ while (config_read(parser, token, 2, 2, "#=",
+ (PARSE_NORMAL | PARSE_MIN_DIE) & ~(PARSE_TRIM | PARSE_COLLAPSE))) {
+- unsigned val = xatoi_positive(token[1]);
++ unsigned val;
+ int i = index_in_strings(param_names, token[0]);
++
+ if (i < 0)
+ bb_error_msg_and_die("syntax error: %s", token[0]);
+- if (i >= 0 && i < 7)
++
++ if (i <= image_align)
++ val = index_in_strings(align_names, token[1]);
++ else
++ val = xatoi_positive(token[1]);
++
++ if (i < debug)
+ G.ns[i] = val;
+ #if DEBUG
+- if (i == 7) {
++ if (i == debug) {
+ G.bdebug_messages = val;
+ if (G.bdebug_messages)
+ G.logfile_fd = xfopen_for_write("/tmp/fbsplash.log");
+--
+2.13.2
+
diff --git a/harmony/busybox/0007-depmod-support-generating-kmod-binary-index-files.patch b/harmony/busybox/0007-depmod-support-generating-kmod-binary-index-files.patch
new file mode 100644
index 000000000..8b89902de
--- /dev/null
+++ b/harmony/busybox/0007-depmod-support-generating-kmod-binary-index-files.patch
@@ -0,0 +1,516 @@
+From ab4df89615fc2c5726b4ce55546e4dc098211a0b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Sun, 25 Oct 2015 22:21:41 +0200
+Subject: [PATCH 07/11] depmod: support generating kmod binary index files
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This allows to use busybox depmod, and run daemons
+using libkmod (or even kmod modprobe if needed).
+
+About +1500 bytes when enabled. This patch merges some
+depmod code paths, so when this is disabled it shrinks
+the code size a little bit.
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+---
+ modutils/Config.src | 9 ++
+ modutils/depmod.c | 281 ++++++++++++++++++++++++++++++++++++++++++----------
+ modutils/modprobe.c | 15 ---
+ modutils/modutils.c | 31 ++++++
+ modutils/modutils.h | 16 +++
+ 5 files changed, 286 insertions(+), 66 deletions(-)
+
+diff --git a/modutils/Config.src b/modutils/Config.src
+index 9b76c83d2..9e3b9b71e 100644
+--- a/modutils/Config.src
++++ b/modutils/Config.src
+@@ -152,6 +152,15 @@ config FEATURE_MODUTILS_ALIAS
+
+ Say Y if unsure.
+
++config FEATURE_MODUTILS_BIN
++ bool "Support for the kmod .bin file format"
++ default n
++ depends on DEPMOD && !MODPROBE_SMALL
++ help
++ Generate kmod compatible binary index files for .dep, .alias,
++ .symbols and .builtin files. Allows mixing use of busybox
++ modutils and kmod (binaries and library).
++
+ config FEATURE_MODUTILS_SYMBOLS
+ bool "Support module.symbols file"
+ default y
+diff --git a/modutils/depmod.c b/modutils/depmod.c
+index b7965ebd2..73ba7d0f4 100644
+--- a/modutils/depmod.c
++++ b/modutils/depmod.c
+@@ -2,7 +2,7 @@
+ /*
+ * depmod - generate modules.dep
+ * Copyright (c) 2008 Bernhard Reutner-Fischer
+- * Copyrihgt (c) 2008 Timo Teras <timo.teras@iki.fi>
++ * Copyrihgt (c) 2008-2015 Timo Teras <timo.teras@iki.fi>
+ * Copyright (c) 2008 Vladimir Dronnikov
+ *
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+@@ -26,6 +26,24 @@
+ #include "modutils.h"
+ #include <sys/utsname.h> /* uname() */
+
++#define INDEX_MINCHAR 32
++#define INDEX_MAXCHAR 128
++
++typedef struct index_node {
++ char *prefix;
++ llist_t *values;
++ struct index_node *children[INDEX_MAXCHAR-INDEX_MINCHAR];
++} index_node;
++
++struct globals {
++ module_db db;
++ index_node *root_node;
++} FIX_ALIASING;
++#define G (*ptr_to_globals)
++#define INIT_G() do { \
++ SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
++} while (0)
++
+ /*
+ * Theory of operation:
+ * - iterate over all modules and record their full path
+@@ -53,18 +71,12 @@ static int FAST_FUNC parse_module(const char *fname, struct stat *sb UNUSED_PARA
+
+ for (ptr = image; ptr < image + len - 10; ptr++) {
+ if (is_prefixed_with(ptr, "depends=")) {
+- char *u;
+-
+ ptr += 8;
+- for (u = ptr; *u; u++)
+- if (*u == '-')
+- *u = '_';
+- ptr += string_to_llist(ptr, &e->deps, ",");
++ string_to_llist(replace_underscores(ptr), &e->deps, ",");
+ } else if (ENABLE_FEATURE_MODUTILS_ALIAS
+ && is_prefixed_with(ptr, "alias=")
+ ) {
+- llist_add_to(&e->aliases, xstrdup(ptr + 6));
+- ptr += strlen(ptr);
++ llist_add_to(&e->aliases, replace_underscores(xstrdup(ptr + 6)));
+ } else if (ENABLE_FEATURE_MODUTILS_SYMBOLS
+ && is_prefixed_with(ptr, "__ksymtab_")
+ ) {
+@@ -74,9 +86,10 @@ static int FAST_FUNC parse_module(const char *fname, struct stat *sb UNUSED_PARA
+ ) {
+ continue;
+ }
+- llist_add_to(&e->symbols, xstrdup(ptr));
+- ptr += strlen(ptr);
+- }
++ llist_add_to(&e->symbols, xasprintf("symbol:%s", ptr));
++ } else
++ continue;
++ ptr += strlen(ptr);
+ }
+ free(image);
+
+@@ -108,12 +121,6 @@ static void order_dep_list(module_db *modules, module_entry *start, llist_t *add
+ }
+ }
+
+-static void xfreopen_write(const char *file, FILE *f)
+-{
+- if (freopen(file, "w", f) == NULL)
+- bb_perror_msg_and_die("can't open '%s'", file);
+-}
+-
+ //usage:#if !ENABLE_MODPROBE_SMALL
+ //usage:#define depmod_trivial_usage "[-n] [-b BASE] [VERSION] [MODFILES]..."
+ //usage:#define depmod_full_usage "\n\n"
+@@ -167,6 +174,169 @@ enum {
+ OPT_C = (1 << 9), /* -C,--config etc_modules_conf: ignored */
+ };
+
++/* Support for the mod binary index generation */
++
++static void index_init(const char *filename)
++{
++ if (ENABLE_FEATURE_MODUTILS_BIN) {
++ index_node *n;
++
++ n = xzalloc(sizeof(index_node));
++ n->prefix = xstrdup("");
++ G.root_node = n;
++ }
++
++ if (filename && !(option_mask32 & OPT_n)) {
++ if (freopen(filename, "w", stdout) == NULL)
++ bb_perror_msg_and_die("can't open '%s'", filename);
++ }
++}
++
++static void index_add(const char *key, char *value, const char *prefix)
++{
++ if (prefix && *prefix)
++ printf("%s%s %s\n", prefix, key, value);
++ else if (prefix)
++ printf("%s\n", value);
++
++ if (ENABLE_FEATURE_MODUTILS_BIN) {
++ index_node *cur = G.root_node, *n;
++ unsigned i = 0, j, ch;
++
++ while (1) {
++ /* Ensure node->prefix is a prefix of &str[i].
++ * If it is not already, then we must split node. */
++ for (j = 0; cur->prefix[j]; j++) {
++ ch = cur->prefix[j];
++ if (ch != key[i+j]) {
++ /* New child is copy of node with prefix[j+1..N] */
++ n = xzalloc(sizeof(index_node));
++ n->prefix = xstrdup(&cur->prefix[j+1]);
++ n->values = cur->values;
++ memcpy(n->children, cur->children, sizeof(n->children));
++
++ /* Parent has prefix[0..j], child at prefix[j] */
++ cur->prefix[j] = '\0';
++ cur->values = NULL;
++ memset(cur->children, 0, sizeof(cur->children));
++ cur->children[ch-INDEX_MINCHAR] = n;
++ break;
++ }
++ }
++ i += j;
++
++ ch = key[i];
++ if (ch == 0)
++ break;
++
++ if (ch < INDEX_MINCHAR || ch >= INDEX_MAXCHAR)
++ bb_error_msg_and_die("bad module name");
++
++ ch -= INDEX_MINCHAR;
++ if (!cur->children[ch]) {
++ n = xzalloc(sizeof(index_node));
++ cur->children[ch] = n;
++ n->prefix = xstrdup(&key[i+1]);
++ cur = n;
++ break;
++ }
++
++ /* Descend into child node and continue */
++ cur = cur->children[ch];
++ i++;
++ }
++
++ llist_add_to(&cur->values, value);
++ }
++}
++
++static uint32_t index_write_node(FILE *out, index_node *n, void (*freeit)(void *data))
++{
++ uint32_t child_offs[INDEX_MAXCHAR-INDEX_MINCHAR];
++ uint32_t offset;
++ uint8_t first = 255, last = 0;
++ unsigned i;
++
++ for (i = 0; i < INDEX_MAXCHAR-INDEX_MINCHAR; i++) {
++ child_offs[i] = 0;
++ if (!n->children[i])
++ continue;
++ child_offs[i] = index_write_node(out, n->children[i], freeit);
++ if (first > INDEX_MAXCHAR)
++ first = i;
++ last = i;
++ }
++
++ offset = ftell(out);
++
++ if (n->prefix[0]) {
++ fputs(n->prefix, out);
++ fputc('\0', out);
++ offset |= INDEX_NODE_PREFIX;
++ }
++
++ if (first < INDEX_MAXCHAR) {
++ fputc(first + INDEX_MINCHAR, out);
++ fputc(last + INDEX_MINCHAR, out);
++ fwrite(child_offs + first, sizeof(uint32_t), last - first + 1, out);
++ offset |= INDEX_NODE_CHILDS;
++ }
++
++ if (n->values) {
++ const llist_t *v;
++ unsigned int cnt;
++ uint32_t u;
++
++ n->values = llist_rev(n->values);
++ for (v = n->values, cnt = 0; v != NULL; v = v->link, cnt++);
++ u = htonl(cnt);
++ fwrite(&u, sizeof(u), 1, out);
++ for (v = n->values, cnt = 0; v != NULL; v = v->link, cnt++) {
++ u = htonl(cnt);
++ fwrite(&u, sizeof(u), 1, out);
++ fputs(v->data, out);
++ fputc('\0', out);
++ }
++ offset |= INDEX_NODE_VALUES;
++ }
++
++ llist_free(n->values, freeit);
++ free(n->prefix);
++ free(n);
++
++ return htonl(offset);
++}
++
++static void index_dump(const char *filename, int deps_file)
++{
++ if (ENABLE_FEATURE_MODUTILS_BIN) {
++ FILE *out;
++ uint32_t header[3] = {
++ htonl(INDEX_MAGIC),
++ htonl(INDEX_VERSION),
++ };
++
++ if (option_mask32 & OPT_n)
++ filename = "/dev/null";
++ else
++ filename = xasprintf("tmp.%s.bin", filename);
++
++ out = xfopen_for_write(filename);
++ fwrite(header, sizeof(uint32_t), 3, out);
++ header[2] = index_write_node(out, G.root_node, deps_file ? free : 0);
++ rewind(out);
++ G.root_node = NULL;
++ fwrite(header, sizeof(uint32_t), 3, out);
++ if (fclose(out)) {
++ remove(filename);
++ bb_error_msg_and_die(bb_msg_write_error);
++ }
++ /* .bin files are mmap'ed; not renaming it may crash
++ * long standing daemon using libkmod */
++ rename_or_warn(filename, filename + 4);
++ }
++}
++
+ int depmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int depmod_main(int argc UNUSED_PARAM, char **argv)
+ {
+@@ -178,6 +348,8 @@ int depmod_main(int argc UNUSED_PARAM, char **argv)
+ unsigned i;
+ int tmp;
+
++ INIT_G();
++
+ getopt32(argv, "aAb:eF:nruqC:", &moddir_base, NULL, NULL);
+ argv += optind;
+
+@@ -210,53 +382,60 @@ int depmod_main(int argc UNUSED_PARAM, char **argv)
+ }
+
+ /* Generate dependency and alias files */
+- if (!(option_mask32 & OPT_n))
+- xfreopen_write(CONFIG_DEFAULT_DEPMOD_FILE, stdout);
+-
++ index_init(CONFIG_DEFAULT_DEPMOD_FILE);
+ moddb_foreach_module(&modules, m, i) {
+- printf("%s:", m->name);
+-
++ char *buf = xasprintf("%s:", m->name);
+ order_dep_list(&modules, m, m->deps);
++
+ while (m->dnext != m) {
+ dep = m->dnext;
+- printf(" %s", dep->name);
+-
++ buf = gather_options_str(buf, dep->name);
+ /* unlink current entry */
+ dep->dnext->dprev = dep->dprev;
+ dep->dprev->dnext = dep->dnext;
+ dep->dnext = dep->dprev = dep;
+ }
+- bb_putchar('\n');
++ index_add(m->modname, buf, "");
+ }
+-
+-#if ENABLE_FEATURE_MODUTILS_ALIAS
+- if (!(option_mask32 & OPT_n))
+- xfreopen_write("modules.alias", stdout);
+- moddb_foreach_module(&modules, m, i) {
+- while (m->aliases) {
+- /*
+- * Last word used to be a basename
+- * (filename with path and .ko.* stripped)
+- * at the time of module-init-tools 3.4.
+- * kmod v.12 uses module name, i.e., s/-/_/g.
+- */
+- printf("alias %s %s\n",
+- (char*)llist_pop(&m->aliases),
+- m->modname);
++ index_dump(CONFIG_DEFAULT_DEPMOD_FILE, 1);
++
++ if (ENABLE_FEATURE_MODUTILS_ALIAS) {
++ index_init("modules.alias");
++ moddb_foreach_module(&modules, m, i) {
++ while (m->aliases) {
++ /*
++ * Last word used to be a basename
++ * (filename with path and .ko.* stripped)
++ * at the time of module-init-tools 3.4.
++ * kmod v.12 uses module name, i.e., s/-/_/g.
++ */
++ index_add((char*)llist_pop(&m->aliases), m->modname, "alias ");
++ }
+ }
++ index_dump("modules.alias", 0);
+ }
+-#endif
+-#if ENABLE_FEATURE_MODUTILS_SYMBOLS
+- if (!(option_mask32 & OPT_n))
+- xfreopen_write("modules.symbols", stdout);
+- moddb_foreach_module(&modules, m, i) {
+- while (m->symbols) {
+- printf("alias symbol:%s %s\n",
+- (char*)llist_pop(&m->symbols),
+- m->modname);
++ if (ENABLE_FEATURE_MODUTILS_SYMBOLS) {
++ index_init("modules.symbols");
++ moddb_foreach_module(&modules, m, i) {
++ while (m->symbols) {
++ index_add((char*)llist_pop(&m->symbols), m->modname, "alias ");
++ }
++ }
++ index_dump("modules.symbols", 0);
++ }
++ if (ENABLE_FEATURE_MODUTILS_BIN) {
++ char line[PATH_MAX], modname[MODULE_NAME_LEN];
++ FILE *in;
++
++ index_init(NULL);
++ in = xfopen_for_read("modules.builtin");
++ while (fgets(line, sizeof(line), in) != NULL) {
++ filename2modname(line, modname);
++ index_add(modname, (char *) "", 0);
+ }
++ fclose(in);
++ index_dump("modules.builtin", 0);
+ }
+-#endif
+
+ if (ENABLE_FEATURE_CLEAN_UP)
+ moddb_free(&modules);
+diff --git a/modutils/modprobe.c b/modutils/modprobe.c
+index 51ede9204..d1fcc0b7f 100644
+--- a/modutils/modprobe.c
++++ b/modutils/modprobe.c
+@@ -192,21 +192,6 @@ struct globals {
+
+ static int read_config(const char *path);
+
+-static char *gather_options_str(char *opts, const char *append)
+-{
+- /* Speed-optimized. We call gather_options_str many times. */
+- if (append) {
+- if (opts == NULL) {
+- opts = xstrdup(append);
+- } else {
+- int optlen = strlen(opts);
+- opts = xrealloc(opts, optlen + strlen(append) + 2);
+- sprintf(opts + optlen, " %s", append);
+- }
+- }
+- return opts;
+-}
+-
+ static struct module_entry *get_or_add_modentry(const char *module)
+ {
+ return moddb_get_or_create(&G.db, module);
+diff --git a/modutils/modutils.c b/modutils/modutils.c
+index 6f7cd9721..257089af4 100644
+--- a/modutils/modutils.c
++++ b/modutils/modutils.c
+@@ -66,6 +66,21 @@ void FAST_FUNC moddb_free(module_db *db)
+ }
+ }
+
++char * FAST_FUNC gather_options_str(char *opts, const char *append)
++{
++ /* Speed-optimized. We call gather_options_str many times. */
++ if (append) {
++ if (opts == NULL) {
++ opts = xstrdup(append);
++ } else {
++ int optlen = strlen(opts);
++ opts = xrealloc(opts, optlen + strlen(append) + 2);
++ sprintf(opts + optlen, " %s", append);
++ }
++ }
++ return opts;
++}
++
+ void FAST_FUNC replace(char *s, char what, char with)
+ {
+ while (*s) {
+@@ -75,6 +90,22 @@ void FAST_FUNC replace(char *s, char what, char with)
+ }
+ }
+
++char* FAST_FUNC replace_underscores(char *s)
++{
++ int i;
++ for (i = 0; s[i]; i++) {
++ switch (s[i]) {
++ case '-':
++ s[i] = '_';
++ break;
++ case '[':
++ i += strcspn(&s[i], "]");
++ break;
++ }
++ }
++ return s;
++}
++
+ int FAST_FUNC string_to_llist(char *string, llist_t **llist, const char *delim)
+ {
+ char *tok;
+diff --git a/modutils/modutils.h b/modutils/modutils.h
+index 4a702e97c..73e816028 100644
+--- a/modutils/modutils.h
++++ b/modutils/modutils.h
+@@ -18,6 +18,20 @@ PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
+ #define MODULE_NAME_LEN 256
+ #define MODULE_HASH_SIZE 256
+
++/* .bin index format definitions */
++#define INDEX_MAGIC 0xB007F457
++#define INDEX_VERSION_MAJOR 0x0002
++#define INDEX_VERSION_MINOR 0x0001
++#define INDEX_VERSION ((INDEX_VERSION_MAJOR<<16)|INDEX_VERSION_MINOR)
++
++enum node_offset {
++ INDEX_NODE_FLAGS = 0xF0000000, /* Flags in high nibble */
++ INDEX_NODE_PREFIX = 0x80000000,
++ INDEX_NODE_VALUES = 0x40000000,
++ INDEX_NODE_CHILDS = 0x20000000,
++ INDEX_NODE_MASK = 0x0FFFFFFF, /* Offset value */
++};
++
+ typedef struct module_entry {
+ struct module_entry *next;
+ char *name, *modname;
+@@ -47,7 +61,9 @@ module_entry *moddb_get(module_db *db, const char *s) FAST_FUNC;
+ module_entry *moddb_get_or_create(module_db *db, const char *s) FAST_FUNC;
+ void moddb_free(module_db *db) FAST_FUNC;
+
++char *gather_options_str(char *opts, const char *append) FAST_FUNC;
+ void replace(char *s, char what, char with) FAST_FUNC;
++char *replace_underscores(char *s) FAST_FUNC;
+ int string_to_llist(char *string, llist_t **llist, const char *delim) FAST_FUNC;
+ char *filename2modname(const char *filename, char *modname) FAST_FUNC;
+ #if ENABLE_FEATURE_CMDLINE_MODULE_OPTIONS
+--
+2.13.2
+
diff --git a/harmony/busybox/0008-diff-add-support-for-no-dereference.patch b/harmony/busybox/0008-diff-add-support-for-no-dereference.patch
new file mode 100644
index 000000000..95063a863
--- /dev/null
+++ b/harmony/busybox/0008-diff-add-support-for-no-dereference.patch
@@ -0,0 +1,63 @@
+From d70be9891718ffb94ea9946cc3540b1b62eced77 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Fri, 25 Jul 2014 15:28:33 +0200
+Subject: [PATCH 08/11] diff: add support for --no-dereference
+
+Add flag for not following symlinks when recursing
+
+function old new delta
+.rodata 7934 7967 +33
+diff_longopts 253 270 +17
+packed_usage 1704 1720 +16
+diff_main 1665 1662 -3
+------------------------------------------------------------------------------
+(add/remove: 0/0 grow/shrink: 3/1 up/down: 66/-3) Total: 63 bytes
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ editors/diff.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/editors/diff.c b/editors/diff.c
+index 7687518f3..f07cafb19 100644
+--- a/editors/diff.c
++++ b/editors/diff.c
+@@ -115,6 +115,9 @@
+ //usage: "\n -N Treat absent files as empty"
+ //usage: "\n -q Output only whether files differ"
+ //usage: "\n -r Recurse"
++//usage: IF_LONG_OPTS(
++//usage: "\n --no-dereference Don't follow symlinks"
++//usage: )
+ //usage: "\n -S Start with FILE when comparing directories"
+ //usage: "\n -T Make tabs line up by prefixing a tab when necessary"
+ //usage: "\n -s Report when two files are the same"
+@@ -156,6 +159,7 @@ enum { /* Commandline flags */
+ FLAG_p, /* not implemented */
+ FLAG_B,
+ FLAG_E, /* not implemented */
++ FLAG_no_deref,
+ };
+ #define FLAG(x) (1 << FLAG_##x)
+
+@@ -869,7 +873,8 @@ static void diffdir(char *p[2], const char *s_start)
+ * Using list.len to specify its length,
+ * add_to_dirlist will remove it. */
+ list[i].len = strlen(p[i]);
+- recursive_action(p[i], ACTION_RECURSE | ACTION_FOLLOWLINKS,
++ recursive_action(p[i], ACTION_RECURSE |
++ ((option_mask32 & FLAG(no_deref)) ? 0 : ACTION_FOLLOWLINKS),
+ add_to_dirlist, skip_dir, &list[i], 0);
+ /* Sort dl alphabetically.
+ * GNU diff does this ignoring any number of trailing dots.
+@@ -966,6 +971,7 @@ static const char diff_longopts[] ALIGN1 =
+ "report-identical-files\0" No_argument "s"
+ "starting-file\0" Required_argument "S"
+ "minimal\0" No_argument "d"
++ "no-dereference\0" No_argument "\xff"
+ ;
+ #endif
+
+--
+2.13.2
+
diff --git a/harmony/busybox/0009-sysklogd-add-Z-option-to-adjust-message-timezones.patch b/harmony/busybox/0009-sysklogd-add-Z-option-to-adjust-message-timezones.patch
new file mode 100644
index 000000000..2624675c4
--- /dev/null
+++ b/harmony/busybox/0009-sysklogd-add-Z-option-to-adjust-message-timezones.patch
@@ -0,0 +1,104 @@
+From 1cb2e911c47f1b798ee610deabbea21ba6fb6961 Mon Sep 17 00:00:00 2001
+From: Shiz <hi@shiz.me>
+Date: Mon, 8 May 2017 23:09:13 +0200
+Subject: [PATCH 09/11] sysklogd: add -Z option to adjust message timezones
+
+Some syslog() implementations like musl's[1] always send timestamps in UTC.
+This change adds a new option to syslogd, -Z, to assume incoming timestamps
+are always UTC and adjust them to the local timezone (of the syslogd) before
+logging.
+
+[1]: http://www.openwall.com/lists/musl/2014/01/29/1
+
+Signed-off-by: Shiz <hi@shiz.me>
+---
+ sysklogd/syslogd.c | 23 +++++++++++++++++++----
+ 1 file changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
+index d64ff278f..159336ed7 100644
+--- a/sysklogd/syslogd.c
++++ b/sysklogd/syslogd.c
+@@ -122,6 +122,7 @@
+ //usage: "(this version of syslogd ignores /etc/syslog.conf)\n"
+ //usage: )
+ //usage: "\n -n Run in foreground"
++//usage: "\n -Z Adjust incoming UTC times to local time"
+ //usage: IF_FEATURE_REMOTE_LOG(
+ //usage: "\n -R HOST[:PORT] Log to HOST:PORT (default PORT:514)"
+ //usage: "\n -L Log locally and via network (default is network only if -R)"
+@@ -233,6 +234,8 @@ typedef struct logRule_t {
+ /*int markInterval;*/ \
+ /* level of messages to be logged */ \
+ int logLevel; \
++ /* whether to adjust message timezone */\
++ int adjustTimezone; \
+ IF_FEATURE_ROTATE_LOGFILE( \
+ /* max size of file before rotation */ \
+ unsigned logFileSize; \
+@@ -316,6 +319,7 @@ enum {
+ OPTBIT_outfile, // -O
+ OPTBIT_loglevel, // -l
+ OPTBIT_small, // -S
++ OPTBIT_adjusttz, // -Z
+ IF_FEATURE_ROTATE_LOGFILE(OPTBIT_filesize ,) // -s
+ IF_FEATURE_ROTATE_LOGFILE(OPTBIT_rotatecnt ,) // -b
+ IF_FEATURE_REMOTE_LOG( OPTBIT_remotelog ,) // -R
+@@ -330,6 +334,7 @@ enum {
+ OPT_outfile = 1 << OPTBIT_outfile ,
+ OPT_loglevel = 1 << OPTBIT_loglevel,
+ OPT_small = 1 << OPTBIT_small ,
++ OPT_adjusttz = 1 << OPTBIT_adjusttz,
+ OPT_filesize = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_filesize )) + 0,
+ OPT_rotatecnt = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_rotatecnt )) + 0,
+ OPT_remotelog = IF_FEATURE_REMOTE_LOG( (1 << OPTBIT_remotelog )) + 0,
+@@ -339,7 +344,7 @@ enum {
+ OPT_cfg = IF_FEATURE_SYSLOGD_CFG( (1 << OPTBIT_cfg )) + 0,
+ OPT_kmsg = IF_FEATURE_KMSG_SYSLOG( (1 << OPTBIT_kmsg )) + 0,
+ };
+-#define OPTION_STR "m:nO:l:S" \
++#define OPTION_STR "m:nO:l:SZ" \
+ IF_FEATURE_ROTATE_LOGFILE("s:" ) \
+ IF_FEATURE_ROTATE_LOGFILE("b:" ) \
+ IF_FEATURE_REMOTE_LOG( "R:*") \
+@@ -815,17 +820,23 @@ static void timestamp_and_log(int pri, char *msg, int len)
+ {
+ char *timestamp;
+ time_t now;
++ struct tm nowtm = { .tm_isdst = 0 };
+
+ /* Jan 18 00:11:22 msg... */
+ /* 01234567890123456 */
+ if (len < 16 || msg[3] != ' ' || msg[6] != ' '
+ || msg[9] != ':' || msg[12] != ':' || msg[15] != ' '
+ ) {
+- time(&now);
++ now = time(NULL);
+ timestamp = ctime(&now) + 4; /* skip day of week */
+ } else {
+- now = 0;
+- timestamp = msg;
++ if (G.adjustTimezone && strptime(msg, "%b %e %T", &nowtm)) {
++ now = mktime(&nowtm) - timezone;
++ timestamp = ctime(&now) + 4; /* skip day of week */
++ } else {
++ now = 0;
++ timestamp = msg;
++ }
+ msg += 16;
+ }
+ timestamp[15] = '\0';
+@@ -1130,6 +1141,10 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv)
+ if (opts & OPT_loglevel) // -l
+ G.logLevel = xatou_range(opt_l, 1, 8);
+ //if (opts & OPT_small) // -S
++ if (opts & OPT_adjusttz) { // -Z
++ G.adjustTimezone = 1;
++ tzset();
++ }
+ #if ENABLE_FEATURE_ROTATE_LOGFILE
+ if (opts & OPT_filesize) // -s
+ G.logFileSize = xatou_range(opt_s, 0, INT_MAX/1024) * 1024;
+--
+2.13.2
+
diff --git a/harmony/busybox/0010-udhcpc-Don-t-background-if-n-is-given.patch b/harmony/busybox/0010-udhcpc-Don-t-background-if-n-is-given.patch
new file mode 100644
index 000000000..75fe62dfd
--- /dev/null
+++ b/harmony/busybox/0010-udhcpc-Don-t-background-if-n-is-given.patch
@@ -0,0 +1,45 @@
+From a663349a9ae6d62bfad1243a8781fb254065b480 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 6 Jul 2017 13:39:15 +0200
+Subject: [PATCH 10/11] udhcpc: Don't background if -n is given
+
+we need add -b to our udhcpc options to prevent boot forever if there are no
+dhcp server. We also need a way for users to disable this behavior by making
+it possible to set -n option at runtime.
+---
+ networking/udhcp/dhcpc.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
+index 43aac1b85..bf53dd559 100644
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -1504,19 +1504,19 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+ }
+ leasefail:
+ udhcp_run_script(NULL, "leasefail");
++ if (opt & OPT_n) { /* abort if no lease */
++ bb_error_msg("no lease, failing");
++ retval = 1;
++ goto ret;
++ }
+ #if BB_MMU /* -b is not supported on NOMMU */
+ if (opt & OPT_b) { /* background if no lease */
+ bb_error_msg("no lease, forking to background");
+ client_background();
+ /* do not background again! */
+ opt = ((opt & ~OPT_b) | OPT_f);
+- } else
+-#endif
+- if (opt & OPT_n) { /* abort if no lease */
+- bb_error_msg("no lease, failing");
+- retval = 1;
+- goto ret;
+ }
++#endif
+ /* wait before trying again */
+ timeout = tryagain_timeout;
+ packet_num = 0;
+--
+2.13.2
+
diff --git a/harmony/busybox/0011-testsuite-fix-cpio-tests.patch b/harmony/busybox/0011-testsuite-fix-cpio-tests.patch
new file mode 100644
index 000000000..a6eb803de
--- /dev/null
+++ b/harmony/busybox/0011-testsuite-fix-cpio-tests.patch
@@ -0,0 +1,82 @@
+From 9a522cf388e321b47f9462bbbd7726323095f8db Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 6 Jul 2017 13:41:32 +0200
+Subject: [PATCH 11/11] testsuite: fix cpio tests
+
+The cpio tests don't search for the right output line correctly,
+using a hardcoded tail offset. Instead, grep for the file entry
+just added.
+
+The reverse-hunk patch tests seem to get the output order wrong,
+and the tests pass when this is corrected.
+---
+ testsuite/cpio.tests | 6 +++---
+ testsuite/patch.tests | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/testsuite/cpio.tests b/testsuite/cpio.tests
+index 88ec086b6..40f72c363 100755
+--- a/testsuite/cpio.tests
++++ b/testsuite/cpio.tests
+@@ -129,7 +129,7 @@ SKIP=
+
+ optional FEATURE_CPIO_O
+ testing "cpio uses by default uid/gid" \
+-"echo $0 | cpio -o -H newc | cpio -tv 2>&1 | tail -n +2 | awk ' { print \$2 } '; echo \$?" \
++"echo $0 | cpio -o -H newc | cpio -tv 2>&1 | grep -F $(basename $0) | awk ' { print \$2 } '; echo \$?" \
+ "\
+ $user/$group
+ 0
+@@ -138,7 +138,7 @@ SKIP=
+
+ optional FEATURE_CPIO_O
+ testing "cpio -R with create" \
+-"echo $0 | cpio -o -H newc -R 1234:5678 | cpio -tv 2>&1 | tail -n +2 | awk ' { print \$2 } '; echo \$?" \
++"echo $0 | cpio -o -H newc -R 1234:5678 | cpio -tv 2>&1 | grep -F $(basename $0) | awk ' { print \$2 } '; echo \$?" \
+ "\
+ 1234/5678
+ 0
+@@ -147,7 +147,7 @@ SKIP=
+
+ optional FEATURE_CPIO_O
+ testing "cpio -R with extract" \
+-"echo $0 | cpio -o -H newc | cpio -tv -R 8765:4321 2>&1 | tail -n +2 | awk ' { print \$2 } '; echo \$?" \
++"echo $0 | cpio -o -H newc | cpio -tv -R 8765:4321 2>&1 | grep -F $(basename $0) | awk ' { print \$2 } '; echo \$?" \
+ "\
+ 8765/4321
+ 0
+diff --git a/testsuite/patch.tests b/testsuite/patch.tests
+index 39205242c..1d48e90be 100755
+--- a/testsuite/patch.tests
++++ b/testsuite/patch.tests
+@@ -75,12 +75,12 @@ zxc
+ testing "patch detects already applied hunk" \
+ 'patch 2>&1; echo $?; cat input' \
+ "\
++patching file input
+ Possibly reversed hunk 1 at 4
+ Hunk 1 FAILED 1/1.
+ abc
+ +def
+ 123
+-patching file input
+ 1
+ abc
+ def
+@@ -103,12 +103,12 @@ def
+ testing "patch detects already applied hunk at the EOF" \
+ 'patch 2>&1; echo $?; cat input' \
+ "\
++patching file input
+ Possibly reversed hunk 1 at 4
+ Hunk 1 FAILED 1/1.
+ abc
+ 123
+ +456
+-patching file input
+ 1
+ abc
+ 123
+--
+2.13.2
+
diff --git a/harmony/busybox/0012-microcom-segfault.patch b/harmony/busybox/0012-microcom-segfault.patch
new file mode 100644
index 000000000..4789079b3
--- /dev/null
+++ b/harmony/busybox/0012-microcom-segfault.patch
@@ -0,0 +1,31 @@
+From fd8a0116a29ea4014fac7fbdba2636fc7b51ffc2 Mon Sep 17 00:00:00 2001
+From: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
+Date: Wed, 2 Aug 2017 23:36:08 +0200
+Subject: [PATCH] miscutils/microcom: Fixed segfault
+
+microcom did not check if required parameter TTY is present. Thus,
+bb_basename() was called with a NULL pointer if TTY was missing.
+This commit adds the missing check.
+---
+ miscutils/microcom.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/miscutils/microcom.c b/miscutils/microcom.c
+index 14b9f3baf..38f6425c1 100644
+--- a/miscutils/microcom.c
++++ b/miscutils/microcom.c
+@@ -78,6 +78,11 @@ int microcom_main(int argc UNUSED_PARAM, char **argv)
+ // argc -= optind;
+ argv += optind;
+
++ if (*argv == NULL){
++ bb_show_usage();
++ return EXIT_FAILURE;
++ }
++
+ // try to create lock file in /var/lock
+ device_lock_file = (char *)bb_basename(argv[0]);
+ device_lock_file = xasprintf("/var/lock/LCK..%s", device_lock_file);
+--
+2.13.3
+
diff --git a/harmony/busybox/APKBUILD b/harmony/busybox/APKBUILD
new file mode 100644
index 000000000..a97c301f4
--- /dev/null
+++ b/harmony/busybox/APKBUILD
@@ -0,0 +1,194 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Oliver Smith <ollieparanoid@bitmessage.ch>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=busybox
+pkgver=1.27.2
+pkgrel=3
+pkgdesc="Size optimized toolbox of many common UNIX utilities"
+url=http://busybox.net
+arch="all"
+license="GPL2"
+makedepends_build=""
+makedepends_host="linux-headers"
+makedepends="$makedepends_build $makedepends_host"
+checkdepends="zip"
+provides="/bin/sh /sbin/init"
+install="$pkgname.post-install $pkgname.post-upgrade
+ $pkgname-extras.post-install $pkgname-extras.pre-deinstall"
+subpackages="$pkgname-static $pkgname-suid $pkgname-extras"
+options="suid !check"
+triggers="busybox.trigger=/bin:/usr/bin:/sbin:/usr/sbin:/lib/modules/*"
+source="http://busybox.net/downloads/$pkgname-$pkgver.tar.bz2
+ 0001-ash-add-support-for-command_not_found_handle-hook-fu.patch
+
+ 0001-ash-exec-busybox.static.patch
+ 0002-app-location-for-cpio-vi-and-lspci.patch
+ 0003-udhcpc-set-default-discover-retries-to-5.patch
+ 0004-ping-make-ping-work-without-root-privileges.patch
+ 0005-fbsplash-support-console-switching.patch
+ 0006-fbsplash-support-image-and-bar-alignment-and-positio.patch
+ 0007-depmod-support-generating-kmod-binary-index-files.patch
+ 0008-diff-add-support-for-no-dereference.patch
+ 0009-sysklogd-add-Z-option-to-adjust-message-timezones.patch
+ 0010-udhcpc-Don-t-background-if-n-is-given.patch
+ 0011-testsuite-fix-cpio-tests.patch
+ 0012-microcom-segfault.patch
+
+ top-buffer-overflow.patch
+
+ acpid.logrotate
+ busyboxconfig
+ busyboxconfig-extras
+ bbsuid.c
+ dad.if-up
+ nologin.c
+ "
+builddir="$srcdir"/$pkgname-$pkgver
+
+_staticdir="$srcdir"/build-static
+_dyndir="$srcdir"/build-dynamic
+_dyndir_extras="$srcdir"/build-dynamic-extras
+_config="$srcdir"/busyboxconfig
+_config_extras="$srcdir"/busyboxconfig-extras
+
+prepare() {
+ default_prepare
+
+ cd "$builddir"
+ mkdir -p "$_staticdir" "$_dyndir" "$_dyndir_extras"
+ cp "$srcdir"/nologin.c loginutils/
+}
+
+build() {
+ # build bbsuid
+ msg "Building bbsuid"
+ ${CC:-${CROSS_COMPILE}gcc} ${CPPFLAGS} ${CFLAGS} \
+ ${LDFLAGS} "$srcdir"/bbsuid.c -o "$_dyndir"/bbsuid
+
+ # build dynamic
+ cd "$_dyndir"
+ msg "Building dynamic busybox"
+ cp "$_config" .config
+ [ "$CLIBC" = musl ] && sed -i \
+ -e "s/CONFIG_EXTRA_COMPAT=y/CONFIG_EXTRA_COMPAT=n/" \
+ .config
+ make -C "$builddir" O="$PWD" silentoldconfig
+ make
+
+ # build dynamic (extras)
+ cd "$_dyndir_extras"
+ msg "Building dynamic busybox-extras"
+ cp "$_config_extras" .config
+ [ "$CLIBC" = musl ] && sed -i \
+ -e "s/CONFIG_EXTRA_COMPAT=y/CONFIG_EXTRA_COMPAT=n/" \
+ .config
+ make -C "$builddir" O="$PWD" silentoldconfig
+ make
+
+ # build static
+ cd "$_staticdir"
+ msg "Building static busybox"
+ sed -e "s/.*CONFIG_PIE.*/\# CONFIG_PIE is not set/" \
+ -e "s/.*CONFIG_STATIC.*/CONFIG_STATIC=y/" \
+ "$_config" > .config
+ # musl does not support GNU regex
+ [ "$CLIBC" = musl ] && sed -i \
+ -e "s/CONFIG_EXTRA_COMPAT=y/CONFIG_EXTRA_COMPAT=n/" \
+ .config
+ make -C "$builddir" O="$PWD" silentoldconfig
+ make
+ mv busybox busybox.static
+}
+
+check() {
+ cd "$_dyndir"
+ SKIP_KNOWN_BUGS=1 make -C "$builddir" O="$PWD" V=1 check
+
+ cd "$_dyndir_extras"
+ SKIP_KNOWN_BUGS=1 make -C "$builddir" O="$PWD" V=1 check
+}
+
+package() {
+ cd "$_dyndir"
+ mkdir -p "$pkgdir"/usr/sbin "$pkgdir"/usr/bin "$pkgdir"/tmp \
+ "$pkgdir"/var/cache/misc "$pkgdir"/bin "$pkgdir"/sbin
+ chmod 1777 "$pkgdir"/tmp
+ install -m755 busybox "$pkgdir"/bin/busybox || return 1
+ # we need /bin/sh to be able to execute post-install
+ ln -s /bin/busybox "$pkgdir"/bin/sh
+
+ #ifupdown needs those dirs to be present
+ mkdir -p \
+ "$pkgdir"/etc/network/if-down.d \
+ "$pkgdir"/etc/network/if-post-down.d \
+ "$pkgdir"/etc/network/if-post-up.d \
+ "$pkgdir"/etc/network/if-pre-down.d \
+ "$pkgdir"/etc/network/if-pre-up.d \
+ "$pkgdir"/etc/network/if-up.d
+ install -m775 "$srcdir"/dad.if-up "$pkgdir"/etc/network/if-up.d/dad
+
+ install -Dm644 "$srcdir"/acpid.logrotate \
+ "$pkgdir/etc/logrotate.d/acpid"
+
+ mkdir -p "$pkgdir"/var/lib/udhcpd
+ install -Dm644 "$builddir"/examples/udhcp/udhcpd.conf \
+ "$pkgdir"/etc/udhcpd.conf
+ cat >"$pkgdir"/etc/securetty <<EOF
+console
+tty1
+tty2
+tty3
+tty4
+tty5
+tty6
+tty7
+tty8
+tty9
+tty10
+tty11
+EOF
+}
+
+extras() {
+ pkgdesc="Additional binaries of Busybox"
+ depends="${pkgname}"
+ install -Dm755 "$_dyndir_extras"/busybox "$subpkgdir"/bin/busybox-extras
+}
+
+suid() {
+ pkgdesc="suid binaries of Busybox"
+ depends="${pkgname}"
+
+ cd "$_dyndir"
+ mkdir -p "$subpkgdir"/bin
+ install -m4111 bbsuid "$subpkgdir"/bin/bbsuid
+}
+
+static() {
+ pkgdesc="Statically linked Busybox"
+ mkdir -p "$subpkgdir"/bin
+ install -m755 "$_staticdir"/busybox.static \
+ "$subpkgdir"/bin/busybox.static
+}
+
+sha512sums="d99e86b652562ebe1a5d50e1ba3877a1d1612997c17cb8d8e4212da181211a9b741a881cb051f14cb3ee8aea40226cf2cde80a076baed265d3bc0a4e96a5031c busybox-1.27.2.tar.bz2
+dc08288c8e9e29d36be7174d58f3bee2d0508465977fb40d39807aa0b03149f7814f8cfed113d0a7589ef49890beb1805ef00f0d37b563447fe875e3cff08d1c 0001-ash-add-support-for-command_not_found_handle-hook-fu.patch
+1930775839354a63c30970f0d52d00cfd3a8f6b9f48d6de45ea7d2478d080bde7193c1c2cce026dc7337d9ecf0b65f5ff1dd4351c1eb195e6f0c0c5126f10511 0001-ash-exec-busybox.static.patch
+a756aa89c4602cd091df0052e2e3d7b45a359fbfe953b70aa3029e3eeb8e5d1772cbf1525bb62df6ce6547f1e5605617195ddae336e1ffe41f5c58d524af6ba6 0002-app-location-for-cpio-vi-and-lspci.patch
+fc17ce9b12726e3449518692bf0d4906c36f091534706b5b91c910866bd8cd50d8f7d4b449d54eeed24ee656012a6ef04612bf092874e4b83b0723f852fdce0e 0003-udhcpc-set-default-discover-retries-to-5.patch
+dc0b660b60ef3028a4cc86f712e7f6d08ad7c00d27056f9978a2a103434f45edc7385d2c48eca5ee83efab8fc81735674bf1c40e78fb07a1b5d07ca9da37811a 0004-ping-make-ping-work-without-root-privileges.patch
+63838512679586eb6d83e7b7d3b1e318bb693b91dfb9675a48480e6623e03472b1aa7f86fb7e2ab9e8d6db7a9609b2bcf1c3c1de64fc7d73b65b4794cab87cbf 0005-fbsplash-support-console-switching.patch
+1afe261da507ca13869923033a4adbb3c22e512136cc4b771a2d14d0c25d8de6514cec1dd0363b0684410f0e6a274c3250c1ca8a8a839111f3ed16f800b1d403 0006-fbsplash-support-image-and-bar-alignment-and-positio.patch
+16804d38000bf4395ed2657c19ddf0a1414214db8d2e43541034d5a6db29f74c53c6d8fd28c4c865c7e87fa4a9b914d414e5a00430a261aeaa69ec86bf865780 0007-depmod-support-generating-kmod-binary-index-files.patch
+baac796f8aa96fbeab19f96eea7787ace5737b182f49e02f1b1e911d0a927ae14f3c334daad4241858617dc79607541b9ce66b367d0379b2cb32f67a1e9efc5b 0008-diff-add-support-for-no-dereference.patch
+d1c375184f806f7550bac5c82ab5471bdb8085d845172c973724b22af05ab3759b3ce982e088b4c45815ade56b9adfb7a677d0c180e077545ac7ec003c8aa7c4 0009-sysklogd-add-Z-option-to-adjust-message-timezones.patch
+9b5143d0be615b1604d82007628d59a62721f1e61a63cca7a4ffa5e60fa8da102bfc21fa20cc35c2f5a0a24bc8013598f8eff5888f9d0f3bcfa796343b5f5a91 0010-udhcpc-Don-t-background-if-n-is-given.patch
+f4e00eb13fda752df13f300a7ed9b1320ca9f573c4309247f292c8710464d7be8740148f42e4aff16312335eadabce5a629dce4af58334b9199faf2fd658e4f9 0011-testsuite-fix-cpio-tests.patch
+a09a64b3bce8048c58a68dcd2dd9e63c911009c06195d6bb4e5aecfb5700e479c25b34635c60899127975fae32275ad51846ee75f840d612e00668ce9aba8322 0012-microcom-segfault.patch
+524e858b52cb31fb8d24e8c7f18606fff349aeab6a14da9cca3902641f6127980daed73c53586c6e8b41eecda06cdb29c40ff1dde2dc82a318c2649680458921 top-buffer-overflow.patch
+a9b1403c844c51934637215307dd9e2adb9458921047acff0d86dcf229b6e0027f4b2c6cdaa25a58407aad9d098fb5685d58eb5ff8d2aa3de4912cdea21fe54c acpid.logrotate
+02102f0764ffbec86e97ccab99b3a1e55ffa5b25aa2cdc1fe270d5b575610bdb50568574c7cbd05aba91b13151f84f536b44320c180051cbd77cf258e4fc89a4 busyboxconfig
+7759d1611ce72f7aa9e4afbd48f410806b3bd59701fe8a570675898c504c0e15f85bacbc1578f87345197844ee6175117d348acc4fe29a742b7ac96b84fe7386 busyboxconfig-extras
+e84087a453f8c9814951c9ad496cce19f8280b80a8ab6a1c8e21385f1facb17e987adc8d1d72c7cb463c04eb0cadd2bd6fb9b6f6c0067ddd21eeacf91ca42f32 bbsuid.c
+a1127c8a384294135e11500fde7ead33b73d24b11c21911b08447a4c4ef71d7a9965d6466f60f2da64e3b877213b0a3e924a5add3c5333ee3ecde8c2a91c5e02 dad.if-up
+4e7c291a70e879b74c0fc07c54a73ef50537d8be68fee6b2d409425c07afd2d67f9b6afcd8c33a7971014913cc5de85e45079681c9e77200c6cc2f34acfba6d2 nologin.c"
diff --git a/harmony/busybox/acpid.logrotate b/harmony/busybox/acpid.logrotate
new file mode 100644
index 000000000..a37763540
--- /dev/null
+++ b/harmony/busybox/acpid.logrotate
@@ -0,0 +1,8 @@
+/var/log/acpid.log {
+ missingok
+ notifempty
+ sharedscripts
+ postrotate
+ /etc/init.d/acpid --ifstarted restart || true
+ endscript
+}
diff --git a/harmony/busybox/bbsuid.c b/harmony/busybox/bbsuid.c
new file mode 100644
index 000000000..8be2671b1
--- /dev/null
+++ b/harmony/busybox/bbsuid.c
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2008 Natanael Copa <natanael.copa@gmail.com>
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation. See http://www.gnu.org/ for details.
+ *
+ */
+
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <libgen.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define BBSUID_PATH "/bin/bbsuid"
+
+const static char * applets[] = {
+ "/bin/mount",
+ "/bin/umount",
+ "/bin/su",
+ "/usr/bin/crontab",
+ "/usr/bin/passwd",
+ "/usr/bin/traceroute",
+ "/usr/bin/traceroute6",
+ "/usr/bin/vlock",
+ NULL
+};
+
+
+static const char *applet_from_path(const char *str)
+{
+ const char *p = strrchr(str, '/');
+ if (p == NULL)
+ p = str;
+ else
+ p++;
+ return p;
+}
+
+static int is_valid_applet(const char *str)
+{
+ int i;
+ for (i = 0; applets[i] != NULL; i++) {
+ const char *a = applet_from_path(applets[i]);
+ if (strcmp(applet_from_path(str), a) == 0)
+ return 1;
+ }
+ return 0;
+}
+
+int exec_busybox(const char *app, int argc, char **argv)
+{
+ char **newargv = malloc((argc + 2) * sizeof(char *));
+ int i;
+ newargv[0] = "/bin/busybox";
+ newargv[1] = (char *)app;
+ for (i = 1; i < argc; i++)
+ newargv[i+1] = argv[i];
+ newargv[argc+1] = NULL;
+ execv(newargv[0], newargv);
+ perror(newargv[0]);
+ free(newargv);
+ return 1;
+}
+
+static int install_links(void)
+{
+ int i, r = 0;
+ /* we don't want others than root to install the symlinks */
+ if (getuid() != 0)
+ errx(1, "Only root can install symlinks");
+
+ for (i = 0; applets[i] != NULL; i++) {
+ const char *a = applets[i];
+ struct stat st;
+ if (lstat(a, &st) == 0 && S_ISLNK(st.st_mode))
+ unlink(a);
+ if (symlink(BBSUID_PATH, a) < 0)
+ r++;
+ }
+
+ return r;
+}
+
+int main(int argc, char **argv)
+{
+ const char *app = applet_from_path(argv[0]);
+
+ if (strcmp(app, "bbsuid") == 0) {
+ if (argc == 2 && strcmp(argv[1], "--install") == 0)
+ return install_links();
+ errx(1, "Use --install to install symlinks");
+ }
+
+ if (is_valid_applet(app))
+ return exec_busybox(app, argc, argv);
+
+ errx(1, "%s is not a valid applet", app);
+ return 1;
+}
+
diff --git a/harmony/busybox/busybox-extras.post-install b/harmony/busybox/busybox-extras.post-install
new file mode 100644
index 000000000..a0327a691
--- /dev/null
+++ b/harmony/busybox/busybox-extras.post-install
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Create all symlinks
+exec /bin/busybox-extras --install -s
diff --git a/harmony/busybox/busybox-extras.pre-deinstall b/harmony/busybox/busybox-extras.pre-deinstall
new file mode 100644
index 000000000..15461302c
--- /dev/null
+++ b/harmony/busybox/busybox-extras.pre-deinstall
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Remove all symlinks to busybox-extras
+cd /
+for link in $(busybox-extras --list --full); do
+ if [ -L "$link" ] && [ "$(readlink $link)" = "/bin/busybox-extras" ]; then
+ rm "$link"
+ fi
+done
diff --git a/harmony/busybox/busybox.post-install b/harmony/busybox/busybox.post-install
new file mode 100644
index 000000000..a986b2f76
--- /dev/null
+++ b/harmony/busybox/busybox.post-install
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# We need the symlinks early
+exec /bin/busybox --install -s
diff --git a/harmony/busybox/busybox.post-upgrade b/harmony/busybox/busybox.post-upgrade
new file mode 100644
index 000000000..291ed7a6d
--- /dev/null
+++ b/harmony/busybox/busybox.post-upgrade
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# remove links that has been relocated
+for link in /bin/install /bin/ip /bin/vi /usr/bin/lspci; do
+ if [ -L "$link" ] && [ "$(readlink $link)" = "/bin/busybox" ]; then
+ rm "$link"
+ fi
+done
+for link in /bin/ping /bin/ping6; do
+ if [ -L "$link" ] && [ "$(readlink $link)" = "/bin/bbsuid" ]; then
+ rm "$link"
+ fi
+done
+
+# remove links of programs moved to busybox-extras
+for link in /usr/bin/telnet /usr/sbin/httpd /usr/bin/ftpget /usr/bin/ftpput \
+ /usr/sbin/ftpd /usr/bin/tftp /usr/sbin/fakeidentd /usr/sbin/dnsd \
+ /usr/sbin/inetd /usr/sbin/udhcpd; do
+ if [ -L "$link" ] && [ "$(readlink $link)" = "/bin/busybox" ]; then
+ rm "$link"
+ echo "NOTE: $link has been moved to the package 'busybox-extras'"
+ fi
+done
+
+# We need the symlinks early
+exec /bin/busybox --install -s
diff --git a/harmony/busybox/busybox.trigger b/harmony/busybox/busybox.trigger
new file mode 100644
index 000000000..e531a45b8
--- /dev/null
+++ b/harmony/busybox/busybox.trigger
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+do_bb_install=
+
+for i in "$@"; do
+ case "$i" in
+ /lib/modules/*)
+ if [ -d "$i" ]; then
+ /bin/busybox depmod ${i#/lib/modules/}
+ fi
+ ;;
+ *) do_bb_install=yes;;
+ esac
+done
+
+if [ -n "$do_bb_install" ]; then
+ [ -e /bin/bbsuid ] && /bin/bbsuid --install
+ [ -e /bin/busybox-extras ] && /bin/busybox-extras --install -s
+ /bin/busybox --install -s
+fi
diff --git a/harmony/busybox/busyboxconfig b/harmony/busybox/busyboxconfig
new file mode 100644
index 000000000..979646071
--- /dev/null
+++ b/harmony/busybox/busyboxconfig
@@ -0,0 +1,1138 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.27.2
+# Fri Oct 27 21:22:08 2017
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+CONFIG_DESKTOP=y
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEDORA_COMPAT is not set
+# CONFIG_INCLUDE_SUSv2 is not set
+# CONFIG_USE_PORTABLE_CODE is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_BUSYBOX=y
+CONFIG_FEATURE_INSTALLER=y
+# CONFIG_INSTALL_NO_USR is not set
+# CONFIG_PAM is not set
+CONFIG_LONG_OPTS=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+# CONFIG_FEATURE_UTMP is not set
+# CONFIG_FEATURE_WTMP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_PID_FILE_PATH="/var/run"
+CONFIG_FEATURE_SUID=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/bin/busybox"
+CONFIG_FEATURE_SYSLOG=y
+# CONFIG_FEATURE_HAVE_RPC is not set
+CONFIG_PLATFORM_LINUX=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+CONFIG_PIE=y
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_SYSROOT=""
+CONFIG_EXTRA_CFLAGS=""
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+
+#
+# Installation Options ("make install" behavior)
+#
+# CONFIG_INSTALL_APPLET_SYMLINKS is not set
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+CONFIG_INSTALL_APPLET_DONT=y
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="/home/ncopa/aports/main/busybox/pkg/busybox"
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_DEBUG_SANITIZE is not set
+# CONFIG_UNIT_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Busybox Library Tuning
+#
+# CONFIG_FEATURE_USE_BSS_TAIL is not set
+CONFIG_FEATURE_RTMINMAX=y
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SMALL=0
+CONFIG_SHA3_SMALL=0
+CONFIG_FEATURE_FAST_TOP=y
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=8192
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
+CONFIG_FEATURE_REVERSE_SEARCH=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+CONFIG_FEATURE_USERNAME_COMPLETION=y
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_EDITING_ASK_TERMINAL=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_UNICODE_SUPPORT=y
+CONFIG_UNICODE_USING_LOCALE=y
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=63
+CONFIG_LAST_SUPPORTED_WCHAR=1114111
+CONFIG_UNICODE_COMBINING_WCHARS=y
+CONFIG_UNICODE_WIDE_WCHARS=y
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+CONFIG_UNICODE_PRESERVE_BROKEN=y
+CONFIG_FEATURE_NON_POSIX_CP=y
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+CONFIG_FEATURE_USE_SENDFILE=y
+CONFIG_FEATURE_COPYBUF_KB=16
+CONFIG_FEATURE_SKIP_ROOTFS=y
+CONFIG_MONOTONIC_SYSCALL=y
+# CONFIG_IOCTL_HEX2STR_ERROR is not set
+CONFIG_FEATURE_HWIB=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_FEATURE_SEAMLESS_XZ=y
+CONFIG_FEATURE_SEAMLESS_LZMA=y
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+# CONFIG_AR is not set
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+# CONFIG_FEATURE_AR_CREATE is not set
+# CONFIG_UNCOMPRESS is not set
+CONFIG_GUNZIP=y
+CONFIG_ZCAT=y
+CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
+CONFIG_BUNZIP2=y
+CONFIG_BZCAT=y
+CONFIG_UNLZMA=y
+CONFIG_LZCAT=y
+CONFIG_LZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNXZ=y
+CONFIG_XZCAT=y
+# CONFIG_XZ is not set
+CONFIG_BZIP2=y
+CONFIG_FEATURE_BZIP2_DECOMPRESS=y
+CONFIG_CPIO=y
+CONFIG_FEATURE_CPIO_O=y
+CONFIG_FEATURE_CPIO_P=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+CONFIG_GZIP=y
+# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
+CONFIG_GZIP_FAST=2
+CONFIG_FEATURE_GZIP_LEVELS=y
+CONFIG_FEATURE_GZIP_DECOMPRESS=y
+CONFIG_LZOP=y
+CONFIG_UNLZOP=y
+CONFIG_LZOPCAT=y
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM is not set
+# CONFIG_RPM2CPIO is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+# CONFIG_FEATURE_TAR_TO_COMMAND is not set
+CONFIG_FEATURE_TAR_UNAME_GNAME=y
+CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
+# CONFIG_FEATURE_TAR_SELINUX is not set
+CONFIG_UNZIP=y
+CONFIG_FEATURE_UNZIP_CDF=y
+CONFIG_FEATURE_UNZIP_BZIP2=y
+CONFIG_FEATURE_UNZIP_LZMA=y
+CONFIG_FEATURE_UNZIP_XZ=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAT=y
+CONFIG_FEATURE_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_FEATURE_CP_LONG_OPTIONS=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+# CONFIG_FEATURE_DATE_NANO is not set
+CONFIG_FEATURE_DATE_COMPAT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_FEATURE_DD_STATUS=y
+CONFIG_DF=y
+CONFIG_FEATURE_DF_FANCY=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
+CONFIG_EXPAND=y
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+CONFIG_UNEXPAND=y
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FACTOR=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_FSYNC=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_GROUPS=y
+CONFIG_INSTALL=y
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+CONFIG_LINK=y
+CONFIG_LN=y
+# CONFIG_LOGNAME is not set
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_WIDTH=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
+CONFIG_SHA512SUM=y
+CONFIG_SHA3SUM=y
+
+#
+# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+CONFIG_MKDIR=y
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MKTEMP=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+CONFIG_NICE=y
+CONFIG_NL=y
+CONFIG_NOHUP=y
+CONFIG_NPROC=y
+CONFIG_OD=y
+CONFIG_PASTE=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+CONFIG_SEQ=y
+CONFIG_SHRED=y
+CONFIG_SHUF=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_FEATURE_FLOAT_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_FEATURE_STAT_FILESYSTEM=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_FEATURE_SYNC_FANCY=y
+CONFIG_TAC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_TEST1=y
+CONFIG_TEST2=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TIMEOUT=y
+CONFIG_TOUCH=y
+CONFIG_FEATURE_TOUCH_NODEREF=y
+CONFIG_FEATURE_TOUCH_SUSV3=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TRUNCATE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNAME_OSNAME="Linux"
+CONFIG_UNIQ=y
+CONFIG_UNLINK=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_BASE64=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+# CONFIG_WHO is not set
+# CONFIG_W is not set
+# CONFIG_USERS is not set
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options
+#
+CONFIG_FEATURE_VERBOSE=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+# CONFIG_FGCONSOLE is not set
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_SETFONT=y
+CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y
+CONFIG_DEFAULT_SETFONT_DIR="/usr/share"
+
+#
+# Common options for loadfont and setfont
+#
+CONFIG_FEATURE_LOADFONT_PSF2=y
+CONFIG_FEATURE_LOADFONT_RAW=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+CONFIG_SHOWKEY=y
+
+#
+# Debian Utilities
+#
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+# CONFIG_START_STOP_DAEMON is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_LIBM=y
+CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_ASK_TERMINAL=y
+CONFIG_FEATURE_VI_UNDO=y
+CONFIG_FEATURE_VI_UNDO_QUEUE=y
+CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_EXEC_PLUS=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+CONFIG_FEATURE_FIND_DELETE=y
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_FEATURE_FIND_LINKS=y
+CONFIG_GREP=y
+CONFIG_EGREP=y
+CONFIG_FGREP=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+CONFIG_HALT=y
+CONFIG_POWEROFF=y
+CONFIG_REBOOT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+CONFIG_INIT=y
+# CONFIG_LINUXRC is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_KILL_REMOVED=y
+CONFIG_FEATURE_KILL_DELAY=0
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_INIT_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_INIT_TERMINAL_TYPE="linux"
+# CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_CRYPT is not set
+# CONFIG_USE_BB_CRYPT_SHA is not set
+CONFIG_ADD_SHELL=y
+CONFIG_REMOVE_SHELL=y
+CONFIG_ADDGROUP=y
+# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+CONFIG_FEATURE_CHECK_NAMES=y
+CONFIG_LAST_ID=256000
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=999
+CONFIG_CHPASSWD=y
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="sha512"
+CONFIG_CRYPTPW=y
+CONFIG_MKPASSWD=y
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_GETTY=y
+CONFIG_LOGIN=y
+CONFIG_LOGIN_SESSION_AS_CHILD=y
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_NOLOGIN=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY=y
+# CONFIG_SULOGIN is not set
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+CONFIG_FSCK=y
+# CONFIG_LSATTR is not set
+# CONFIG_TUNE2FS is not set
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+CONFIG_DEPMOD=y
+CONFIG_INSMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODINFO=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_BLACKLIST=y
+CONFIG_RMMOD=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+CONFIG_FEATURE_MODUTILS_ALIAS=y
+CONFIG_FEATURE_MODUTILS_BIN=y
+CONFIG_FEATURE_MODUTILS_SYMBOLS=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+
+#
+# Linux System Utilities
+#
+CONFIG_ACPID=y
+CONFIG_FEATURE_ACPID_COMPAT=y
+CONFIG_BLKDISCARD=y
+CONFIG_BLKID=y
+CONFIG_FEATURE_BLKID_TYPE=y
+CONFIG_BLOCKDEV=y
+CONFIG_CAL=y
+# CONFIG_CHRT is not set
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_EJECT=y
+CONFIG_FEATURE_EJECT_SCSI=y
+CONFIG_FALLOCATE=y
+CONFIG_FATATTR=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+CONFIG_FEATURE_FDISK_WRITABLE=y
+CONFIG_FEATURE_AIX_LABEL=y
+CONFIG_FEATURE_SGI_LABEL=y
+CONFIG_FEATURE_SUN_LABEL=y
+CONFIG_FEATURE_OSF_LABEL=y
+CONFIG_FEATURE_GPT_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+CONFIG_FINDFS=y
+CONFIG_FLOCK=y
+CONFIG_FDFLUSH=y
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_FSFREEZE is not set
+CONFIG_FSTRIM=y
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
+CONFIG_HEXDUMP=y
+CONFIG_FEATURE_HEXDUMP_REVERSE=y
+CONFIG_HD=y
+CONFIG_XXD=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IONICE=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LOSETUP=y
+CONFIG_LSPCI=y
+CONFIG_LSUSB=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MESG=y
+CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
+# CONFIG_MKE2FS is not set
+# CONFIG_MKFS_EXT2 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_REISER is not set
+CONFIG_MKDOSFS=y
+CONFIG_MKFS_VFAT=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_UUID=y
+CONFIG_MORE=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_FAKE=y
+CONFIG_FEATURE_MOUNT_VERBOSE=y
+CONFIG_FEATURE_MOUNT_HELPERS=y
+CONFIG_FEATURE_MOUNT_LABEL=y
+# CONFIG_FEATURE_MOUNT_NFS is not set
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+# CONFIG_FEATURE_MOUNT_OTHERTAB is not set
+CONFIG_MOUNTPOINT=y
+CONFIG_NSENTER=y
+CONFIG_FEATURE_NSENTER_LONG_OPTS=y
+# CONFIG_PIVOT_ROOT is not set
+CONFIG_RDATE=y
+CONFIG_RDEV=y
+CONFIG_READPROFILE=y
+CONFIG_RENICE=y
+CONFIG_REV=y
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+# CONFIG_SETARCH is not set
+CONFIG_LINUX32=y
+CONFIG_LINUX64=y
+CONFIG_SETPRIV=y
+CONFIG_SETSID=y
+CONFIG_SWAPON=y
+CONFIG_FEATURE_SWAPON_DISCARD=y
+CONFIG_FEATURE_SWAPON_PRI=y
+CONFIG_SWAPOFF=y
+CONFIG_SWITCH_ROOT=y
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+# CONFIG_UEVENT is not set
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+CONFIG_UNSHARE=y
+# CONFIG_WALL is not set
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+CONFIG_VOLUMEID=y
+
+#
+# Filesystem/Volume identification
+#
+CONFIG_FEATURE_VOLUMEID_BCACHE=y
+CONFIG_FEATURE_VOLUMEID_BTRFS=y
+CONFIG_FEATURE_VOLUMEID_CRAMFS=y
+CONFIG_FEATURE_VOLUMEID_EXFAT=y
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_F2FS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+CONFIG_FEATURE_VOLUMEID_ISO9660=y
+CONFIG_FEATURE_VOLUMEID_JFS=y
+CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
+CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
+CONFIG_FEATURE_VOLUMEID_LUKS=y
+CONFIG_FEATURE_VOLUMEID_NILFS=y
+CONFIG_FEATURE_VOLUMEID_NTFS=y
+CONFIG_FEATURE_VOLUMEID_OCFS2=y
+CONFIG_FEATURE_VOLUMEID_REISERFS=y
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+CONFIG_FEATURE_VOLUMEID_UBIFS=y
+CONFIG_FEATURE_VOLUMEID_UDF=y
+CONFIG_FEATURE_VOLUMEID_XFS=y
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+CONFIG_BBCONFIG=y
+CONFIG_FEATURE_COMPRESS_BBCONFIG=y
+CONFIG_BEEP=y
+CONFIG_FEATURE_BEEP_FREQ=440
+CONFIG_FEATURE_BEEP_LENGTH_MS=30
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+CONFIG_CONSPY=y
+CONFIG_CROND=y
+CONFIG_FEATURE_CROND_D=y
+CONFIG_FEATURE_CROND_CALL_SENDMAIL=y
+CONFIG_FEATURE_CROND_DIR="/var/spool/cron"
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+CONFIG_FEATURE_DC_LIBM=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
+CONFIG_FBSPLASH=y
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
+CONFIG_HDPARM=y
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_I2CGET is not set
+# CONFIG_I2CSET is not set
+# CONFIG_I2CDUMP is not set
+# CONFIG_I2CDETECT is not set
+CONFIG_INOTIFYD=y
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_TRUNCATE=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_FEATURE_LESS_WINCH=y
+CONFIG_FEATURE_LESS_ASK_TERMINAL=y
+CONFIG_FEATURE_LESS_DASHCMD=y
+CONFIG_FEATURE_LESS_LINENUMS=y
+# CONFIG_LSSCSI is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MAN is not set
+CONFIG_MICROCOM=y
+# CONFIG_MT is not set
+CONFIG_NANDWRITE=y
+CONFIG_NANDDUMP=y
+CONFIG_PARTPROBE=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RFKILL=y
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+CONFIG_SETSERIAL=y
+CONFIG_STRINGS=y
+CONFIG_TIME=y
+CONFIG_TTYSIZE=y
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+# CONFIG_UBIMKVOL is not set
+# CONFIG_UBIRMVOL is not set
+# CONFIG_UBIRSVOL is not set
+# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_UBIRENAME is not set
+CONFIG_VOLNAME=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_FEATURE_UNIX_LOCAL=y
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+CONFIG_VERBOSE_RESOLUTION_ERRORS=y
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+CONFIG_FEATURE_BRCTL_FANCY=y
+CONFIG_FEATURE_BRCTL_SHOW=y
+# CONFIG_DNSD is not set
+CONFIG_ETHER_WAKE=y
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTPD_WRITE is not set
+# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
+# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+CONFIG_DNSDOMAINNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+# CONFIG_FEATURE_HTTPD_GZIP is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFENSLAVE=y
+# CONFIG_IFPLUGD is not set
+CONFIG_IFUP=y
+CONFIG_IFDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPNEIGH=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2"
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_NEIGH=y
+CONFIG_FEATURE_IP_RARE_PROTOCOLS=y
+CONFIG_IPCALC=y
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+CONFIG_FEATURE_IPCALC_FANCY=y
+# CONFIG_FAKEIDENTD is not set
+CONFIG_NAMEIF=y
+CONFIG_FEATURE_NAMEIF_EXTENDED=y
+CONFIG_NBDCLIENT=y
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NC_110_COMPAT=y
+CONFIG_NETSTAT=y
+CONFIG_FEATURE_NETSTAT_WIDE=y
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+CONFIG_NTPD=y
+CONFIG_FEATURE_NTPD_SERVER=y
+CONFIG_FEATURE_NTPD_CONF=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PSCAN=y
+CONFIG_ROUTE=y
+CONFIG_SLATTACH=y
+CONFIG_SSL_CLIENT=y
+# CONFIG_TCPSVD is not set
+# CONFIG_UDPSVD is not set
+# CONFIG_TELNET is not set
+# CONFIG_FEATURE_TELNET_TTYPE is not set
+# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
+# CONFIG_FEATURE_TELNET_WIDTH is not set
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
+# CONFIG_TFTP is not set
+# CONFIG_TFTPD is not set
+# CONFIG_FEATURE_TFTP_GET is not set
+# CONFIG_FEATURE_TFTP_PUT is not set
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+# CONFIG_TFTP_DEBUG is not set
+CONFIG_TLS=y
+CONFIG_TRACEROUTE=y
+CONFIG_TRACEROUTE6=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
+CONFIG_TUNCTL=y
+CONFIG_FEATURE_TUNCTL_UG=y
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_TIMEOUT=y
+CONFIG_FEATURE_WGET_HTTPS=y
+CONFIG_FEATURE_WGET_OPENSSL=y
+CONFIG_WHOIS=y
+# CONFIG_ZCIP is not set
+CONFIG_UDHCPC6=y
+CONFIG_FEATURE_UDHCPC6_RFC3646=y
+CONFIG_FEATURE_UDHCPC6_RFC4704=y
+CONFIG_FEATURE_UDHCPC6_RFC4833=y
+# CONFIG_UDHCPD is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+CONFIG_DHCPD_LEASES_FILE=""
+CONFIG_DUMPLEASES=y
+# CONFIG_DHCPRELAY is not set
+CONFIG_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
+CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+CONFIG_FEATURE_UDHCP_RFC3397=y
+CONFIG_FEATURE_UDHCP_8021Q=y
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-b"
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+CONFIG_MAKEMIME=y
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+CONFIG_REFORMIME=y
+CONFIG_FEATURE_REFORMIME_COMPAT=y
+CONFIG_SENDMAIL=y
+CONFIG_FEATURE_MIME_CHARSET="us-ascii"
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_IOSTAT=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_LSOF=y
+CONFIG_MPSTAT=y
+CONFIG_NMETER=y
+CONFIG_PGREP=y
+CONFIG_PKILL=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PMAP=y
+CONFIG_POWERTOP=y
+CONFIG_FEATURE_POWERTOP_INTERACTIVE=y
+CONFIG_PS=y
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_FEATURE_PS_LONG is not set
+CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y
+CONFIG_PSTREE=y
+CONFIG_PWDX=y
+CONFIG_SMEMCAP=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_INTERACTIVE=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_SMP_CPU=y
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+CONFIG_FEATURE_TOP_SMP_PROCESS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_UPTIME=y
+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
+CONFIG_WATCH=y
+# CONFIG_FEATURE_SHOW_THREADS is not set
+
+#
+# Runit Utilities
+#
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVC is not set
+# CONFIG_SVLOGD is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SESTATUS is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_SETSEBOOL is not set
+
+#
+# Shells
+#
+CONFIG_SH_IS_ASH=y
+# CONFIG_SH_IS_HUSH is not set
+# CONFIG_SH_IS_NONE is not set
+# CONFIG_BASH_IS_ASH is not set
+# CONFIG_BASH_IS_HUSH is not set
+CONFIG_BASH_IS_NONE=y
+CONFIG_ASH=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_INTERNAL_GLOB=y
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+CONFIG_ASH_IDLE_TIMEOUT=y
+CONFIG_ASH_MAIL=y
+CONFIG_ASH_ECHO=y
+CONFIG_ASH_PRINTF=y
+CONFIG_ASH_TEST=y
+CONFIG_ASH_HELP=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_CMDCMD=y
+CONFIG_ASH_COMMAND_NOT_FOUND_HOOK=y
+# CONFIG_CTTYHACK is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_HUSH_ECHO is not set
+# CONFIG_HUSH_PRINTF is not set
+# CONFIG_HUSH_TEST is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_EXPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_KILL is not set
+# CONFIG_HUSH_WAIT is not set
+# CONFIG_HUSH_TRAP is not set
+# CONFIG_HUSH_TYPE is not set
+# CONFIG_HUSH_READ is not set
+# CONFIG_HUSH_SET is not set
+# CONFIG_HUSH_UNSET is not set
+# CONFIG_HUSH_ULIMIT is not set
+# CONFIG_HUSH_UMASK is not set
+# CONFIG_HUSH_MEMLEAK is not set
+# CONFIG_MSH is not set
+
+#
+# Options common to all shells
+#
+CONFIG_FEATURE_SH_MATH=y
+CONFIG_FEATURE_SH_MATH_64=y
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_FEATURE_SH_HISTFILESIZE=y
+
+#
+# System Logging Utilities
+#
+CONFIG_KLOGD=y
+
+#
+# klogd should not be used together with syslog to kernel printk buffer
+#
+CONFIG_FEATURE_KLOGD_KLOGCTL=y
+CONFIG_LOGGER=y
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_SYSLOGD_DUP=y
+CONFIG_FEATURE_SYSLOGD_CFG=y
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_FEATURE_KMSG_SYSLOG=y
diff --git a/harmony/busybox/busyboxconfig-extras b/harmony/busybox/busyboxconfig-extras
new file mode 100644
index 000000000..c460d0144
--- /dev/null
+++ b/harmony/busybox/busyboxconfig-extras
@@ -0,0 +1,1114 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.27.2
+# Fri Oct 27 21:23:19 2017
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+# CONFIG_DESKTOP is not set
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEDORA_COMPAT is not set
+# CONFIG_INCLUDE_SUSv2 is not set
+# CONFIG_USE_PORTABLE_CODE is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_BUSYBOX=y
+CONFIG_FEATURE_INSTALLER=y
+# CONFIG_INSTALL_NO_USR is not set
+# CONFIG_PAM is not set
+# CONFIG_LONG_OPTS is not set
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+# CONFIG_FEATURE_UTMP is not set
+# CONFIG_FEATURE_WTMP is not set
+# CONFIG_FEATURE_PIDFILE is not set
+CONFIG_PID_FILE_PATH=""
+# CONFIG_FEATURE_SUID is not set
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+# CONFIG_FEATURE_HAVE_RPC is not set
+CONFIG_PLATFORM_LINUX=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+CONFIG_PIE=y
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_SYSROOT=""
+CONFIG_EXTRA_CFLAGS=""
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+
+#
+# Installation Options ("make install" behavior)
+#
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_DEBUG_SANITIZE is not set
+# CONFIG_UNIT_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Busybox Library Tuning
+#
+# CONFIG_FEATURE_USE_BSS_TAIL is not set
+# CONFIG_FEATURE_RTMINMAX is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SMALL=1
+CONFIG_SHA3_SMALL=1
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+# CONFIG_FEATURE_EDITING is not set
+CONFIG_FEATURE_EDITING_MAX_LEN=0
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=0
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
+# CONFIG_FEATURE_REVERSE_SEARCH is not set
+# CONFIG_FEATURE_TAB_COMPLETION is not set
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_UNICODE_SUPPORT is not set
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=0
+CONFIG_LAST_SUPPORTED_WCHAR=0
+# CONFIG_UNICODE_COMBINING_WCHARS is not set
+# CONFIG_UNICODE_WIDE_WCHARS is not set
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+# CONFIG_UNICODE_PRESERVE_BROKEN is not set
+# CONFIG_FEATURE_NON_POSIX_CP is not set
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+# CONFIG_FEATURE_USE_SENDFILE is not set
+CONFIG_FEATURE_COPYBUF_KB=4
+# CONFIG_FEATURE_SKIP_ROOTFS is not set
+# CONFIG_MONOTONIC_SYSCALL is not set
+# CONFIG_IOCTL_HEX2STR_ERROR is not set
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_XZ is not set
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+# CONFIG_FEATURE_SEAMLESS_BZ2 is not set
+CONFIG_FEATURE_SEAMLESS_GZ=y
+# CONFIG_FEATURE_SEAMLESS_Z is not set
+# CONFIG_AR is not set
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+# CONFIG_FEATURE_AR_CREATE is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_GUNZIP is not set
+# CONFIG_ZCAT is not set
+# CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set
+# CONFIG_BUNZIP2 is not set
+# CONFIG_BZCAT is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_LZCAT is not set
+# CONFIG_LZMA is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+# CONFIG_UNXZ is not set
+# CONFIG_XZCAT is not set
+# CONFIG_XZ is not set
+# CONFIG_BZIP2 is not set
+# CONFIG_FEATURE_BZIP2_DECOMPRESS is not set
+# CONFIG_CPIO is not set
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_GZIP is not set
+# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
+CONFIG_GZIP_FAST=0
+# CONFIG_FEATURE_GZIP_LEVELS is not set
+# CONFIG_FEATURE_GZIP_DECOMPRESS is not set
+# CONFIG_LZOP is not set
+# CONFIG_UNLZOP is not set
+# CONFIG_LZOPCAT is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM is not set
+# CONFIG_RPM2CPIO is not set
+# CONFIG_TAR is not set
+# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
+# CONFIG_FEATURE_TAR_CREATE is not set
+# CONFIG_FEATURE_TAR_AUTODETECT is not set
+# CONFIG_FEATURE_TAR_FROM is not set
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set
+# CONFIG_FEATURE_TAR_TO_COMMAND is not set
+# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
+# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
+# CONFIG_FEATURE_TAR_SELINUX is not set
+# CONFIG_UNZIP is not set
+# CONFIG_FEATURE_UNZIP_CDF is not set
+# CONFIG_FEATURE_UNZIP_BZIP2 is not set
+# CONFIG_FEATURE_UNZIP_LZMA is not set
+# CONFIG_FEATURE_UNZIP_XZ is not set
+
+#
+# Coreutils
+#
+# CONFIG_BASENAME is not set
+# CONFIG_CAT is not set
+# CONFIG_FEATURE_CATV is not set
+# CONFIG_CHGRP is not set
+# CONFIG_CHMOD is not set
+# CONFIG_CHOWN is not set
+# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
+# CONFIG_CHROOT is not set
+# CONFIG_CKSUM is not set
+# CONFIG_COMM is not set
+# CONFIG_CP is not set
+# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
+# CONFIG_CUT is not set
+# CONFIG_DATE is not set
+# CONFIG_FEATURE_DATE_ISOFMT is not set
+# CONFIG_FEATURE_DATE_NANO is not set
+# CONFIG_FEATURE_DATE_COMPAT is not set
+# CONFIG_DD is not set
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+# CONFIG_FEATURE_DD_STATUS is not set
+# CONFIG_DF is not set
+# CONFIG_FEATURE_DF_FANCY is not set
+# CONFIG_DIRNAME is not set
+# CONFIG_DOS2UNIX is not set
+# CONFIG_UNIX2DOS is not set
+# CONFIG_DU is not set
+# CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set
+# CONFIG_ECHO is not set
+# CONFIG_FEATURE_FANCY_ECHO is not set
+# CONFIG_ENV is not set
+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
+# CONFIG_EXPAND is not set
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+# CONFIG_UNEXPAND is not set
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+# CONFIG_EXPR is not set
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+# CONFIG_FACTOR is not set
+# CONFIG_FALSE is not set
+# CONFIG_FOLD is not set
+# CONFIG_FSYNC is not set
+# CONFIG_HEAD is not set
+# CONFIG_FEATURE_FANCY_HEAD is not set
+# CONFIG_HOSTID is not set
+# CONFIG_ID is not set
+# CONFIG_GROUPS is not set
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+# CONFIG_LINK is not set
+# CONFIG_LN is not set
+# CONFIG_LOGNAME is not set
+# CONFIG_LS is not set
+# CONFIG_FEATURE_LS_FILETYPES is not set
+# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
+# CONFIG_FEATURE_LS_RECURSIVE is not set
+# CONFIG_FEATURE_LS_WIDTH is not set
+# CONFIG_FEATURE_LS_SORTFILES is not set
+# CONFIG_FEATURE_LS_TIMESTAMPS is not set
+# CONFIG_FEATURE_LS_USERNAME is not set
+# CONFIG_FEATURE_LS_COLOR is not set
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+# CONFIG_MD5SUM is not set
+# CONFIG_SHA1SUM is not set
+# CONFIG_SHA256SUM is not set
+# CONFIG_SHA512SUM is not set
+# CONFIG_SHA3SUM is not set
+# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
+# CONFIG_MKDIR is not set
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+# CONFIG_MKFIFO is not set
+# CONFIG_MKNOD is not set
+# CONFIG_MKTEMP is not set
+# CONFIG_MV is not set
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+# CONFIG_NICE is not set
+# CONFIG_NL is not set
+# CONFIG_NOHUP is not set
+# CONFIG_NPROC is not set
+# CONFIG_OD is not set
+# CONFIG_PASTE is not set
+# CONFIG_PRINTENV is not set
+# CONFIG_PRINTF is not set
+# CONFIG_PWD is not set
+# CONFIG_READLINK is not set
+# CONFIG_FEATURE_READLINK_FOLLOW is not set
+# CONFIG_REALPATH is not set
+# CONFIG_RM is not set
+# CONFIG_RMDIR is not set
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+# CONFIG_SEQ is not set
+# CONFIG_SHRED is not set
+# CONFIG_SHUF is not set
+# CONFIG_SLEEP is not set
+# CONFIG_FEATURE_FANCY_SLEEP is not set
+# CONFIG_FEATURE_FLOAT_SLEEP is not set
+# CONFIG_SORT is not set
+# CONFIG_FEATURE_SORT_BIG is not set
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+# CONFIG_FEATURE_STAT_FILESYSTEM is not set
+# CONFIG_STTY is not set
+# CONFIG_SUM is not set
+# CONFIG_SYNC is not set
+# CONFIG_FEATURE_SYNC_FANCY is not set
+# CONFIG_TAC is not set
+# CONFIG_TAIL is not set
+# CONFIG_FEATURE_FANCY_TAIL is not set
+# CONFIG_TEE is not set
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+# CONFIG_TEST is not set
+# CONFIG_TEST1 is not set
+# CONFIG_TEST2 is not set
+# CONFIG_FEATURE_TEST_64 is not set
+# CONFIG_TIMEOUT is not set
+# CONFIG_TOUCH is not set
+# CONFIG_FEATURE_TOUCH_NODEREF is not set
+# CONFIG_FEATURE_TOUCH_SUSV3 is not set
+# CONFIG_TR is not set
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+# CONFIG_TRUE is not set
+# CONFIG_TRUNCATE is not set
+# CONFIG_TTY is not set
+# CONFIG_UNAME is not set
+CONFIG_UNAME_OSNAME=""
+# CONFIG_UNIQ is not set
+# CONFIG_UNLINK is not set
+# CONFIG_USLEEP is not set
+# CONFIG_UUDECODE is not set
+# CONFIG_BASE64 is not set
+# CONFIG_UUENCODE is not set
+# CONFIG_WC is not set
+# CONFIG_FEATURE_WC_LARGE is not set
+# CONFIG_WHO is not set
+# CONFIG_W is not set
+# CONFIG_USERS is not set
+# CONFIG_WHOAMI is not set
+# CONFIG_YES is not set
+
+#
+# Common options
+#
+# CONFIG_FEATURE_VERBOSE is not set
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+# CONFIG_FEATURE_HUMAN_READABLE is not set
+
+#
+# Console Utilities
+#
+# CONFIG_CHVT is not set
+# CONFIG_CLEAR is not set
+# CONFIG_DEALLOCVT is not set
+# CONFIG_DUMPKMAP is not set
+# CONFIG_FGCONSOLE is not set
+# CONFIG_KBD_MODE is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_SETFONT is not set
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
+# CONFIG_FEATURE_LOADFONT_PSF2 is not set
+# CONFIG_FEATURE_LOADFONT_RAW is not set
+# CONFIG_LOADKMAP is not set
+# CONFIG_OPENVT is not set
+# CONFIG_RESET is not set
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+# CONFIG_SETCONSOLE is not set
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+# CONFIG_SETKEYCODES is not set
+# CONFIG_SETLOGCONS is not set
+# CONFIG_SHOWKEY is not set
+
+#
+# Debian Utilities
+#
+# CONFIG_PIPE_PROGRESS is not set
+# CONFIG_RUN_PARTS is not set
+# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+# CONFIG_START_STOP_DAEMON is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
+# CONFIG_WHICH is not set
+
+#
+# Editors
+#
+# CONFIG_AWK is not set
+# CONFIG_FEATURE_AWK_LIBM is not set
+# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set
+# CONFIG_CMP is not set
+# CONFIG_DIFF is not set
+# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
+# CONFIG_FEATURE_DIFF_DIR is not set
+# CONFIG_ED is not set
+# CONFIG_PATCH is not set
+# CONFIG_SED is not set
+# CONFIG_VI is not set
+CONFIG_FEATURE_VI_MAX_LEN=0
+# CONFIG_FEATURE_VI_8BIT is not set
+# CONFIG_FEATURE_VI_COLON is not set
+# CONFIG_FEATURE_VI_YANKMARK is not set
+# CONFIG_FEATURE_VI_SEARCH is not set
+# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
+# CONFIG_FEATURE_VI_USE_SIGNALS is not set
+# CONFIG_FEATURE_VI_DOT_CMD is not set
+# CONFIG_FEATURE_VI_READONLY is not set
+# CONFIG_FEATURE_VI_SETOPTS is not set
+# CONFIG_FEATURE_VI_SET is not set
+# CONFIG_FEATURE_VI_WIN_RESIZE is not set
+# CONFIG_FEATURE_VI_ASK_TERMINAL is not set
+# CONFIG_FEATURE_VI_UNDO is not set
+# CONFIG_FEATURE_VI_UNDO_QUEUE is not set
+CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0
+# CONFIG_FEATURE_ALLOW_EXEC is not set
+
+#
+# Finding Utilities
+#
+# CONFIG_FIND is not set
+# CONFIG_FEATURE_FIND_PRINT0 is not set
+# CONFIG_FEATURE_FIND_MTIME is not set
+# CONFIG_FEATURE_FIND_MMIN is not set
+# CONFIG_FEATURE_FIND_PERM is not set
+# CONFIG_FEATURE_FIND_TYPE is not set
+# CONFIG_FEATURE_FIND_XDEV is not set
+# CONFIG_FEATURE_FIND_MAXDEPTH is not set
+# CONFIG_FEATURE_FIND_NEWER is not set
+# CONFIG_FEATURE_FIND_INUM is not set
+# CONFIG_FEATURE_FIND_EXEC is not set
+# CONFIG_FEATURE_FIND_EXEC_PLUS is not set
+# CONFIG_FEATURE_FIND_USER is not set
+# CONFIG_FEATURE_FIND_GROUP is not set
+# CONFIG_FEATURE_FIND_NOT is not set
+# CONFIG_FEATURE_FIND_DEPTH is not set
+# CONFIG_FEATURE_FIND_PAREN is not set
+# CONFIG_FEATURE_FIND_SIZE is not set
+# CONFIG_FEATURE_FIND_PRUNE is not set
+# CONFIG_FEATURE_FIND_DELETE is not set
+# CONFIG_FEATURE_FIND_PATH is not set
+# CONFIG_FEATURE_FIND_REGEX is not set
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+# CONFIG_FEATURE_FIND_LINKS is not set
+# CONFIG_GREP is not set
+# CONFIG_EGREP is not set
+# CONFIG_FGREP is not set
+# CONFIG_FEATURE_GREP_CONTEXT is not set
+# CONFIG_XARGS is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR is not set
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+# CONFIG_HALT is not set
+# CONFIG_POWEROFF is not set
+# CONFIG_REBOOT is not set
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+# CONFIG_INIT is not set
+# CONFIG_LINUXRC is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_KILL_REMOVED is not set
+CONFIG_FEATURE_KILL_DELAY=0
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+# CONFIG_FEATURE_INIT_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_INIT_TERMINAL_TYPE=""
+# CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_CRYPT is not set
+# CONFIG_USE_BB_CRYPT_SHA is not set
+# CONFIG_ADD_SHELL is not set
+# CONFIG_REMOVE_SHELL is not set
+# CONFIG_ADDGROUP is not set
+# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+# CONFIG_ADDUSER is not set
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_LAST_ID=0
+CONFIG_FIRST_SYSTEM_ID=0
+CONFIG_LAST_SYSTEM_ID=0
+# CONFIG_CHPASSWD is not set
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
+# CONFIG_CRYPTPW is not set
+# CONFIG_MKPASSWD is not set
+# CONFIG_DELUSER is not set
+# CONFIG_DELGROUP is not set
+# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
+# CONFIG_GETTY is not set
+# CONFIG_LOGIN is not set
+# CONFIG_LOGIN_SESSION_AS_CHILD is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+# CONFIG_FEATURE_NOLOGIN is not set
+# CONFIG_FEATURE_SECURETTY is not set
+# CONFIG_NOLOGIN is not set
+# CONFIG_PASSWD is not set
+# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
+# CONFIG_SU is not set
+# CONFIG_FEATURE_SU_SYSLOG is not set
+# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
+# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_TUNE2FS is not set
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_DEPMOD is not set
+# CONFIG_INSMOD is not set
+# CONFIG_LSMOD is not set
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+# CONFIG_MODINFO is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+# CONFIG_RMMOD is not set
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+# CONFIG_FEATURE_MODUTILS_ALIAS is not set
+# CONFIG_FEATURE_MODUTILS_BIN is not set
+# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
+CONFIG_DEFAULT_MODULES_DIR=""
+CONFIG_DEFAULT_DEPMOD_FILE=""
+
+#
+# Linux System Utilities
+#
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+# CONFIG_BLKDISCARD is not set
+# CONFIG_BLKID is not set
+# CONFIG_FEATURE_BLKID_TYPE is not set
+# CONFIG_BLOCKDEV is not set
+# CONFIG_CAL is not set
+# CONFIG_CHRT is not set
+# CONFIG_DMESG is not set
+# CONFIG_FEATURE_DMESG_PRETTY is not set
+# CONFIG_EJECT is not set
+# CONFIG_FEATURE_EJECT_SCSI is not set
+# CONFIG_FALLOCATE is not set
+# CONFIG_FATATTR is not set
+# CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFORMAT is not set
+# CONFIG_FDISK is not set
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+# CONFIG_FEATURE_FDISK_WRITABLE is not set
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_GPT_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FINDFS is not set
+# CONFIG_FLOCK is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_FSFREEZE is not set
+# CONFIG_FSTRIM is not set
+# CONFIG_GETOPT is not set
+# CONFIG_FEATURE_GETOPT_LONG is not set
+# CONFIG_HEXDUMP is not set
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+# CONFIG_HD is not set
+# CONFIG_XXD is not set
+# CONFIG_HWCLOCK is not set
+# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+# CONFIG_IONICE is not set
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+# CONFIG_LOSETUP is not set
+# CONFIG_LSPCI is not set
+# CONFIG_LSUSB is not set
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_RENAME is not set
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_MESG is not set
+# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
+# CONFIG_MKE2FS is not set
+# CONFIG_MKFS_EXT2 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_REISER is not set
+# CONFIG_MKDOSFS is not set
+# CONFIG_MKFS_VFAT is not set
+# CONFIG_MKSWAP is not set
+# CONFIG_FEATURE_MKSWAP_UUID is not set
+# CONFIG_MORE is not set
+# CONFIG_MOUNT is not set
+# CONFIG_FEATURE_MOUNT_FAKE is not set
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+# CONFIG_FEATURE_MOUNT_LABEL is not set
+# CONFIG_FEATURE_MOUNT_NFS is not set
+# CONFIG_FEATURE_MOUNT_CIFS is not set
+# CONFIG_FEATURE_MOUNT_FLAGS is not set
+# CONFIG_FEATURE_MOUNT_FSTAB is not set
+# CONFIG_FEATURE_MOUNT_OTHERTAB is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_NSENTER is not set
+# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set
+# CONFIG_PIVOT_ROOT is not set
+# CONFIG_RDATE is not set
+# CONFIG_RDEV is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_RENICE is not set
+# CONFIG_REV is not set
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+# CONFIG_SETARCH is not set
+# CONFIG_LINUX32 is not set
+# CONFIG_LINUX64 is not set
+# CONFIG_SETPRIV is not set
+# CONFIG_SETSID is not set
+# CONFIG_SWAPON is not set
+# CONFIG_FEATURE_SWAPON_DISCARD is not set
+# CONFIG_FEATURE_SWAPON_PRI is not set
+# CONFIG_SWAPOFF is not set
+# CONFIG_SWITCH_ROOT is not set
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+# CONFIG_UEVENT is not set
+# CONFIG_UMOUNT is not set
+# CONFIG_FEATURE_UMOUNT_ALL is not set
+# CONFIG_UNSHARE is not set
+# CONFIG_WALL is not set
+# CONFIG_FEATURE_MOUNT_LOOP is not set
+# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+# CONFIG_VOLUMEID is not set
+# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+# CONFIG_FEATURE_VOLUMEID_EXFAT is not set
+# CONFIG_FEATURE_VOLUMEID_EXT is not set
+# CONFIG_FEATURE_VOLUMEID_F2FS is not set
+# CONFIG_FEATURE_VOLUMEID_FAT is not set
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_JFS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+# CONFIG_FEATURE_VOLUMEID_NILFS is not set
+# CONFIG_FEATURE_VOLUMEID_NTFS is not set
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+# CONFIG_FEATURE_VOLUMEID_UBIFS is not set
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_XFS is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+# CONFIG_CONSPY is not set
+# CONFIG_CROND is not set
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_DIR=""
+# CONFIG_CRONTAB is not set
+# CONFIG_DC is not set
+# CONFIG_FEATURE_DC_LIBM is not set
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_I2CGET is not set
+# CONFIG_I2CSET is not set
+# CONFIG_I2CDUMP is not set
+# CONFIG_I2CDETECT is not set
+# CONFIG_INOTIFYD is not set
+# CONFIG_LESS is not set
+CONFIG_FEATURE_LESS_MAXLINES=0
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# CONFIG_FEATURE_LESS_TRUNCATE is not set
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
+# CONFIG_LSSCSI is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+# CONFIG_MT is not set
+# CONFIG_NANDWRITE is not set
+# CONFIG_NANDDUMP is not set
+# CONFIG_PARTPROBE is not set
+# CONFIG_RAIDAUTORUN is not set
+CONFIG_READAHEAD=y
+# CONFIG_RFKILL is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+# CONFIG_SETSERIAL is not set
+# CONFIG_STRINGS is not set
+# CONFIG_TIME is not set
+# CONFIG_TTYSIZE is not set
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+# CONFIG_UBIMKVOL is not set
+# CONFIG_UBIRMVOL is not set
+# CONFIG_UBIRSVOL is not set
+# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_UBIRENAME is not set
+# CONFIG_VOLNAME is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+# CONFIG_FEATURE_IPV6 is not set
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_ARP is not set
+# CONFIG_ARPING is not set
+# CONFIG_BRCTL is not set
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+CONFIG_DNSD=y
+# CONFIG_ETHER_WAKE is not set
+CONFIG_FTPD=y
+CONFIG_FEATURE_FTPD_WRITE=y
+CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+CONFIG_FEATURE_FTPD_AUTHENTICATION=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+# CONFIG_HOSTNAME is not set
+# CONFIG_DNSDOMAINNAME is not set
+CONFIG_HTTPD=y
+CONFIG_FEATURE_HTTPD_RANGES=y
+CONFIG_FEATURE_HTTPD_SETUID=y
+CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
+CONFIG_FEATURE_HTTPD_AUTH_MD5=y
+CONFIG_FEATURE_HTTPD_CGI=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
+CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
+CONFIG_FEATURE_HTTPD_PROXY=y
+CONFIG_FEATURE_HTTPD_GZIP=y
+# CONFIG_IFCONFIG is not set
+# CONFIG_FEATURE_IFCONFIG_STATUS is not set
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+# CONFIG_FEATURE_IFCONFIG_HW is not set
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+# CONFIG_IFENSLAVE is not set
+# CONFIG_IFPLUGD is not set
+# CONFIG_IFUP is not set
+# CONFIG_IFDOWN is not set
+CONFIG_IFUPDOWN_IFSTATE_PATH=""
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_INETD=y
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+# CONFIG_IP is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_IPRULE is not set
+# CONFIG_IPNEIGH is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+CONFIG_FEATURE_IP_ROUTE_DIR=""
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# CONFIG_FEATURE_IP_RULE is not set
+# CONFIG_FEATURE_IP_NEIGH is not set
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+CONFIG_FAKEIDENTD=y
+# CONFIG_NAMEIF is not set
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+# CONFIG_NBDCLIENT is not set
+# CONFIG_NC is not set
+# CONFIG_NC_SERVER is not set
+# CONFIG_NC_EXTRA is not set
+# CONFIG_NC_110_COMPAT is not set
+# CONFIG_NETSTAT is not set
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+# CONFIG_FEATURE_NETSTAT_PRG is not set
+# CONFIG_NSLOOKUP is not set
+# CONFIG_NTPD is not set
+# CONFIG_FEATURE_NTPD_SERVER is not set
+# CONFIG_FEATURE_NTPD_CONF is not set
+# CONFIG_PING is not set
+# CONFIG_PING6 is not set
+# CONFIG_FEATURE_FANCY_PING is not set
+# CONFIG_PSCAN is not set
+# CONFIG_ROUTE is not set
+# CONFIG_SLATTACH is not set
+# CONFIG_SSL_CLIENT is not set
+# CONFIG_TCPSVD is not set
+# CONFIG_UDPSVD is not set
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_FEATURE_TELNET_WIDTH=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_FEATURE_TELNETD_INETD_WAIT=y
+CONFIG_TFTP=y
+CONFIG_TFTPD=y
+
+#
+# Common options for tftp/tftpd
+#
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
+# CONFIG_TFTP_DEBUG is not set
+# CONFIG_TLS is not set
+# CONFIG_TRACEROUTE is not set
+# CONFIG_TRACEROUTE6 is not set
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_TUNCTL is not set
+# CONFIG_FEATURE_TUNCTL_UG is not set
+# CONFIG_VCONFIG is not set
+# CONFIG_WGET is not set
+# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+# CONFIG_FEATURE_WGET_STATUSBAR is not set
+# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
+# CONFIG_FEATURE_WGET_TIMEOUT is not set
+# CONFIG_FEATURE_WGET_HTTPS is not set
+# CONFIG_FEATURE_WGET_OPENSSL is not set
+# CONFIG_WHOIS is not set
+# CONFIG_ZCIP is not set
+# CONFIG_UDHCPC6 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
+CONFIG_UDHCPD=y
+CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y
+CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC=y
+CONFIG_DHCPD_LEASES_FILE="/var/lib/udhcpd/udhcpd.leases"
+# CONFIG_DUMPLEASES is not set
+# CONFIG_DHCPRELAY is not set
+# CONFIG_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT=""
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+CONFIG_FEATURE_UDHCP_RFC3397=y
+CONFIG_FEATURE_UDHCP_8021Q=y
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+
+#
+# Process Utilities
+#
+# CONFIG_FREE is not set
+# CONFIG_FUSER is not set
+# CONFIG_IOSTAT is not set
+# CONFIG_KILL is not set
+# CONFIG_KILLALL is not set
+# CONFIG_KILLALL5 is not set
+# CONFIG_LSOF is not set
+# CONFIG_MPSTAT is not set
+# CONFIG_NMETER is not set
+# CONFIG_PGREP is not set
+# CONFIG_PKILL is not set
+# CONFIG_PIDOF is not set
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+# CONFIG_PMAP is not set
+# CONFIG_POWERTOP is not set
+# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set
+# CONFIG_PS is not set
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_FEATURE_PS_LONG is not set
+# CONFIG_FEATURE_PS_TIME is not set
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
+# CONFIG_PSTREE is not set
+# CONFIG_PWDX is not set
+# CONFIG_SMEMCAP is not set
+# CONFIG_BB_SYSCTL is not set
+# CONFIG_TOP is not set
+# CONFIG_FEATURE_TOP_INTERACTIVE is not set
+# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set
+# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set
+# CONFIG_FEATURE_TOP_SMP_CPU is not set
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
+# CONFIG_FEATURE_TOPMEM is not set
+# CONFIG_UPTIME is not set
+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
+# CONFIG_WATCH is not set
+# CONFIG_FEATURE_SHOW_THREADS is not set
+
+#
+# Runit Utilities
+#
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVC is not set
+# CONFIG_SVLOGD is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SESTATUS is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_SETSEBOOL is not set
+
+#
+# Shells
+#
+# CONFIG_SH_IS_ASH is not set
+# CONFIG_SH_IS_HUSH is not set
+CONFIG_SH_IS_NONE=y
+# CONFIG_BASH_IS_ASH is not set
+# CONFIG_BASH_IS_HUSH is not set
+CONFIG_BASH_IS_NONE=y
+# CONFIG_ASH is not set
+# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_ASH_INTERNAL_GLOB is not set
+# CONFIG_ASH_BASH_COMPAT is not set
+# CONFIG_ASH_JOB_CONTROL is not set
+# CONFIG_ASH_ALIAS is not set
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+# CONFIG_ASH_EXPAND_PRMT is not set
+# CONFIG_ASH_IDLE_TIMEOUT is not set
+# CONFIG_ASH_MAIL is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
+# CONFIG_ASH_HELP is not set
+# CONFIG_ASH_GETOPTS is not set
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_COMMAND_NOT_FOUND_HOOK is not set
+# CONFIG_CTTYHACK is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_HUSH_ECHO is not set
+# CONFIG_HUSH_PRINTF is not set
+# CONFIG_HUSH_TEST is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_EXPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_KILL is not set
+# CONFIG_HUSH_WAIT is not set
+# CONFIG_HUSH_TRAP is not set
+# CONFIG_HUSH_TYPE is not set
+# CONFIG_HUSH_READ is not set
+# CONFIG_HUSH_SET is not set
+# CONFIG_HUSH_UNSET is not set
+# CONFIG_HUSH_ULIMIT is not set
+# CONFIG_HUSH_UMASK is not set
+# CONFIG_HUSH_MEMLEAK is not set
+# CONFIG_MSH is not set
+
+#
+# Options common to all shells
+#
+# CONFIG_FEATURE_SH_MATH is not set
+# CONFIG_FEATURE_SH_MATH_64 is not set
+# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+# CONFIG_FEATURE_SH_HISTFILESIZE is not set
+
+#
+# System Logging Utilities
+#
+# CONFIG_KLOGD is not set
+# CONFIG_FEATURE_KLOGD_KLOGCTL is not set
+# CONFIG_LOGGER is not set
+# CONFIG_LOGREAD is not set
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+# CONFIG_SYSLOGD is not set
+# CONFIG_FEATURE_ROTATE_LOGFILE is not set
+# CONFIG_FEATURE_REMOTE_LOG is not set
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+# CONFIG_FEATURE_SYSLOGD_CFG is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
+# CONFIG_FEATURE_IPC_SYSLOG is not set
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
+# CONFIG_FEATURE_KMSG_SYSLOG is not set
diff --git a/harmony/busybox/dad.if-up b/harmony/busybox/dad.if-up
new file mode 100644
index 000000000..e76bb60bf
--- /dev/null
+++ b/harmony/busybox/dad.if-up
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Block ifup until DAD completion
+# Copyright (c) 2016 Kaarle Ritvanen
+
+while ip address show dev $IFACE | grep -q " tentative "; do
+ sleep 0.2
+done
diff --git a/harmony/busybox/nologin.c b/harmony/busybox/nologin.c
new file mode 100644
index 000000000..e0a4c56c7
--- /dev/null
+++ b/harmony/busybox/nologin.c
@@ -0,0 +1,38 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * nologin implementation for busybox
+ *
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+ */
+
+//config:config NOLOGIN
+//config: bool "nologin"
+//config: default n
+//config: help
+//config: nologin is a tool that is supposed to be the shell for user accounts
+//config: that are not supposed to login.
+
+//applet:IF_NOLOGIN(APPLET(nologin, BB_DIR_SBIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_NOLOGIN) += nologin.o
+
+//usage:#define nologin_trivial_usage
+//usage: ""
+//usage:#define nologin_full_usage "\n\n"
+//usage: "politely refuse a login\n"
+
+#include "libbb.h"
+#include <syslog.h>
+
+#define _NOLOGIN_TXT "/etc/nologin.txt"
+
+int nologin_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int nologin_main(int argc UNUSED_PARAM, char **argv)
+{
+ int fd;
+ fd = open(_NOLOGIN_TXT, O_RDONLY);
+ if (bb_copyfd_eof(fd, STDOUT_FILENO) == -1)
+ bb_error_msg_and_die("this account is not available");
+ close(fd);
+ return 1;
+}
+
diff --git a/harmony/busybox/top-buffer-overflow.patch b/harmony/busybox/top-buffer-overflow.patch
new file mode 100644
index 000000000..14b23c648
--- /dev/null
+++ b/harmony/busybox/top-buffer-overflow.patch
@@ -0,0 +1,20 @@
+--- busybox-1.27.0.orig/procps/top.c
++++ busybox-1.27.0/procps/top.c
+@@ -694,10 +694,14 @@
+ CALC_STAT(pcpu, (s->pcpu*pcpu_scale + pcpu_half) >> pcpu_shift);
+ #endif
+
+- if (s->vsz >= 100000)
+- sprintf(vsz_str_buf, "%6ldm", s->vsz/1024);
++ if ((s->vsz / (1024 * 1024)) >= 100000)
++ snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%6ldt", s->vsz/(1024 * 1024 * 1024));
++ else if ((s->vsz / 1024) >= 100000)
++ snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%6ldg", s->vsz/(1024 * 1024));
++ else if (s->vsz >= 100000)
++ snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%6ldm", s->vsz/1024);
+ else
+- sprintf(vsz_str_buf, "%7lu", s->vsz);
++ snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%7lu", s->vsz);
+ /* PID PPID USER STAT VSZ %VSZ [%CPU] COMMAND */
+ col = snprintf(line_buf, scr_width,
+ "\n" "%5u%6u %-8.8s %s%s" FMT
diff --git a/harmony/c-ares/APKBUILD b/harmony/c-ares/APKBUILD
new file mode 100644
index 000000000..98fbe2eb1
--- /dev/null
+++ b/harmony/c-ares/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=c-ares
+pkgver=1.13.0
+pkgrel=0
+pkgdesc="An asynchronously DNS/names resolver library"
+url="http://c-ares.haxx.se/"
+arch="all"
+license="MIT"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc $pkgname-dev"
+options="!checkroot"
+source="http://c-ares.haxx.se/download/$pkgname-$pkgver.tar.gz"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$_builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-shared
+ make
+}
+
+check() {
+ cd "$_builddir"
+
+ # This is only needed for < 1.14.0, where the .sh file was not
+ # distributed properly - see https://da.gd/carestest
+ echo "#!/bin/true" > test/fuzzcheck.sh
+ chmod a+x test/fuzzcheck.sh
+
+ make -C test check
+}
+
+package() {
+ cd "$_builddir"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="4a7942e754673f5b8d55a7471e31b0f390e8324b14c12077580c956147fad4d165c7fe8a3190199b1add95c710ceeb1a7957706d4f0d6299d39c5dddc719bd9d c-ares-1.13.0.tar.gz"
diff --git a/harmony/ca-certificates/APKBUILD b/harmony/ca-certificates/APKBUILD
new file mode 100644
index 000000000..81194471e
--- /dev/null
+++ b/harmony/ca-certificates/APKBUILD
@@ -0,0 +1,54 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=ca-certificates
+pkgver=20170801
+pkgrel=0
+pkgdesc="Common CA certificates PEM files"
+url="https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/"
+arch="all"
+license="MPL 2.0 GPL2+"
+depends=""
+makedepends_build="python3"
+makedepends_host="openssl-dev"
+subpackages="$pkgname-doc"
+# c_rehash is either in libcrypto1.0 or openssl depending on package, grr. replace both of them
+replaces="libcrypto1.0 openssl"
+options="!fhs !check"
+triggers="ca-certificates.trigger=/usr/share/ca-certificates:/usr/local/share/ca-certificates:/etc/ssl/certs:/etc/ca-certificates/update.d"
+install="$pkgname.post-deinstall"
+source="https://git.alpinelinux.org/cgit/ca-certificates/snapshot/ca-certificates-$pkgver.tar.bz2"
+builddir="$srcdir/ca-certificates-$pkgver"
+
+build() {
+ cd "$builddir"
+ make
+}
+
+package() {
+ cd "$builddir"
+ make install DESTDIR="$pkgdir"
+
+ (
+ echo "# Automatically generated by ${pkgname}-${pkgver}-${pkgrel}"
+ echo "# $(date -u)"
+ echo "# Do not edit."
+ cd "$pkgdir"/usr/share/ca-certificates
+ find . -name '*.crt' | sort | cut -b3-
+ ) > "$pkgdir"/etc/ca-certificates.conf
+
+ mkdir -p "$pkgdir"/etc/apk/protected_paths.d
+ cat > "$pkgdir"/etc/apk/protected_paths.d/ca-certificates.list <<-EOF
+ -etc/ssl/certs/ca-certificates.crt
+ -etc/ssl/certs/ca-cert-*.pem
+ -etc/ssl/certs/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[r0-9]*
+ EOF
+
+ cat > "$pkgdir"/etc/ca-certificates/update.d/certhash <<-EOF
+ #!/bin/sh
+ exec /usr/bin/c_rehash /etc/ssl/certs
+ EOF
+ chmod +x "$pkgdir"/etc/ca-certificates/update.d/certhash
+}
+
+sha512sums="2b3de9f4ed1ae2ee66d428598f5878e3c773a7475102a234332c1430e202fa1d23889365a725a1aef3531c8c56718d206f95e02284af994d2330b3fc92f96ea2 ca-certificates-20170801.tar.bz2"
diff --git a/harmony/ca-certificates/ca-certificates.post-deinstall b/harmony/ca-certificates/ca-certificates.post-deinstall
new file mode 100644
index 000000000..ead634716
--- /dev/null
+++ b/harmony/ca-certificates/ca-certificates.post-deinstall
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# clean up broken symlinks and ca-certificates.crt store
+find -L /etc/ssl/certs -maxdepth 1 \( -type l -o -name ca-certificates.crt \) \
+ -delete
+rmdir /etc/ssl/certs 2>/dev/null || true
+
diff --git a/harmony/ca-certificates/ca-certificates.trigger b/harmony/ca-certificates/ca-certificates.trigger
new file mode 100644
index 000000000..eff198163
--- /dev/null
+++ b/harmony/ca-certificates/ca-certificates.trigger
@@ -0,0 +1,3 @@
+#!/bin/sh
+/usr/sbin/update-ca-certificates --fresh &> /dev/null
+exit 0
diff --git a/harmony/check/APKBUILD b/harmony/check/APKBUILD
new file mode 100644
index 000000000..09af1b010
--- /dev/null
+++ b/harmony/check/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
+# Maintainer: Fabian Affolter <fabian@affolter-engineering.ch>
+pkgname=check
+pkgver=0.12.0
+pkgrel=1
+pkgdesc="A unit test framework for C"
+url="https://libcheck.github.io/check/"
+arch="all"
+license="LGPL2+"
+makedepends="pkgconfig"
+checkdepends="diffutils"
+subpackages="$pkgname-doc $pkgname-dev"
+source="https://github.com/libcheck/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ # NOTE: disabled forking due to hardened
+ # https://github.com/libcheck/check/issues/138
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-fork
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="403454d166ddd4e25f96d6c52028f4173f4a5ad4a249dd782e3a8d5db1ad0178956d74577cf0d4c963a5a7d09077a59042a74f74d6b528b7212e18ab5def1dd9 check-0.12.0.tar.gz"
diff --git a/harmony/cmake/APKBUILD b/harmony/cmake/APKBUILD
new file mode 100644
index 000000000..b89114090
--- /dev/null
+++ b/harmony/cmake/APKBUILD
@@ -0,0 +1,59 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=cmake
+pkgver=3.9.5
+pkgrel=0
+pkgdesc="CMake is a cross-platform open-source make system"
+url="http://www.cmake.org"
+arch="all"
+license="CMake"
+makedepends="ncurses-dev curl-dev expat-dev zlib-dev bzip2-dev libarchive-dev
+ libuv-dev xz-dev rhash-dev"
+options="!checkroot"
+checkdepends="musl-utils file"
+subpackages="$pkgname-doc"
+
+case $pkgver in
+*.*.*.*) _v=v${pkgver%.*.*};;
+*.*.*) _v=v${pkgver%.*};;
+esac
+
+source="http://www.cmake.org/files/$_v/cmake-${pkgver}.tar.gz"
+builddir="$srcdir/$pkgname-$pkgver"
+
+_parallel_opt() {
+ local i n
+ for i in $MAKEOPTS; do
+ case "$i" in
+ -j*) n=${i#-j};;
+ esac;
+ done
+ [ -n "$n" ] && echo "--parallel $n"
+}
+
+build() {
+ cd "$builddir"
+ # jsoncpp needs cmake to build so to avoid recursive build
+ # dependency, we use the bundled version of jsoncpp
+ ./bootstrap \
+ --prefix=/usr \
+ --mandir=/share/man \
+ --datadir=/share/$pkgname \
+ --docdir=/share/doc/$pkgname \
+ --system-libs \
+ --no-system-jsoncpp \
+ $(_parallel_opt)
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE bin/ctest
+}
+
+package() {
+ cd $startdir/src/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="71a0848a0c7048c210fe16fbd2b0c2870bd4c2140098225e94fac13a53059f4ae610139115ab8c153989886baa087d506b9ffbc7b91ddc157b0c85e3223828a0 cmake-3.9.5.tar.gz"
diff --git a/harmony/coreutils/051_all_coreutils-mangen.patch b/harmony/coreutils/051_all_coreutils-mangen.patch
new file mode 100644
index 000000000..388924d06
--- /dev/null
+++ b/harmony/coreutils/051_all_coreutils-mangen.patch
@@ -0,0 +1,120 @@
+--- coreutils-8.27/Makefile.in.old 2017-03-08 23:24:51.000000000 -0600
++++ coreutils-8.27/Makefile.in 2017-08-24 23:01:09.582964705 -0500
+@@ -14647,117 +14647,6 @@
+ distclean-local:
+ test x$(srcdir) = x$(builddir) || rm -f $(ALL_MANS)
+
+-$(ALL_MANS): $(mandeps)
+-# Most prog.1 man pages depend on src/prog. List the exceptions:
+-@SINGLE_BINARY_FALSE@man/install.1: src/ginstall$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/test.1: src/[$(EXEEXT)
+-
+-@SINGLE_BINARY_FALSE@man/arch.1: src/arch$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/b2sum.1: src/b2sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/base32.1: src/base32$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/base64.1: src/base64$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/basename.1: src/basename$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/cat.1: src/cat$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/chcon.1: src/chcon$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/chgrp.1: src/chgrp$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/chmod.1: src/chmod$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/chown.1: src/chown$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/chroot.1: src/chroot$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/cksum.1: src/cksum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/comm.1: src/comm$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/coreutils.1: src/coreutils$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/cp.1: src/cp$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/csplit.1: src/csplit$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/cut.1: src/cut$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/date.1: src/date$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/dd.1: src/dd$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/df.1: src/df$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/dir.1: src/dir$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/dircolors.1: src/dircolors$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/dirname.1: src/dirname$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/du.1: src/du$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/echo.1: src/echo$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/env.1: src/env$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/expand.1: src/expand$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/expr.1: src/expr$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/factor.1: src/factor$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/false.1: src/false$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/fmt.1: src/fmt$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/fold.1: src/fold$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/groups.1: src/groups$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/head.1: src/head$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/hostid.1: src/hostid$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/hostname.1: src/hostname$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/id.1: src/id$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/join.1: src/join$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/kill.1: src/kill$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/link.1: src/link$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/ln.1: src/ln$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/logname.1: src/logname$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/ls.1: src/ls$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/md5sum.1: src/md5sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/mkdir.1: src/mkdir$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/mkfifo.1: src/mkfifo$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/mknod.1: src/mknod$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/mktemp.1: src/mktemp$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/mv.1: src/mv$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/nice.1: src/nice$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/nl.1: src/nl$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/nohup.1: src/nohup$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/nproc.1: src/nproc$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/numfmt.1: src/numfmt$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/od.1: src/od$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/paste.1: src/paste$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/pathchk.1: src/pathchk$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/pinky.1: src/pinky$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/pr.1: src/pr$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/printenv.1: src/printenv$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/printf.1: src/printf$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/ptx.1: src/ptx$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/pwd.1: src/pwd$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/readlink.1: src/readlink$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/realpath.1: src/realpath$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/rm.1: src/rm$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/rmdir.1: src/rmdir$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/runcon.1: src/runcon$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/seq.1: src/seq$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sha1sum.1: src/sha1sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sha224sum.1: src/sha224sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sha256sum.1: src/sha256sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sha384sum.1: src/sha384sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sha512sum.1: src/sha512sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/shred.1: src/shred$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/shuf.1: src/shuf$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sleep.1: src/sleep$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sort.1: src/sort$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/split.1: src/split$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/stat.1: src/stat$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/stdbuf.1: src/stdbuf$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/stty.1: src/stty$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sum.1: src/sum$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/sync.1: src/sync$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/tac.1: src/tac$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/tail.1: src/tail$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/tee.1: src/tee$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/timeout.1: src/timeout$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/touch.1: src/touch$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/tr.1: src/tr$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/true.1: src/true$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/truncate.1: src/truncate$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/tsort.1: src/tsort$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/tty.1: src/tty$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/uname.1: src/uname$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/unexpand.1: src/unexpand$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/uniq.1: src/uniq$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/unlink.1: src/unlink$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/uptime.1: src/uptime$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/users.1: src/users$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/vdir.1: src/vdir$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/wc.1: src/wc$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/who.1: src/who$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/whoami.1: src/whoami$(EXEEXT)
+-@SINGLE_BINARY_FALSE@man/yes.1: src/yes$(EXEEXT)
+-
+ .x.1:
+ $(AM_V_GEN)name=`echo $@ | sed 's|.*/||; s|\.1$$||'` || exit 1; \
+ case $$name in \
diff --git a/harmony/coreutils/APKBUILD b/harmony/coreutils/APKBUILD
new file mode 100644
index 000000000..c92568720
--- /dev/null
+++ b/harmony/coreutils/APKBUILD
@@ -0,0 +1,79 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=coreutils
+pkgver=8.28
+pkgrel=0
+pkgdesc="The basic file, shell and text manipulation utilities"
+url="http://www.gnu.org/software/coreutils/"
+arch="all"
+license="GPL3+"
+options="!checkroot"
+makedepends="bash acl-dev attr-dev gettext-dev"
+[ ${CBUILD} == ${CHOST} ] && makedepends="$makedepends perl"
+subpackages="$pkgname-doc"
+[ ${CBUILD} == ${CHOST} ] && subpackages="$subpackages $pkgname-lang"
+install="$pkgname.post-deinstall"
+source="http://ftp.gnu.org/gnu/coreutils/$pkgname-$pkgver.tar.xz
+ disable-mbrtowc-test.patch
+ localename-test-fix.patch
+ "
+[ ${CBUILD} != ${CHOST} ] && source="$source
+ 051_all_coreutils-mangen.patch
+ "
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ LIBS="-lrt" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-nls \
+ --without-gmp \
+ --enable-no-install-program=hostname,su,kill,uptime \
+ --with-packager="Adélie" \
+ --with-packager-bug-reports="https://bts.adelielinux.org/"
+ if [ ${CBUILD} != ${CHOST} ]; then
+ set -- man/*.x
+ touch ${@/%x/1}
+ fi
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/usr/lib/charset.alias
+ rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true
+
+ install -d "$pkgdir"/bin "$pkgdir"/usr/sbin
+ cd "$pkgdir"/usr/bin/
+
+ # binaries that busybox puts in /bin
+ mv base64 cat chgrp chmod chown cp date dd df 'echo' false ln ls \
+ mkdir mknod mktemp mv nice printenv pwd rm rmdir sleep stat \
+ stty sync touch true uname \
+ "$pkgdir"/bin
+
+ mv chroot "$pkgdir"/usr/sbin/
+}
+
+sha512sums="1e592d0dd03b9227bf92af9a82bed6dc3bcbee46e984c7fb09833dea0962e86b309aa34d5e43823b73d4522c066bfa5cdc8ec694aa190910fb246ff32ceb63a1 coreutils-8.28.tar.xz
+532ef8210261437855ba3e2fc72ec57b0e0252b2b0f7817990c9629613ece2cdd86cf30aa049f3cff6fbda12ed3bb9a0db3a3642475378ae44ce319bdf005d9b disable-mbrtowc-test.patch
+00a517c7e3e2206ba7a60f9126d28ae1d549e86da62b48f32250d49c2caf896c53fc3d803729b544a1cfb1609dd8cb7cb4b3473defef5d1e2c154ed1de6bc5de localename-test-fix.patch"
+
+[ ${CBUILD} != ${CHOST} ] && sha512sums="$sha512sums
+bae804f057252c25452ac178c545dc2c4b4775cbfbdcfd4775edd1a4ed6507882bfac39e2b11ad01b74230ca48d761bf62f11bde5bcbc35a6e5a61cbe4a46e36 051_all_coreutils-mangen.patch
+"
+return 0
diff --git a/harmony/coreutils/coreutils.post-deinstall b/harmony/coreutils/coreutils.post-deinstall
new file mode 100644
index 000000000..24e0bdf25
--- /dev/null
+++ b/harmony/coreutils/coreutils.post-deinstall
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# other post scripts might need rm so we don't wait for the trigger
+exec /bin/busybox --install -s
diff --git a/harmony/coreutils/disable-mbrtowc-test.patch b/harmony/coreutils/disable-mbrtowc-test.patch
new file mode 100644
index 000000000..d338e0324
--- /dev/null
+++ b/harmony/coreutils/disable-mbrtowc-test.patch
@@ -0,0 +1,10 @@
+--- coreutils-8.27/gnulib-tests/test-mbrtowc5.sh.old 2016-12-31 13:54:43.000000000 +0000
++++ coreutils-8.27/gnulib-tests/test-mbrtowc5.sh 2017-07-30 17:29:50.879924130 +0000
+@@ -1,6 +1,2 @@
+ #!/bin/sh
+-# Test whether the POSIX locale has encoding errors.
+-LC_ALL=C \
+-./test-mbrtowc${EXEEXT} 5 || exit
+-LC_ALL=POSIX \
+-./test-mbrtowc${EXEEXT} 5
++exit 77
diff --git a/harmony/coreutils/localename-test-fix.patch b/harmony/coreutils/localename-test-fix.patch
new file mode 100644
index 000000000..f90d11866
--- /dev/null
+++ b/harmony/coreutils/localename-test-fix.patch
@@ -0,0 +1,34 @@
+--- coreutils-8.27/gnulib-tests/localename.c.old 2016-12-31 13:54:43.000000000 +0000
++++ coreutils-8.27/gnulib-tests/localename.c 2017-07-30 16:40:47.098541270 +0000
+@@ -40,7 +40,7 @@
+ # if defined __APPLE__ && defined __MACH__
+ # include <xlocale.h>
+ # endif
+-# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || defined __CYGWIN__
++# if (defined __linux__ && !defined __UCLIBC__) || defined __CYGWIN__
+ # include <langinfo.h>
+ # endif
+ # if !defined IN_LIBINTL
+@@ -2692,16 +2692,19 @@
+ locale_t thread_locale = uselocale (NULL);
+ if (thread_locale != LC_GLOBAL_LOCALE)
+ {
+-# if __GLIBC__ >= 2 && !defined __UCLIBC__
++# if defined(_NL_LOCALE_NAME)
++ const char *name = nl_langinfo(_NL_LOCALE_NAME(category));
++# if __GLIBC__ >= 2 && !defined __UCLIBC__
+ /* Work around an incorrect definition of the _NL_LOCALE_NAME macro in
+ glibc < 2.12.
+ See <http://sourceware.org/bugzilla/show_bug.cgi?id=10968>. */
+- const char *name =
+- nl_langinfo (_NL_ITEM ((category), _NL_ITEM_INDEX (-1)));
++ if (name[0] == '\0')
++ name = nl_langinfo (_NL_ITEM ((category), _NL_ITEM_INDEX (-1)));
+ if (name[0] == '\0')
+ /* Fallback code for glibc < 2.4, which did not implement
+ nl_langinfo (_NL_LOCALE_NAME (category)). */
+ name = thread_locale->__names[category];
++# endif
+ return name;
+ # elif defined __FreeBSD__ || (defined __APPLE__ && defined __MACH__)
+ /* FreeBSD, Mac OS X */
diff --git a/harmony/coreutils/no-doc.patch b/harmony/coreutils/no-doc.patch
new file mode 100644
index 000000000..a1d74623b
--- /dev/null
+++ b/harmony/coreutils/no-doc.patch
@@ -0,0 +1,22 @@
+--- coreutils-8.27/Makefile.in.old 2017-03-09 05:24:51.000000000 +0000
++++ coreutils-8.27/Makefile.in 2017-06-22 03:07:59.568716258 +0000
+@@ -2363,7 +2363,7 @@
+ }
+ man1dir = $(mandir)/man1
+ NROFF = nroff
+-MANS = $(man1_MANS)
++MANS =
+ HEADERS = $(noinst_HEADERS)
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+--- coreutils-8.27/Makefile.in.old 2017-06-22 03:08:55.821951666 +0000
++++ coreutils-8.27/Makefile.in 2017-06-22 03:19:51.770820411 +0000
+@@ -12192,7 +12192,7 @@
+
+ info-am: $(INFO_DEPS)
+
+-install-data-am: install-info-am install-man
++install-data-am: install-info-am
+
+ install-dvi: install-dvi-recursive
+
diff --git a/harmony/coreutils/printf-musl.patch b/harmony/coreutils/printf-musl.patch
new file mode 100644
index 000000000..28a951635
--- /dev/null
+++ b/harmony/coreutils/printf-musl.patch
@@ -0,0 +1,53 @@
+From ad5c14dcadd4603363e68da960ed0101b61439bd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
+Date: Sat, 12 Aug 2017 23:53:33 -0700
+Subject: [PATCH] tests: fix false failure with large printf formats
+
+* tests/misc/printf-surprise.sh: With musl libc the
+large printf format does succeed, outputting data.
+To avoid SIGPIPE being generated we ignore that signal
+and then handle the subsequent EPIPE error.
+Reported by A. Wilcox
+---
+ tests/misc/printf-surprise.sh | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/tests/misc/printf-surprise.sh b/tests/misc/printf-surprise.sh
+index 2edd34c..46c0d8f 100755
+--- a/tests/misc/printf-surprise.sh
++++ b/tests/misc/printf-surprise.sh
+@@ -50,6 +50,9 @@ vm=$(get_min_ulimit_v_ env $prog %20f 0) \
+
+ mkfifo_or_skip_ fifo
+
++(trap '' PIPE && yes | :) 2>&1 | grep -qF 'Broken pipe' ||
++ skip_ 'trapping SIGPIPE is not supported'
++
+ # Disable MALLOC_PERTURB_, to avoid triggering this bug
+ # https://bugs.debian.org/481543#77
+ export MALLOC_PERTURB_=0
+@@ -60,11 +63,11 @@ cleanup_() { kill $pid 2>/dev/null && wait $pid; }
+ head -c 10 fifo > out & pid=$!
+
+ # Trigger large mem allocation failure
+-( ulimit -v $vm && env $prog %20000000f 0 2>err-msg > fifo )
++( trap '' PIPE && ulimit -v $vm && env $prog %20000000f 0 2>err-msg > fifo )
+ exit=$?
+
+ # Map this longer, and rarer, diagnostic to the common one.
+-# printf: cannot perform formatted output: Cannot allocate memory" \
++# printf: cannot perform formatted output: Cannot allocate memory"
+ sed 's/cannot perform .*/write error/' err-msg > k && mv k err-msg
+ err_msg=$(tr '\n' : < err-msg)
+
+@@ -81,6 +84,7 @@ n_out=$(wc -c < out)
+
+ case $n_out:$diagnostic:$exit in
+ 10:n:0) ;; # ok, succeeds w/no diagnostic: FreeBSD 6.1
++ 10:y:1) ;; # ok, fails with EPIPE diagnostic: musl libc
+ 0:y:1) ;; # ok, glibc-2.8 and newer, when printf(3) fails with ENOMEM
+
+ # With MALLOC_PERTURB_=0, this no longer happens.
+--
+2.9.3
+
diff --git a/harmony/coreutils/seq-write-error.patch b/harmony/coreutils/seq-write-error.patch
new file mode 100644
index 000000000..4892a82ec
--- /dev/null
+++ b/harmony/coreutils/seq-write-error.patch
@@ -0,0 +1,45 @@
+From 1e1dbbe0f95c7170009f3ba4d8380c1b98ff53c8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
+Date: Sun, 13 Aug 2017 00:18:43 -0700
+Subject: [PATCH] seq: produce consistent error messages upon write error
+
+* src/seq.c (io_error): Use the same error message as would
+be generated at exit time when closing the stdout stream.
+The inconsistency was added with commit v8.25-26-gc92585b.
+This was noticed due to an inconsistency in the expected
+error message generated by seq on musl libc.
+Reported by A. Wilcox.
+---
+ src/seq.c | 2 +-
+ tests/misc/seq-epipe.sh | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/seq.c b/src/seq.c
+index bb191ba..5e5b381 100644
+--- a/src/seq.c
++++ b/src/seq.c
+@@ -284,7 +284,7 @@ io_error (void)
+ {
+ /* FIXME: consider option to silently ignore errno=EPIPE */
+ clearerr (stdout);
+- die (EXIT_FAILURE, errno, _("standard output"));
++ die (EXIT_FAILURE, errno, _("write error"));
+ }
+
+ /* Actually print the sequence of numbers in the specified range, with the
+diff --git a/tests/misc/seq-epipe.sh b/tests/misc/seq-epipe.sh
+index edbd563..69dd75d 100755
+--- a/tests/misc/seq-epipe.sh
++++ b/tests/misc/seq-epipe.sh
+@@ -33,7 +33,7 @@ compare exp code || fail=1
+
+ # The error message must begin with "standard output:"
+ # (but don't hard-code the strerror text)
+-grep '^seq: standard output: ' err \
++grep '^seq: write error: ' err \
+ || { warn_ "seq emitted incorrect error on EPIPE"; \
+ cat err;\
+ fail=1; }
+--
+2.9.3
+
diff --git a/harmony/coreutils/sort-debug-locale.patch b/harmony/coreutils/sort-debug-locale.patch
new file mode 100644
index 000000000..27921abbd
--- /dev/null
+++ b/harmony/coreutils/sort-debug-locale.patch
@@ -0,0 +1,79 @@
+From b938d8966c3d1afec9730d403fd6a6eb4d856b85 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
+Date: Sun, 13 Aug 2017 00:45:32 -0700
+Subject: [PATCH] sort: handle musl locale differences in --debug reporting
+
+* src/sort.c (main): Don't assume hard_LC_COLLATE implies
+a successful setting of the locale as musl defaults to
+UTF8 when failing to set the specified locale.
+* tests/misc/sort-debug-warn.sh: Adjust for the now
+separated locale debug info and map the musl specific
+message back to the common case.
+Reported by A. Wilcox.
+---
+ src/sort.c | 17 +++++++++--------
+ tests/misc/sort-debug-warn.sh | 9 +++++++--
+ 2 files changed, 16 insertions(+), 10 deletions(-)
+
+diff --git a/src/sort.c b/src/sort.c
+index 015e40e..ba6ceac 100644
+--- a/src/sort.c
++++ b/src/sort.c
+@@ -4675,18 +4675,19 @@ main (int argc, char **argv)
+
+ /* Always output the locale in debug mode, since this
+ is such a common source of confusion. */
++
++ /* OpenBSD can only set some categories with LC_ALL above,
++ so set LC_COLLATE explicitly to flag errors. */
++ if (locale_ok)
++ locale_ok = !! setlocale (LC_COLLATE, "");
++ if (! locale_ok)
++ error (0, 0, "%s", _("failed to set locale"));
+ if (hard_LC_COLLATE)
+ error (0, 0, _("using %s sorting rules"),
+ quote (setlocale (LC_COLLATE, NULL)));
+ else
+- {
+- /* OpenBSD can only set some categories with LC_ALL above,
+- so set LC_COLLATE explicitly to flag errors. */
+- if (locale_ok)
+- locale_ok = !! setlocale (LC_COLLATE, "");
+- error (0, 0, "%s%s", locale_ok ? "" : _("failed to set locale; "),
+- _("using simple byte comparison"));
+- }
++ error (0, 0, "%s", _("using simple byte comparison"));
++
+ key_warnings (&gkey, gkey_only);
+ }
+
+diff --git a/tests/misc/sort-debug-warn.sh b/tests/misc/sort-debug-warn.sh
+index 3602c84..8119693 100755
+--- a/tests/misc/sort-debug-warn.sh
++++ b/tests/misc/sort-debug-warn.sh
+@@ -71,7 +71,8 @@ sort: using simple byte comparison
+ 17
+ sort: using simple byte comparison
+ 18
+-sort: failed to set locale; using simple byte comparison
++sort: failed to set locale
++sort: using simple byte comparison
+ EOF
+
+ echo 1 >> out
+@@ -109,7 +110,11 @@ sort -rM --debug /dev/null 2>>out #no warning
+ echo 17 >> out
+ sort -rM -k1,1 --debug /dev/null 2>>out #no warning
+ echo 18 >> out
+-LC_ALL=missing sort --debug /dev/null 2>>out
++LC_ALL=missing sort --debug /dev/null 2>>out.t
++# musl libc accepts "missing" and implicitly uses UTF8,
++# so adjust the expected message accordingly.
++sed 's/using .*missing.* sorting rules/using simple byte comparison/' \
++ out.t >>out
+
+ compare exp out || fail=1
+
+--
+2.9.3
+
diff --git a/harmony/curl/APKBUILD b/harmony/curl/APKBUILD
new file mode 100644
index 000000000..fd20e55dd
--- /dev/null
+++ b/harmony/curl/APKBUILD
@@ -0,0 +1,93 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=curl
+pkgver=7.56.1
+pkgrel=0
+pkgdesc="An URL retrival utility and library"
+url="http://curl.haxx.se"
+arch="all"
+license="MIT"
+depends="ca-certificates"
+makedepends_build="groff perl"
+makedepends_host="zlib-dev openssl-dev libssh2-dev"
+makedepends="$makedepends_build $makedepends_host"
+source="http://curl.haxx.se/download/$pkgname-$pkgver.tar.bz2
+ "
+subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev libcurl"
+
+# secfixes:
+# 7.56.1-r0:
+# - CVE-2017-1000257
+# 7.55.0-r0:
+# - CVE-2017-1000099
+# - CVE-2017-1000100
+# - CVE-2017-1000101
+# 7.54.0-r0:
+# - CVE-2017-7468
+# 7.53.1-r2:
+# - CVE-2017-7407
+# 7.53.0:
+# - CVE-2017-2629
+# 7.52.1:
+# - CVE-2016-9594
+# 7.51.0:
+# - CVE-2016-8615
+# - CVE-2016-8616
+# - CVE-2016-8617
+# - CVE-2016-8618
+# - CVE-2016-8619
+# - CVE-2016-8620
+# - CVE-2016-8621
+# - CVE-2016-8622
+# - CVE-2016-8623
+# - CVE-2016-8624
+# - CVE-2016-8625
+# 7.50.3:
+# - CVE-2016-7167
+# 7.50.2:
+# - CVE-2016-7141
+# 7.50.1:
+# - CVE-2016-5419
+# - CVE-2016-5420
+# - CVE-2016-5421
+# 7.36.0:
+# - CVE-2014-0138
+# - CVE-2014-0139
+
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --enable-ipv6 \
+ --enable-unix-sockets \
+ --without-libidn \
+ --without-libidn2 \
+ --disable-ldap \
+ --with-pic \
+ || return 1
+ make || return 1
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" \
+ -C "$builddir" install || return 1
+}
+
+libcurl() {
+ pkgdesc="The multiprotocol file transfer library"
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/lib "$subpkgdir"/usr
+}
+
+sha512sums="f8a602e6890b2791ea9199c80801ffd027980de3733d4ab001ee80b5167f840cc821c6fe7852087c88a471edc9d3f328cf660af3e2c6f7139d6c8de62b0ade68 curl-7.56.1.tar.bz2"
diff --git a/harmony/curl/curl-do-bounds-check-using-a-double-comparison.patch b/harmony/curl/curl-do-bounds-check-using-a-double-comparison.patch
new file mode 100644
index 000000000..34e2b6c71
--- /dev/null
+++ b/harmony/curl/curl-do-bounds-check-using-a-double-comparison.patch
@@ -0,0 +1,32 @@
+From 45a560390c4356bcb81d933bbbb229c8ea2acb63 Mon Sep 17 00:00:00 2001
+From: Adam Sampson <ats@offog.org>
+Date: Wed, 9 Aug 2017 14:11:17 +0100
+Subject: [PATCH] curl: do bounds check using a double comparison
+
+The fix for this in 8661a0aacc01492e0436275ff36a21734f2541bb wasn't
+complete: if the parsed number in num is larger than will fit in a long,
+the conversion is undefined behaviour (causing test1427 to fail for me
+on IA32 with GCC 7.1, although it passes on AMD64 and ARMv7). Getting
+rid of the cast means the comparison will be done using doubles.
+
+It might make more sense for the max argument to also be a double...
+
+Fixes #1750
+Closes #1749
+---
+ src/tool_paramhlp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tool_paramhlp.c b/src/tool_paramhlp.c
+index b9dedc989e..85c5e79a7e 100644
+--- a/src/tool_paramhlp.c
++++ b/src/tool_paramhlp.c
+@@ -218,7 +218,7 @@ static ParameterError str2double(double *val, const char *str, long max)
+ num = strtod(str, &endptr);
+ if(errno == ERANGE)
+ return PARAM_NUMBER_TOO_LARGE;
+- if((long)num > max) {
++ if(num > max) {
+ /* too large */
+ return PARAM_NUMBER_TOO_LARGE;
+ }
diff --git a/harmony/diffutils/APKBUILD b/harmony/diffutils/APKBUILD
new file mode 100644
index 000000000..19331ecd8
--- /dev/null
+++ b/harmony/diffutils/APKBUILD
@@ -0,0 +1,50 @@
+# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
+pkgname=diffutils
+pkgver=3.6
+pkgrel=1
+pkgdesc="Show differences among files"
+subpackages="$pkgname-doc"
+url="http://www.gnu.org/software/diffutils/"
+arch="all"
+license="GPL3+"
+source="http://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.xz
+ disable-mbrtowc-test.patch
+ "
+builddir=$srcdir/$pkgname-$pkgver
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+
+ # fix eglibc-2.16 build issue
+ sed -i -e '/gets is a/d' \
+ lib/stdio.in.h
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-nls
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make install DESTDIR=$pkgdir
+
+ rm -rf "$pkgdir"/usr/lib/charset.alias
+ rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true
+}
+
+sha512sums="3c159ff1cb7c901b0a57518483566b5740ca3c45aeb8d3004089f052975481db52994cc18592c502c68b0d2a1e22f1f7830f0d8dd9a9ed86de96e28cce9f70c1 diffutils-3.6.tar.xz
+2602dabf0ac52a273b84160032416613da7ad111541fe25466cf9d4ce1eb2630f0ba0cb0b3013967965d8359a11a5f390f0486b4526b35516d9de1c8975f720d disable-mbrtowc-test.patch"
diff --git a/harmony/diffutils/disable-mbrtowc-test.patch b/harmony/diffutils/disable-mbrtowc-test.patch
new file mode 100644
index 000000000..1461a4093
--- /dev/null
+++ b/harmony/diffutils/disable-mbrtowc-test.patch
@@ -0,0 +1,10 @@
+--- diffutils-3.6/gnulib-tests/test-mbrtowc5.sh.old 2016-12-31 13:54:43.000000000 +0000
++++ diffutils-3.6/gnulib-tests/test-mbrtowc5.sh 2017-07-30 17:29:50.879924130 +0000
+@@ -1,6 +1,2 @@
+ #!/bin/sh
+-# Test whether the POSIX locale has encoding errors.
+-LC_ALL=C \
+-./test-mbrtowc${EXEEXT} 5 || exit
+-LC_ALL=POSIX \
+-./test-mbrtowc${EXEEXT} 5
++exit 77
diff --git a/harmony/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch b/harmony/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
new file mode 100644
index 000000000..93e3ac995
--- /dev/null
+++ b/harmony/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
@@ -0,0 +1,55 @@
+From ab11be0becb90542f10d5713659b559842c53af2 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 29 Mar 2016 15:15:17 +0200
+Subject: [PATCH] libavutil: clean up unused FF_SYMVER macro
+
+There is nothing using it since commit d63443b9 (lavc: drop the
+av_fast_{re,m}alloc compatibility wrappers).
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ libavutil/internal.h | 28 ----------------------------
+ 1 file changed, 28 deletions(-)
+
+diff --git a/libavutil/internal.h b/libavutil/internal.h
+index 61784b5..69d63d5 100644
+--- a/libavutil/internal.h
++++ b/libavutil/internal.h
+@@ -177,34 +177,6 @@
+ #endif
+
+ /**
+- * Define a function with only the non-default version specified.
+- *
+- * On systems with ELF shared libraries, all symbols exported from
+- * FFmpeg libraries are tagged with the name and major version of the
+- * library to which they belong. If a function is moved from one
+- * library to another, a wrapper must be retained in the original
+- * location to preserve binary compatibility.
+- *
+- * Functions defined with this macro will never be used to resolve
+- * symbols by the build-time linker.
+- *
+- * @param type return type of function
+- * @param name name of function
+- * @param args argument list of function
+- * @param ver version tag to assign function
+- */
+-#if HAVE_SYMVER_ASM_LABEL
+-# define FF_SYMVER(type, name, args, ver) \
+- type ff_##name args __asm__ (EXTERN_PREFIX #name "@" ver); \
+- type ff_##name args
+-#elif HAVE_SYMVER_GNU_ASM
+-# define FF_SYMVER(type, name, args, ver) \
+- __asm__ (".symver ff_" #name "," EXTERN_PREFIX #name "@" ver); \
+- type ff_##name args; \
+- type ff_##name args
+-#endif
+-
+-/**
+ * Return NULL if a threading library has not been enabled.
+ * Used to disable threading functions in AVCodec definitions
+ * when not needed.
+--
+2.7.4
+
diff --git a/harmony/ffmpeg/APKBUILD b/harmony/ffmpeg/APKBUILD
new file mode 100644
index 000000000..84820eb6f
--- /dev/null
+++ b/harmony/ffmpeg/APKBUILD
@@ -0,0 +1,103 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Jakub Skrzypnik <j.skrzypnik@openmailbox.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=ffmpeg
+pkgver=3.4
+pkgrel=1
+pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
+url="http://ffmpeg.org/"
+arch="all"
+license="GPL"
+options="!check" # Test suite requires proper licensing headers on all files,
+ # which upstream does not provide.
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
+makedepends="gnutls-dev lame-dev libvorbis-dev xvidcore-dev zlib-dev libvdpau-dev
+ imlib2-dev libtheora-dev coreutils bzip2-dev perl-dev libvpx-dev
+ pulseaudio-dev sdl2-dev libxfixes-dev libva-dev alsa-lib-dev rtmpdump-dev
+ v4l-utils-dev yasm opus-dev x265-dev xz-dev freetype-dev speex-dev
+ ladspa-dev libcdio-dev libcdio-paranoia-dev wavpack-dev libwebp-dev"
+source="http://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz
+ 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 3.3.4-r0:
+# - CVE-2017-14054
+# - CVE-2017-14055
+# - CVE-2017-14056
+# - CVE-2017-14057
+# - CVE-2017-14058
+# - CVE-2017-14059
+# - CVE-2017-14169
+# - CVE-2017-14170
+# - CVE-2017-14171
+# - CVE-2017-14222
+# - CVE-2017-14223
+# - CVE-2017-14225
+
+build() {
+ local _dbg="--disable-debug"
+ local _asm=""
+ [ -n "$DEBUG" ] && _dbg="--enable-debug"
+
+ case "$CARCH" in
+ x86 | arm*) _asm="--disable-asm" ;;
+ esac
+
+ cd "$builddir"
+ ./configure \
+ --prefix=/usr \
+ --enable-avresample \
+ --enable-avfilter \
+ --enable-gnutls \
+ --enable-gpl \
+ --enable-libmp3lame \
+ --enable-librtmp \
+ --enable-libvorbis \
+ --enable-libvpx \
+ --enable-libxvid \
+ --enable-libx265 \
+ --enable-libtheora \
+ --enable-libv4l2 \
+ --enable-postproc \
+ --enable-pic \
+ --enable-pthreads \
+ --enable-shared \
+ --enable-libxcb \
+ --disable-stripping \
+ --disable-static \
+ --enable-vaapi \
+ --enable-vdpau \
+ --enable-libopus \
+ --enable-libcdio \
+ --enable-ladspa \
+ --enable-lzma \
+ --enable-libspeex \
+ --enable-libfreetype \
+ --enable-libwavpack \
+ --enable-libwebp \
+ --enable-libpulse \
+ $_asm $_dbg
+ make
+ ${CC:-gcc} -o tools/qt-faststart $CFLAGS tools/qt-faststart.c
+ make doc/ffmpeg.1 doc/ffplay.1 doc/ffserver.1
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install install-man
+ install -D -m755 tools/qt-faststart "$pkgdir/usr/bin/qt-faststart"
+# strip --strip-debug "$pkgdir"/usr/lib/*.a
+}
+
+libs() {
+ pkgdesc="Libraries for ffmpeg"
+ replaces="ffmpeg"
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/lib "$subpkgdir"/usr
+}
+
+sha512sums="357445f0152848d43f8a22f1078825bc44adacff9194e12cc78e8b5edac8e826bbdf73dc8b37e0f2a3036125b76b6b9190153760c761e63ebd2452a39e39536f ffmpeg-3.4.tar.xz
+32652e18d4eb231a2e32ad1cacffdf33264aac9d459e0e2e6dd91484fced4e1ca5a62886057b1f0b4b1589c014bbe793d17c78adbaffec195f9a75733b5b18cb 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch"
diff --git a/harmony/freetype/0001-Enable-table-validation-modules.patch b/harmony/freetype/0001-Enable-table-validation-modules.patch
new file mode 100644
index 000000000..3e9451fa8
--- /dev/null
+++ b/harmony/freetype/0001-Enable-table-validation-modules.patch
@@ -0,0 +1,34 @@
+From c3680bf8d38cf759c1e33dcc2d2d51e0a4fea2f9 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 23 Jun 2015 08:40:29 +0200
+Subject: [PATCH 1/3] Enable table validation modules
+
+---
+ modules.cfg | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules.cfg b/modules.cfg
+index f30049c38cc45159..7b8e50fe1b34584a 100644
+--- a/modules.cfg
++++ b/modules.cfg
+@@ -120,7 +120,7 @@ AUX_MODULES += cache
+ # TrueType GX/AAT table validation. Needs ftgxval.c below.
+ #
+ # No FT_CONFIG_OPTION_PIC support.
+-# AUX_MODULES += gxvalid
++AUX_MODULES += gxvalid
+
+ # Support for streams compressed with gzip (files with suffix .gz).
+ #
+@@ -143,7 +143,7 @@ AUX_MODULES += bzip2
+ # OpenType table validation. Needs ftotval.c below.
+ #
+ # No FT_CONFIG_OPTION_PIC support.
+-# AUX_MODULES += otvalid
++AUX_MODULES += otvalid
+
+ # Auxiliary PostScript driver component to share common code.
+ #
+--
+2.9.3
+
diff --git a/harmony/freetype/0002-Enable-subpixel-rendering.patch b/harmony/freetype/0002-Enable-subpixel-rendering.patch
new file mode 100644
index 000000000..dfb57966e
--- /dev/null
+++ b/harmony/freetype/0002-Enable-subpixel-rendering.patch
@@ -0,0 +1,25 @@
+From 96f09f08417887b2618c177bccfb6da2906568d9 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 23 Jun 2015 08:43:07 +0200
+Subject: [PATCH 2/3] Enable subpixel rendering
+
+---
+ include/freetype/config/ftoption.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
+index 90c123ef93e9ea04..67a361dd41e0b026 100644
+--- a/include/freetype/config/ftoption.h
++++ b/include/freetype/config/ftoption.h
+@@ -122,7 +122,7 @@ FT_BEGIN_HEADER
+ /* This is done to allow FreeType clients to run unmodified, forcing */
+ /* them to display normal gray-level anti-aliased glyphs. */
+ /* */
+-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
++#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
+
+ /*************************************************************************/
+--
+2.9.3
+
diff --git a/harmony/freetype/0003-Enable-infinality-subpixel-hinting.patch b/harmony/freetype/0003-Enable-infinality-subpixel-hinting.patch
new file mode 100644
index 000000000..bbfa2a2cd
--- /dev/null
+++ b/harmony/freetype/0003-Enable-infinality-subpixel-hinting.patch
@@ -0,0 +1,27 @@
+From 220e96a9a8d7aff6ad0f0f1aa12c79cdb563331c Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Mon, 29 Aug 2016 08:43:10 +0200
+Subject: [PATCH 3/3] Enable infinality subpixel hinting
+
+---
+ include/freetype/config/ftoption.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
+index 67a361dd41e0b026..c4812862518b66a6 100644
+--- a/include/freetype/config/ftoption.h
++++ b/include/freetype/config/ftoption.h
+@@ -675,8 +675,8 @@ FT_BEGIN_HEADER
+ /* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
+ /* */
+ /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
+-#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2
+-/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */
++/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 */
++#define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 )
+
+
+ /*************************************************************************/
+--
+2.9.3
+
diff --git a/harmony/freetype/0004-Enable-long-PCF-family-names.patch b/harmony/freetype/0004-Enable-long-PCF-family-names.patch
new file mode 100644
index 000000000..675423a7c
--- /dev/null
+++ b/harmony/freetype/0004-Enable-long-PCF-family-names.patch
@@ -0,0 +1,25 @@
+From 62da6a0f7f5cb77859a793863c386c452411e2a6 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Sun, 14 May 2017 18:09:31 +0200
+Subject: [PATCH 4/4] Enable long PCF family names
+
+---
+ include/freetype/config/ftoption.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
+index ebb44acdbbef9a47..0b39b417162707e4 100644
+--- a/include/freetype/config/ftoption.h
++++ b/include/freetype/config/ftoption.h
+@@ -865,7 +865,7 @@ FT_BEGIN_HEADER
+ /* If this option is activated, it can be controlled with the */
+ /* `no-long-family-names' property of the pcf driver module. */
+ /* */
+-/* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */
++#define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
+
+
+ /*************************************************************************/
+--
+2.13.0
+
diff --git a/harmony/freetype/40-memcpy-fix.patch b/harmony/freetype/40-memcpy-fix.patch
new file mode 100644
index 000000000..89e61cd0b
--- /dev/null
+++ b/harmony/freetype/40-memcpy-fix.patch
@@ -0,0 +1,14 @@
+--- ./src/psaux/psobjs.c~ 2006-04-26 16:38:17.000000000 +0200
++++ ./src/psaux/psobjs.c 2006-09-10 15:01:13.000000000 +0200
+@@ -165,6 +165,11 @@
+ return PSaux_Err_Invalid_Argument;
+ }
+
++ if ( length < 0 ) {
++ FT_ERROR(( "ps_table_add: invalid length\n" ));
++ return PSaux_Err_Invalid_Argument;
++ }
++
+ /* grow the base block if needed */
+ if ( table->cursor + length > table->capacity )
+ {
diff --git a/harmony/freetype/APKBUILD b/harmony/freetype/APKBUILD
new file mode 100644
index 000000000..fbb4e0103
--- /dev/null
+++ b/harmony/freetype/APKBUILD
@@ -0,0 +1,59 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=freetype
+pkgver=2.8.1
+pkgrel=2
+pkgdesc="TrueType font rendering library"
+url="https://www.freetype.org/"
+arch="all"
+license="GPL"
+options="!check"
+depends=""
+depends_dev=""
+makedepends="$depends_dev zlib-dev libpng-dev bzip2-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://download.savannah.gnu.org/releases/freetype/freetype-$pkgver.tar.bz2
+ 40-memcpy-fix.patch
+ 0001-Enable-table-validation-modules.patch
+ 0003-Enable-infinality-subpixel-hinting.patch
+ 0004-Enable-long-PCF-family-names.patch
+
+ freetype-profile.sh
+ "
+
+# secfixes:
+# 2.7.1-r1:
+# - CVE-2017-8105
+# - CVE-2017-8287
+
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-static \
+ --with-bzip2 \
+ --with-png
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 "$srcdir"/freetype-profile.sh \
+ "$pkgdir"/etc/profile.d/freetype.sh
+}
+
+sha512sums="ca59e47f0fceeeb9b8032be2671072604d0c79094675df24187829c05e99757d0a48a0f8062d4d688e056f783aa8f6090d732ad116562e94784fccf1339eb823 freetype-2.8.1.tar.bz2
+9981be8a3ea6f2cf856860b87a4e895e4610c9d5ea4beb611815e757e6080e060f6853ace02dd8ea55e5888cdf4bae5ad5eadd2d8a123754bb3c0bfe7ef41dea 40-memcpy-fix.patch
+41a84be2631b53072a76b78c582575aa48b650ee7b00017d018381002bc25df10cf33da4954c95ef50db39f1fa566678e3b4ae9bfee1dfd705423fb53e53e494 0001-Enable-table-validation-modules.patch
+7b52a3d67750d59b2c98e83dab4e0a0ab263142c2ca7bd5f8be5f8fe9cd1dc1f4debad44111c7886665329d8d2a3163756455618a6615df8f85d82bb0372d4dd 0003-Enable-infinality-subpixel-hinting.patch
+64c20fbcbf48372ea35fe2e0dae8fec4be8c601c899a4a71913060c6ea4082a2f41d69701da511e09fee126bf198d560986469e2356bd088d2dd5961f437df63 0004-Enable-long-PCF-family-names.patch
+7100cde5b2ca16bfbe968fce3e2eba5ba49e6ed53792d5db889c8d89e572d7d80da1338ccc9eeb9b243664ca2337467e9f73c1074bee0b34c417f6c7832ed390 freetype-profile.sh"
diff --git a/harmony/freetype/freetype-profile.sh b/harmony/freetype/freetype-profile.sh
new file mode 100644
index 000000000..a4cc6423b
--- /dev/null
+++ b/harmony/freetype/freetype-profile.sh
@@ -0,0 +1,12 @@
+# Subpixel hinting mode can be chosen by setting the right TrueType interpreter
+# version. The available settings are:
+#
+# truetype:interpreter-version=35 # Classic mode (default in 2.6)
+# truetype:interpreter-version=38 # Infinality mode
+# truetype:interpreter-version=40 # Minimal mode (default in 2.7)
+#
+# There are more properties that can be set, separated by whitespace. Please
+# refer to the FreeType documentation for details.
+
+# Uncomment and configure below
+export FREETYPE_PROPERTIES="truetype:interpreter-version=38"
diff --git a/harmony/gamin/APKBUILD b/harmony/gamin/APKBUILD
new file mode 100644
index 000000000..360161d27
--- /dev/null
+++ b/harmony/gamin/APKBUILD
@@ -0,0 +1,58 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=gamin
+pkgver=0.1.10
+pkgrel=11
+pkgdesc="Gamin is a file and directory monitoring system defined to be a subset of the FAM (File Alteration Monitor) system."
+url="http://www.gnome.org/~veillard/gamin"
+arch="all"
+license="GPL"
+subpackages="$pkgname-dev"
+depends=
+makedepends="glib-dev"
+source="http://www.gnome.org/~veillard/$pkgname/sources/$pkgname-$pkgver.tar.gz
+ fix-deprecated-const.patch
+ fix-pthread-mutex.patch"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+prepare() {
+ cd "$_builddir"
+ update_config_sub
+ default_prepare
+}
+
+build() {
+ cd "$_builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-static \
+ --with-threads \
+ --without-python \
+ --disable-debug-api \
+ --disable-debug \
+ --libexecdir=/usr/lib/gamin
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$_builddir"
+ # some kinde of race in the make install which is not solved with -j
+ export MKDIRPROG="mkdir -p"
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="b4ec549e57da470c04edd5ec2876a028 gamin-0.1.10.tar.gz
+f679aeb48fe9dd376c8828cc9b6941ab fix-deprecated-const.patch
+f05a8d9fe30b6ce2871795c06d74edc4 fix-pthread-mutex.patch"
+sha256sums="28085f0ae8be10eab582ff186af4fb0be92cc6c62b5cc19cd09b295c7c2899a1 gamin-0.1.10.tar.gz
+33af6c9a94b459506fc48892c169d89cb4ad7c68e160f0c4bc74475f19ce5a2f fix-deprecated-const.patch
+bfd5ee42e385367718a4dac8ab318f9a5881ab8b669e4020f87aacaef16a2f8e fix-pthread-mutex.patch"
+sha512sums="21bfe6fcf8fb3117cd5a08c8ce3b8d0d1dd23e478e60a95b76c20d02cc29b050dde086578d81037990484ff891c3e104d2cbbf3d294b4a79346b14a0cae075bb gamin-0.1.10.tar.gz
+c4c10bee70c7231db395cbfe5bdf513ade6be599a11a9d35888ddfaca42d619fe2b5e87c2b2bab469ea98ba718bc01711252313ba5f53c392379b669f5b2902b fix-deprecated-const.patch
+70628fc39521ea8bc4a40b009d0881f6ee540334a31b2f0cb67dde0f75808c69feb78088ad24c3c4a0dec9fa59e87960fd81d1a2e56963ce9268d0a5e14f88e8 fix-pthread-mutex.patch"
diff --git a/harmony/gamin/fix-deprecated-const.patch b/harmony/gamin/fix-deprecated-const.patch
new file mode 100644
index 000000000..3d5f6133f
--- /dev/null
+++ b/harmony/gamin/fix-deprecated-const.patch
@@ -0,0 +1,56 @@
+Description: Don't use deprecated G_CONST_RETURN. Fixes building with newer glib versions.
+Author: Matthias Klose <doko@ubuntu.com>
+Bug-Ubuntu: https://launchpad.net/bugs/829504
+
+Index: gamin/server/gam_node.c
+===================================================================
+--- gamin.orig/server/gam_node.c 2011-10-18 16:09:04.873780685 +0200
++++ gamin/server/gam_node.c 2011-10-18 16:09:01.965780543 +0200
+@@ -122,7 +122,7 @@
+ * it has finished with the string. If it must keep it longer, it
+ * should makes its own copy. The returned string must not be freed.
+ */
+-G_CONST_RETURN char *
++const char *
+ gam_node_get_path(GamNode * node)
+ {
+ g_assert(node);
+Index: gamin/server/gam_node.h
+===================================================================
+--- gamin.orig/server/gam_node.h 2011-10-18 16:09:04.729780677 +0200
++++ gamin/server/gam_node.h 2011-10-18 16:09:01.961780544 +0200
+@@ -58,7 +58,7 @@
+ void gam_node_set_is_dir (GamNode *node,
+ gboolean is_dir);
+
+-G_CONST_RETURN char *gam_node_get_path (GamNode *node);
++const char *gam_node_get_path (GamNode *node);
+
+ GList *gam_node_get_subscriptions (GamNode *node);
+
+Index: gamin/server/gam_subscription.c
+===================================================================
+--- gamin.orig/server/gam_subscription.c 2011-10-18 16:09:04.817780682 +0200
++++ gamin/server/gam_subscription.c 2011-10-18 16:09:01.965780543 +0200
+@@ -141,7 +141,7 @@
+ * @param sub the GamSubscription
+ * @returns The path being monitored. It should not be freed.
+ */
+-G_CONST_RETURN char *
++const char *
+ gam_subscription_get_path(GamSubscription * sub)
+ {
+ if (sub == NULL)
+Index: gamin/server/gam_subscription.h
+===================================================================
+--- gamin.orig/server/gam_subscription.h 2011-10-18 16:09:04.929780687 +0200
++++ gamin/server/gam_subscription.h 2011-10-18 16:09:01.965780543 +0200
+@@ -21,7 +21,7 @@
+
+ int gam_subscription_get_reqno (GamSubscription *sub);
+
+-G_CONST_RETURN char *gam_subscription_get_path (GamSubscription *sub);
++const char *gam_subscription_get_path (GamSubscription *sub);
+
+ GamListener *gam_subscription_get_listener (GamSubscription *sub);
+
diff --git a/harmony/gamin/fix-pthread-mutex.patch b/harmony/gamin/fix-pthread-mutex.patch
new file mode 100644
index 000000000..c8c5b0005
--- /dev/null
+++ b/harmony/gamin/fix-pthread-mutex.patch
@@ -0,0 +1,11 @@
+--- gamin-0.1.10.orig/libgamin/gam_data.c
++++ gamin-0.1.10/libgamin/gam_data.c
+@@ -470,7 +470,7 @@
+ }
+ if (is_threaded > 0) {
+ pthread_mutexattr_init(&attr);
+-#if defined(linux) || defined(PTHREAD_MUTEX_RECURSIVE_NP)
++#if defined(linux) && defined(PTHREAD_MUTEX_RECURSIVE_NP)
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
+ #else
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
diff --git a/harmony/git/0001-gc-use-s-type-character-for-fscanf.patch b/harmony/git/0001-gc-use-s-type-character-for-fscanf.patch
new file mode 100644
index 000000000..e3fe78cf6
--- /dev/null
+++ b/harmony/git/0001-gc-use-s-type-character-for-fscanf.patch
@@ -0,0 +1,33 @@
+From afceb0f7755a87d0dd2194e95f26c9dc8f4bc688 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Fri, 15 Sep 2017 23:55:57 -0500
+Subject: [PATCH] gc: use 's' type character for fscanf
+
+The ISO C standard states that using a field width together with the 'c'
+type character will read the exact amount specified; if that amount of
+bytes is not available, a match error occurs.
+
+This patch allows the t6500 test to pass on the musl libc, and `git gc`
+to behave correctly on systems utilising musl.
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+---
+ builtin/gc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/builtin/gc.c b/builtin/gc.c
+index 3c78fcb..bb2d6c1 100644
+--- a/builtin/gc.c
++++ b/builtin/gc.c
+@@ -258,7 +258,7 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
+ int should_exit;
+
+ if (!scan_fmt)
+- scan_fmt = xstrfmt("%s %%%dc", "%"SCNuMAX, HOST_NAME_MAX);
++ scan_fmt = xstrfmt("%s %%%ds", "%"SCNuMAX, HOST_NAME_MAX);
+ fp = fopen(pidfile_path, "r");
+ memset(locking_host, 0, sizeof(locking_host));
+ should_exit =
+--
+2.10.0
+
diff --git a/harmony/git/APKBUILD b/harmony/git/APKBUILD
new file mode 100644
index 000000000..0a400b851
--- /dev/null
+++ b/harmony/git/APKBUILD
@@ -0,0 +1,255 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=git
+pkgver=2.15.0
+pkgrel=0
+pkgdesc="A distributed version control system"
+url="https://www.git-scm.com/"
+arch="all"
+license="GPL2+"
+depends=
+replaces="git-perl"
+
+# secfixes:
+# 2.14.1:
+# - CVE-2017-1000117
+
+# note that order matters
+subpackages="$pkgname-doc
+ $pkgname-bash-completion:completion:noarch
+ perl-$pkgname-svn:_perl_git_svn:noarch
+ perl-$pkgname:_perl_git:noarch
+ $pkgname-svn
+ $pkgname-email
+ $pkgname-fast-import:_fast_import
+ $pkgname-cvs::noarch
+ $pkgname-p4::noarch
+ $pkgname-daemon
+ $pkgname-gitweb
+ $pkgname-subtree::noarch
+ $pkgname-subtree-doc:subtree_doc:noarch
+ $pkgname-perl:_git_perl:noarch
+ $pkgname-gui::noarch
+ $pkgname-gitk::noarch
+ "
+# we need tcl and tk to be built before git due to git-gui and gitk
+makedepends="zlib-dev openssl-dev curl-dev expat-dev perl-dev
+ pcre2-dev asciidoctor xmlto perl-error tcl tk"
+checkdepends="python3"
+source="https://www.kernel.org/pub/software/scm/git/git-$pkgver.tar.xz
+ bb-tar.patch
+ dont-test-other-encodings.patch
+ git-daemon.initd
+ git-daemon.confd
+ "
+
+_gitcoredir=/usr/libexec/git-core
+builddir="$srcdir"/$pkgname-$pkgver
+
+prepare() {
+ default_prepare
+ cat >> config.mak <<-EOF
+ NO_GETTEXT=YesPlease
+ NO_SVN_TESTS=YesPlease
+ NO_REGEX=YesPlease
+ USE_ASCIIDOCTOR=1
+ USE_LIBPCRE2=YesPlease
+ NO_NSEC=YesPlease
+ NO_SYS_POLL_H=1
+ CFLAGS=$CFLAGS
+ EOF
+}
+
+build() {
+ cd "$builddir"
+ make -j1 prefix=/usr DESTDIR="$pkgdir" perl/perl.mak
+ make prefix=/usr DESTDIR="$pkgdir"
+}
+
+check() {
+ cd "$builddir"
+ make prefix=/usr DESTDIR="$pkgdir" test
+}
+
+package() {
+ cd "$builddir"
+ make -j1 prefix=/usr \
+ DESTDIR="$pkgdir" \
+ INSTALLDIRS=vendor \
+ install
+ mkdir -p "$pkgdir"/var/git
+ install -Dm755 "$srcdir"/git-daemon.initd \
+ "$pkgdir"/etc/init.d/git-daemon
+ install -Dm644 "$srcdir"/git-daemon.confd \
+ "$pkgdir"/etc/conf.d/git-daemon
+
+ make prefix=/usr DESTDIR="$pkgdir" install-man
+}
+
+_perl_git_svn() {
+ pkgdesc="Perl interface to Git::SVN"
+ depends="git=$pkgver-r$pkgrel"
+ replaces="git-perl"
+ eval local `perl -V:vendorlib`
+ mkdir -p "$subpkgdir"/$vendorlib/Git
+ mv "$pkgdir"/$vendorlib/Git/SVN* "$subpkgdir"/$vendorlib/Git/
+}
+
+_perl_git() {
+ pkgdesc="Perl interface to Git"
+ depends="git=$pkgver-r$pkgrel perl-error"
+ replaces="git-perl"
+ eval local `perl -V:vendorlib`
+ eval local `perl -V:vendorarch`
+ for i in $vendorlib $vendorarch; do
+ mkdir -p "$subpkgdir"/${i%/*}
+ mv "$pkgdir"/$i "$subpkgdir"/$i
+ done
+}
+
+email() {
+ depends="perl perl-git=$pkgver-r$pkgrel perl-net-smtp-ssl
+ perl-authen-sasl"
+ pkgdesc="Git tools for sending email"
+ replaces="git"
+ mkdir -p "$subpkgdir"/$_gitcoredir
+ mv "$pkgdir"/$_gitcoredir/*email* "$pkgdir"/$_gitcoredir/*imap* \
+ "$subpkgdir"/$_gitcoredir
+}
+
+svn() {
+ depends="perl perl-git-svn=$pkgver-r$pkgrel perl-subversion
+ perl-term-readkey"
+ pkgdesc="Subversion support for git"
+ replaces=""
+
+ mkdir -p "$subpkgdir"/$_gitcoredir
+ mv "$pkgdir"/$_gitcoredir/git-svn \
+ "$pkgdir"$_gitcoredir/git-remote-testsvn \
+ "$subpkgdir"/$_gitcoredir/
+}
+
+cvs() {
+ pkgdesc="Git tools for importing CVS repositories"
+ depends="perl perl-git=$pkgver-r$pkgrel cvs perl-dbd-sqlite"
+ replaces="git-perl"
+ mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/$_gitcoredir
+ mv "$pkgdir"/usr/bin/git-cvs* "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/$_gitcoredir/*cvs* "$subpkgdir"/$_gitcoredir \
+
+}
+
+_fast_import() {
+ pkgdesc="Git backend for fast Git data importers"
+ depends="git=$pkgver-r$pkgrel"
+ mkdir -p "$subpkgdir"/$_gitcoredir
+ mv "$pkgdir"/$_gitcoredir/git-fast-import "$subpkgdir"/$_gitcoredir/
+}
+
+p4() {
+ pkgdesc="Git tools for working with Perforce depots"
+ depends="git=$pkgver-r$pkgrel git-fast-import=$pkgver-r$pkgrel"
+ replaces="git"
+ mkdir -p "$subpkgdir"/$_gitcoredir/mergetools
+ mv "$pkgdir"/$_gitcoredir/*p4* "$subpkgdir"/$_gitcoredir/
+ mv "$pkgdir"/$_gitcoredir/mergetools/*p4* \
+ "$subpkgdir"/$_gitcoredir/mergetools/
+}
+
+daemon() {
+ pkgdesc="Git protocol daemon"
+ depends="git=$pkgver-r$pkgrel"
+ replaces="git"
+ mkdir -p "$subpkgdir"/$_gitcoredir
+ mv "$pkgdir"/$_gitcoredir/git-daemon \
+ "$pkgdir"/$_gitcoredir/git-http-backend \
+ "$pkgdir"/$_gitcoredir/git-shell \
+ "$subpkgdir"/$_gitcoredir \
+
+ mv "$pkgdir"/etc "$subpkgdir"/
+}
+
+gitweb() {
+ pkgdesc="Simple web interface to git repositories"
+ depends="git=$pkgver-r$pkgrel perl"
+ replaces="git"
+ mkdir -p "$subpkgdir"/usr/share "$subpkgdir"$_gitcoredir
+ mv "$pkgdir"/usr/share/gitweb "$subpkgdir"/usr/share/
+ mv "$pkgdir"/$_gitcoredir/git-instaweb "$subpkgdir"$_gitcoredir
+}
+
+completion() {
+ pkgdesc="Bash completion for $pkgname"
+ depends=""
+ replaces=""
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ install -Dm644 "$builddir"/contrib/completion/git-completion.bash \
+ "$subpkgdir"/usr/share/bash-completion/completions/git
+}
+
+subtree() {
+ depends="git=$pkgver-r$pkgrel"
+ pkgdesc="Split git repository into subtrees"
+ replaces=""
+
+ cd "$builddir"/contrib/subtree
+ make prefix=/usr DESTDIR="$pkgdir"
+ make install prefix=/usr DESTDIR="$subpkgdir"
+}
+
+subtree_doc() {
+ depends=""
+ pkgdesc="Split git repository into subtrees (documentation)"
+ replaces=""
+
+ cd "$builddir"/contrib/subtree
+ make install-man prefix=/usr DESTDIR="$subpkgdir"
+ gzip -9 "$subpkgdir"/usr/share/man/man1/git-subtree.1
+}
+
+gui() {
+ depends="git=$pkgver-r$pkgrel tcl tk"
+ pkgdesc="GUI interface for git"
+ replaces=""
+
+ mkdir -p "$subpkgdir"/usr/share "$subpkgdir"/usr/libexec/git-core
+ mv "$pkgdir"/usr/share/git-gui "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/libexec/git-core/git-citool \
+ "$pkgdir"/usr/libexec/git-core/git-gui \
+ "$pkgdir"/usr/libexec/git-core/git-gui--askpass \
+ "$subpkgdir"/usr/libexec/git-core/
+}
+
+gitk() {
+ depends="git=$pkgver-r$pkgrel tcl tk"
+ pkgdesc="Gitk interface for git"
+ replaces=""
+
+ mkdir -p "$subpkgdir"/usr/share "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/share/gitk "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/bin/gitk "$subpkgdir"/usr/bin/
+}
+
+# catch-the-rest of stuff that needs perl
+_git_perl() {
+ depends="git=$pkgver-r$pkgrel perl-git=$pkgver-r$pkgrel perl"
+ pkgdesc="Additional Git commands that requires perl"
+ replaces=""
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/perl* "$subpkgdir"/usr/lib/
+ cd "$pkgdir"
+ find -type f | xargs file --mime-type | grep perl | cut -d: -f1| while read f; do
+ mkdir -p "$subpkgdir"/${f%/*}
+ mv "$f" "$subpkgdir"/${f%/*}
+ done
+ find "$subpkgdir" -name perllocal.pod -delete
+}
+
+
+sha512sums="994704b440ebce104a99d815dd713af3173f29e70646d7135c3fcd1ac4694a26e499f0732843606c397cbf6108809eb397546c837623a4adbe1ccb2fc825cb64 git-2.15.0.tar.xz
+85767b5e03137008d6a96199e769e3979f75d83603ac8cb13a3481a915005637409a4fd94e0720da2ec6cd1124f35eba7cf20109a94816c4b4898a81fbc46bd2 bb-tar.patch
+135645fa57c41c50bec6d09f7d3c92f26d30334b5f342d50942c24e0dd11106e40c36b11346c9e6cd69e98b7a9ebeec80e4e4f1506ef689f39d7ef4539727dae dont-test-other-encodings.patch
+89528cdd14c51fd568aa61cf6c5eae08ea0844e59f9af9292da5fc6c268261f4166017d002d494400945e248df6b844e2f9f9cd2d9345d516983f5a110e4c42a git-daemon.initd
+fbf1f425206a76e2a8f82342537ed939ff7e623d644c086ca2ced5f69b36734695f9f80ebda1728f75a94d6cd2fcb71bf845b64239368caab418e4d368c141ec git-daemon.confd"
diff --git a/harmony/git/bb-tar.patch b/harmony/git/bb-tar.patch
new file mode 100644
index 000000000..d9433ef12
--- /dev/null
+++ b/harmony/git/bb-tar.patch
@@ -0,0 +1,8 @@
+--- a/templates/Makefile Mon Oct 26 02:57:33 2009
++++ b/templates/Makefile Mon Nov 9 14:56:27 2009
+@@ -63,4 +63,4 @@
+ install: all
+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(template_instdir_SQ)'
+ (cd blt && $(TAR) cf - .) | \
+- (cd '$(DESTDIR_SQ)$(template_instdir_SQ)' && umask 022 && $(TAR) xof -)
++ (cd '$(DESTDIR_SQ)$(template_instdir_SQ)' && umask 022 && $(TAR) xf -)
diff --git a/harmony/git/dont-test-other-encodings.patch b/harmony/git/dont-test-other-encodings.patch
new file mode 100644
index 000000000..98949bc1b
--- /dev/null
+++ b/harmony/git/dont-test-other-encodings.patch
@@ -0,0 +1,193 @@
+We can't support Japanese people using musl
+
+--- git-2.14.1/t/t3900-i18n-commit.sh.old 2017-08-09 14:54:31.000000000 -0500
++++ git-2.14.1/t/t3900-i18n-commit.sh 2017-09-10 21:10:09.269860087 -0500
+@@ -76,132 +76,4 @@
+ test_i18ngrep "did not conform" "$HOME"/stderr
+ '
+
+-for H in ISO8859-1 eucJP ISO-2022-JP
+-do
+- test_expect_success "$H setup" '
+- git config i18n.commitencoding $H &&
+- git checkout -b $H C0 &&
+- echo $H >F &&
+- git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
+- '
+-done
+-
+-for H in ISO8859-1 eucJP ISO-2022-JP
+-do
+- test_expect_success "check encoding header for $H" '
+- E=$(git cat-file commit '$H' | sed -ne "s/^encoding //p") &&
+- test "z$E" = "z'$H'"
+- '
+-done
+-
+-test_expect_success 'config to remove customization' '
+- git config --unset-all i18n.commitencoding &&
+- if Z=$(git config --get-all i18n.commitencoding)
+- then
+- echo Oops, should have failed.
+- false
+- else
+- test z = "z$Z"
+- fi &&
+- git config i18n.commitencoding UTF-8
+-'
+-
+-test_expect_success 'ISO8859-1 should be shown in UTF-8 now' '
+- compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
+-'
+-
+-for H in eucJP ISO-2022-JP
+-do
+- test_expect_success "$H should be shown in UTF-8 now" '
+- compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
+- '
+-done
+-
+-test_expect_success 'config to add customization' '
+- git config --unset-all i18n.commitencoding &&
+- if Z=$(git config --get-all i18n.commitencoding)
+- then
+- echo Oops, should have failed.
+- false
+- else
+- test z = "z$Z"
+- fi
+-'
+-
+-for H in ISO8859-1 eucJP ISO-2022-JP
+-do
+- test_expect_success "$H should be shown in itself now" '
+- git config i18n.commitencoding '$H' &&
+- compare_with '$H' "$TEST_DIRECTORY"/t3900/'$H'.txt
+- '
+-done
+-
+-test_expect_success 'config to tweak customization' '
+- git config i18n.logoutputencoding UTF-8
+-'
+-
+-test_expect_success 'ISO8859-1 should be shown in UTF-8 now' '
+- compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
+-'
+-
+-for H in eucJP ISO-2022-JP
+-do
+- test_expect_success "$H should be shown in UTF-8 now" '
+- compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
+- '
+-done
+-
+-for J in eucJP ISO-2022-JP
+-do
+- if test "$J" = ISO-2022-JP
+- then
+- ICONV=$J
+- else
+- ICONV=
+- fi
+- git config i18n.logoutputencoding $J
+- for H in eucJP ISO-2022-JP
+- do
+- test_expect_success "$H should be shown in $J now" '
+- compare_with '$H' "$TEST_DIRECTORY"/t3900/'$J'.txt $ICONV
+- '
+- done
+-done
+-
+-for H in ISO8859-1 eucJP ISO-2022-JP
+-do
+- test_expect_success "No conversion with $H" '
+- compare_with "--encoding=none '$H'" "$TEST_DIRECTORY"/t3900/'$H'.txt
+- '
+-done
+-
+-test_commit_autosquash_flags () {
+- H=$1
+- flag=$2
+- test_expect_success "commit --$flag with $H encoding" '
+- git config i18n.commitencoding $H &&
+- git checkout -b $H-$flag C0 &&
+- echo $H >>F &&
+- git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt &&
+- test_tick &&
+- echo intermediate stuff >>G &&
+- git add G &&
+- git commit -a -m "intermediate commit" &&
+- test_tick &&
+- echo $H $flag >>F &&
+- git commit -a --$flag HEAD~1 &&
+- E=$(git cat-file commit '$H-$flag' |
+- sed -ne "s/^encoding //p") &&
+- test "z$E" = "z$H" &&
+- git config --unset-all i18n.commitencoding &&
+- git rebase --autosquash -i HEAD^^^ &&
+- git log --oneline >actual &&
+- test_line_count = 3 actual
+- '
+-}
+-
+-test_commit_autosquash_flags eucJP fixup
+-
+-test_commit_autosquash_flags ISO-2022-JP squash
+-
+ test_done
+--- git-2.14.1/t/t5100-mailinfo.sh.old 2017-08-09 14:54:31.000000000 -0500
++++ git-2.14.1/t/t5100-mailinfo.sh 2017-09-10 23:26:39.206126739 -0500
+@@ -27,6 +27,7 @@
+
+ for mail in 00*
+ do
++ if [ $mail == 0004 ]; then continue; fi
+ test_expect_success "mailinfo $mail" '
+ check_mailinfo "$mail" "" &&
+ if test -f "$DATA/msg$mail--scissors"
+--- git-2.14.1/t/t8005-blame-i18n.sh.old 2017-08-09 14:54:31.000000000 -0500
++++ git-2.14.1/t/t8005-blame-i18n.sh 2017-09-16 00:42:35.123728809 -0500
+@@ -24,43 +24,10 @@
+ git commit --author "$SJIS_NAME <sjis@localhost>" -m "$SJIS_MSG"
+ '
+
+-cat >expected <<EOF
+-author $SJIS_NAME
+-summary $SJIS_MSG
+-author $SJIS_NAME
+-summary $SJIS_MSG
+-author $SJIS_NAME
+-summary $SJIS_MSG
+-EOF
+-
+ filter_author_summary () {
+ sed -n -e '/^author /p' -e '/^summary /p' "$@"
+ }
+
+-test_expect_success !MINGW \
+- 'blame respects i18n.commitencoding' '
+- git blame --incremental file >output &&
+- filter_author_summary output >actual &&
+- test_cmp expected actual
+-'
+-
+-cat >expected <<EOF
+-author $EUC_JAPAN_NAME
+-summary $EUC_JAPAN_MSG
+-author $EUC_JAPAN_NAME
+-summary $EUC_JAPAN_MSG
+-author $EUC_JAPAN_NAME
+-summary $EUC_JAPAN_MSG
+-EOF
+-
+-test_expect_success !MINGW \
+- 'blame respects i18n.logoutputencoding' '
+- git config i18n.logoutputencoding eucJP &&
+- git blame --incremental file >output &&
+- filter_author_summary output >actual &&
+- test_cmp expected actual
+-'
+-
+ cat >expected <<EOF
+ author $UTF8_NAME
+ summary $UTF8_MSG
diff --git a/harmony/git/git-daemon.confd b/harmony/git/git-daemon.confd
new file mode 100644
index 000000000..69b209ff1
--- /dev/null
+++ b/harmony/git/git-daemon.confd
@@ -0,0 +1,19 @@
+# conf.d file for git-daemon
+#
+# Please check man 1 git-daemon for more information about the options
+# git-daemon accepts. You MUST edit this to include your repositories you wish
+# to serve.
+#
+# Some of the meaningful options are:
+# --syslog --- Enables syslog logging
+# --verbose --- Enables verbose logging
+# --export-all --- Exports all repositories
+# --port=XXXX --- Starts in port XXXX instead of 9418
+#
+GITDAEMON_OPTS="--syslog --base-path=/var/git"
+
+# To run an anonymous git safely, the following user should be able to only
+# read your Git repositories. It should not be able to write to anywhere on
+# your system, esp. not the repositories.
+GIT_USER="nobody"
+GIT_GROUP="nobody"
diff --git a/harmony/git/git-daemon.initd b/harmony/git/git-daemon.initd
new file mode 100644
index 000000000..394feb97e
--- /dev/null
+++ b/harmony/git/git-daemon.initd
@@ -0,0 +1,13 @@
+#!/sbin/openrc-run
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+pidfile="/var/run/git-daemon.pid"
+command="/usr/bin/git"
+command_args="daemon ${GITDAEMON_OPTS}"
+start_stop_daemon_args="-e HOME= -e XDG_CONFIG_HOME= -b -m -p ${pidfile} -u ${GIT_USER:-nobody}:${GIT_GROUP:-nobody}"
+
+depend() {
+ use logger
+}
diff --git a/harmony/glib-networking/APKBUILD b/harmony/glib-networking/APKBUILD
new file mode 100644
index 000000000..65ae109a0
--- /dev/null
+++ b/harmony/glib-networking/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=glib-networking
+pkgver=2.54.1
+_maj=${pkgver%%.*}
+_min=${pkgver#${_maj}.}
+_min=${_min%%.*}
+_ver=$_maj.$_min
+pkgrel=1
+pkgdesc="Networking support for GLib"
+url="http://www.gnome.org"
+arch="all"
+license="LGPL-2.1+"
+depends="ca-certificates"
+makedepends="glib-dev gnutls-dev libproxy-dev intltool libgcrypt-dev bash p11-kit-dev"
+install=
+subpackages="$pkgname-lang"
+source="http://download.gnome.org/sources/glib-networking/$_ver/glib-networking-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ CONFIG_SHELL=/bin/bash ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-more-warnings \
+ --with-libproxy \
+ --with-gnutls
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm -f "$pkgdir"/usr/lib/gio/modules/*.a
+}
+
+sha512sums="8356d835914e33df43f4f2bb6a915ddcd48dd0565e4d5bc1f1d692e9c3124ee4421b99f87f2586f74e9fed24ef7421159f3242fd1eb7bd74950bd25e860896ec glib-networking-2.54.1.tar.xz"
diff --git a/harmony/glib-networking/proxy-test.patch b/harmony/glib-networking/proxy-test.patch
new file mode 100644
index 000000000..2cab5d9f6
--- /dev/null
+++ b/harmony/glib-networking/proxy-test.patch
@@ -0,0 +1,13 @@
+--- ./Makefile.am.orig
++++ ./Makefile.am
+@@ -11,9 +11,9 @@
+
+ if HAVE_GNOME_PROXY
+ SUBDIRS += proxy/gnome
++SUBDIRS += proxy/tests
+ endif
+
+-SUBDIRS += proxy/tests
+
+ if HAVE_GNUTLS
+ SUBDIRS += tls/gnutls
diff --git a/harmony/glib/0001-gquark-fix-initialization-with-c-constructors.patch b/harmony/glib/0001-gquark-fix-initialization-with-c-constructors.patch
new file mode 100644
index 000000000..50a9a8c28
--- /dev/null
+++ b/harmony/glib/0001-gquark-fix-initialization-with-c-constructors.patch
@@ -0,0 +1,47 @@
+From e4216dee57f5156e192b2910f13eb855a104cb18 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 6 Jul 2016 12:38:40 +0200
+Subject: [PATCH] gquark: fix initialization with c++ constructors
+
+C++ constructors may want create new quarks, but we can not guarantee
+that the glib library ctor is executed first. Therefore we make sure
+that quarks are always initialized from g_quark_from_string and
+g_quark_from_static_string
+
+This fixes crashes in glibmm with musl which likely happens on AIX too.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=768215
+https://bugzilla.gnome.org/show_bug.cgi?id=756139#c14
+---
+ glib/gquark.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/glib/gquark.c b/glib/gquark.c
+index 9e51a92..17ecd7f 100644
+--- a/glib/gquark.c
++++ b/glib/gquark.c
+@@ -57,6 +57,11 @@ static gint quark_block_offset = 0;
+ void
+ g_quark_init (void)
+ {
++ /* we may be initialized from c++ constructor or the glib ctor, but we
++ cannot guarantee in what order. So we check if we have been initialized */
++ if (quark_ht != NULL)
++ return;
++
+ g_assert (quark_seq_id == 0);
+ quark_ht = g_hash_table_new (g_str_hash, g_str_equal);
+ quarks = g_new (gchar*, QUARK_BLOCK_SIZE);
+@@ -179,6 +184,9 @@ quark_from_string (const gchar *string,
+ {
+ GQuark quark = 0;
+
++ if (G_UNLIKELY (quark_ht == NULL))
++ g_quark_init();
++
+ quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
+
+ if (!quark)
+--
+2.9.0
+
diff --git a/harmony/glib/APKBUILD b/harmony/glib/APKBUILD
new file mode 100644
index 000000000..89a98754f
--- /dev/null
+++ b/harmony/glib/APKBUILD
@@ -0,0 +1,103 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=glib
+pkgver=2.54.2
+pkgrel=1
+pkgdesc="Common C routines used by Gtk+ and other libs"
+url="https://developer.gnome.org/glib/"
+arch="all"
+license="GPL"
+depends=
+triggers="$pkgname.trigger=/usr/share/glib-2.0/schemas:/usr/lib/gio/modules"
+depends_dev="perl python3 attr-dev gettext-dev zlib-dev bzip2-dev libffi-dev
+ util-linux-dev"
+makedepends="$depends_dev pcre-dev xmlto"
+checkdepends="tzdata"
+options="!checkroot"
+source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
+ 0001-gquark-fix-initialization-with-c-constructors.patch
+ broken-gio-tests.patch
+ fix-spawn.patch
+ i386-fpu-test.patch
+ musl-no-locale.patch
+ ridiculous-strerror-nonconformance.patch
+ thread-test-fix.patch
+ "
+subpackages="$pkgname-dbg $pkgname-doc $pkgname-static $pkgname-dev $pkgname-lang $pkgname-bash-completion:bashcomp:noarch"
+builddir="$srcdir"/$pkgname-$pkgver
+
+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
+}
+
+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
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm -rf "$pkgdir"/usr/lib/charset.alias
+}
+
+dev() {
+ default_dev
+ mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/share
+ find "$pkgdir"/usr/bin ! -name "glib-compile-schemas" -a \( \
+ -name "gdbus-codegen" -o \
+ -name "gobject-query" -o \
+ -name "gresource" -o \
+ -name "gtester*" -o \
+ -name "glib-*" \) \
+ -exec mv {} "$subpkgdir"/usr/bin \;
+ mv "$pkgdir"/usr/share/gdb "$pkgdir"/usr/share/glib-2.0 \
+ "$subpkgdir"/usr/share
+}
+
+static() {
+ pkgdesc="glib static libraries"
+ depends="gettext-static"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
+}
+
+bashcomp() {
+ pkgdesc="Bash completion 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
+ [ "$(ls -A "$pkgdir"/usr/share)" ] || rmdir "$pkgdir"/usr/share
+}
+
+sha512sums="09ee6fa3a6f3f15af229bd789bef536e3570f36d1e4ce624a57e97c4040577f6baccd6ab5746257863ccf7173b558cfa753951d562a278f854e52604104ba7ee glib-2.54.2.tar.xz
+32e5aca9a315fb985fafa0b4355e4498c1f877fc1f0b58ad4ac261fb9fbced9f026c7756a5f2af7d61ce756b55c8cd02811bb08df397040e93510056f073756b 0001-gquark-fix-initialization-with-c-constructors.patch
+9bf99de4672765704759098c883cfc4d2747cf10d9d568ae97134806a089e4bebae57886bae45dcc53694e0190248abe6ae52cc38dc742cd754d352406ac0680 broken-gio-tests.patch
+0f0a98784aeed92f33cd9239d2f668bdc6c09b84ed020825ae88f6aacf6a922152dc3e1384c40d9f30f54c5ab78fe17e0ee5c42b268b297b595d2a6cde5b8998 fix-spawn.patch
+aa7444bbdf7b88798adc67c15cdb8b7459450c0b7357caea16b74462c5c9179ba80d4018b1e656e90a5e3be5b2e3c14e9b8c0ccbb2ee4d8c92dc8fa627518b84 i386-fpu-test.patch
+10d23961072e3d8c8bbe5ee9a6b6ad709734690485c7148f1f8a2081a3ecc06cc3e3ff02ea870e1b429cd8464df6ef6e9f266148010d889fd187f4e411f65bab musl-no-locale.patch
+56c10a0f64cbd8ce584d428f818e7e678fdeb40a32df792843208ddfa3135d362cc2077bc9fe3bfebe13ee6af0ecf6403a593ad727e0a92276074a17a9c7029c ridiculous-strerror-nonconformance.patch
+0cebf9cbf87a92c3160054eb30189a827847f5820a8b90f4842b4ad5ab5cc343ba06e5f55214864bd0f0d5a21e55ec5e7f35c66207e77b1496142b7ee0c75567 thread-test-fix.patch"
diff --git a/harmony/glib/broken-gio-tests.patch b/harmony/glib/broken-gio-tests.patch
new file mode 100644
index 000000000..d7006db87
--- /dev/null
+++ b/harmony/glib/broken-gio-tests.patch
@@ -0,0 +1,100 @@
+Requires update-desktop-database
+--- glib-2.52.1/gio/tests/appinfo.c.old 2016-10-22 00:17:49.000000000 -0500
++++ glib-2.52.1/gio/tests/appinfo.c 2017-08-20 23:23:32.581229536 -0500
+@@ -486,7 +486,7 @@
+ g_test_add_func ("/appinfo/launch-context", test_launch_context);
+ g_test_add_func ("/appinfo/launch-context-signals", test_launch_context_signals);
+ g_test_add_func ("/appinfo/tryexec", test_tryexec);
+- g_test_add_func ("/appinfo/associations", test_associations);
++ //g_test_add_func ("/appinfo/associations", test_associations);
+ g_test_add_func ("/appinfo/environment", test_environment);
+ g_test_add_func ("/appinfo/startup-wm-class", test_startup_wm_class);
+ g_test_add_func ("/appinfo/supported-types", test_supported_types);
+
+
+Requires shared-mime-info
+--- glib-2.53.7/gio/tests/contenttype.c.old 2017-07-13 18:03:39.000000000 -0500
++++ glib-2.53.7/gio/tests/contenttype.c 2017-09-05 21:41:46.312547646 -0500
+@@ -345,9 +345,9 @@
+
+ g_test_bug_base ("http://bugzilla.gnome.org/");
+
+- g_test_add_func ("/contenttype/guess", test_guess);
++ //g_test_add_func ("/contenttype/guess", test_guess);
+ g_test_add_func ("/contenttype/unknown", test_unknown);
+- g_test_add_func ("/contenttype/subtype", test_subtype);
++ /*g_test_add_func ("/contenttype/subtype", test_subtype);
+ g_test_add_func ("/contenttype/list", test_list);
+ g_test_add_func ("/contenttype/executable", test_executable);
+ g_test_add_func ("/contenttype/description", test_description);
+@@ -355,7 +355,7 @@
+ g_test_add_func ("/contenttype/symbolic-icon", test_symbolic_icon);
+ g_test_add_func ("/contenttype/tree", test_tree);
+ g_test_add_func ("/contenttype/test_type_is_a_special_case",
+- test_type_is_a_special_case);
++ test_type_is_a_special_case);*/
+
+ return g_test_run ();
+ }
+
+
+Requires working iconv
+--- glib-2.52.1/gio/tests/converter-stream.c.old 2016-10-22 00:18:11.000000000 -0500
++++ glib-2.52.1/gio/tests/converter-stream.c 2017-08-20 23:21:31.711358101 -0500
+@@ -1203,7 +1203,7 @@
+ };
+ CharsetTest charset_tests[] = {
+ { "/converter-input-stream/charset/utf8->latin1", "UTF-8", "\303\205rr Sant\303\251", "ISO-8859-1", "\305rr Sant\351", 0 },
+- { "/converter-input-stream/charset/latin1->utf8", "ISO-8859-1", "\305rr Sant\351", "UTF-8", "\303\205rr Sant\303\251", 0 },
++ //{ "/converter-input-stream/charset/latin1->utf8", "ISO-8859-1", "\305rr Sant\351", "UTF-8", "\303\205rr Sant\303\251", 0 },
+- { "/converter-input-stream/charset/fallbacks", "UTF-8", "Some characters just don't fit into latin1: πא", "ISO-8859-1", "Some characters just don't fit into latin1: \\CF\\80\\D7\\90", 4 },
++ //{ "/converter-input-stream/charset/fallbacks", "UTF-8", "Some characters just don't fit into latin1: πא", "ISO-8859-1", "Some characters just don't fit into latin1: \\CF\\80\\D7\\90", 4 },
+ };
+
+
+
+Requires dconf
+--- glib-2.52.1/gio/tests/gsettings.c.old 2017-08-20 23:26:31.284378974 -0500
++++ glib-2.52.1/gio/tests/gsettings.c 2017-08-20 23:26:46.637699607 -0500
+@@ -2603,6 +2603,8 @@
+ gchar *schema_text;
+ gchar *enums;
+ gint result;
++ printf("1..0\n");
++ return 0;
+
+ setlocale (LC_ALL, "");
+
+
+Requires update-desktop-database
+--- glib-2.52.1/gio/tests/desktop-app-info.c.old 2016-10-22 00:17:55.000000000 -0500
++++ glib-2.52.1/gio/tests/desktop-app-info.c 2017-08-20 23:38:16.840439686 -0500
+@@ -761,6 +761,8 @@
+ {
+ gint result;
+
++ printf("1..0\n");
++ return 0;
+ g_test_init (&argc, &argv, NULL);
+
+ basedir = g_get_current_dir ();
+
+
+--- glib-2.52.1/gio/tests/resources.c.old 2016-10-22 00:18:12.000000000 -0500
++++ glib-2.52.1/gio/tests/resources.c 2017-08-20 23:39:47.127025718 -0500
+@@ -426,6 +426,7 @@
+ g_assert_cmpstr (g_bytes_get_data (data, NULL), ==, "test1\n");
+ g_bytes_unref (data);
+
++#if 0 // dlclose is noop on musl
+ g_type_module_unuse (G_TYPE_MODULE (module));
+
+ found = g_resources_get_info ("/resourceplugin/test1.txt",
+@@ -434,6 +435,7 @@
+ g_assert (!found);
+ g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
+ g_clear_error (&error);
++#endif
+ }
+ }
+
diff --git a/harmony/glib/fix-spawn.patch b/harmony/glib/fix-spawn.patch
new file mode 100644
index 000000000..df352fdc3
--- /dev/null
+++ b/harmony/glib/fix-spawn.patch
@@ -0,0 +1,22 @@
+--- glib-2.52.1/glib/tests/spawn-singlethread.c.old 2016-10-22 00:21:35.000000000 -0500
++++ glib-2.52.1/glib/tests/spawn-singlethread.c 2017-08-20 22:31:52.548311424 -0500
+@@ -210,7 +210,7 @@
+ g_test_init (&argc, &argv, NULL);
+
+ dirname = g_path_get_dirname (argv[0]);
+- echo_prog_path = g_build_filename (dirname, "test-spawn-echo" EXEEXT, NULL);
++ echo_prog_path = g_build_filename (dirname, "../test-spawn-echo" EXEEXT, NULL);
+ if (!g_file_test (echo_prog_path, G_FILE_TEST_EXISTS))
+ {
+ g_free (echo_prog_path);
+--- glib-2.52.1/glib/tests/spawn-multithreaded.c.old 2016-10-22 00:21:44.000000000 -0500
++++ glib-2.52.1/glib/tests/spawn-multithreaded.c 2017-08-20 22:32:15.981614460 -0500
+@@ -222,7 +222,7 @@
+ g_test_init (&argc, &argv, NULL);
+
+ dirname = g_path_get_dirname (argv[0]);
+- echo_prog_path = g_build_filename (dirname, "test-spawn-echo" EXEEXT, NULL);
++ echo_prog_path = g_build_filename (dirname, "../test-spawn-echo" EXEEXT, NULL);
+ if (!g_file_test (echo_prog_path, G_FILE_TEST_EXISTS))
+ {
+ g_free (echo_prog_path);
diff --git a/harmony/glib/glib.trigger b/harmony/glib/glib.trigger
new file mode 100644
index 000000000..cf23eff7d
--- /dev/null
+++ b/harmony/glib/glib.trigger
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+for i in "$@"; do
+ if ! [ -e "$i" ]; then
+ continue
+ fi
+ case "$i" in
+ */modules)
+ /usr/bin/gio-querymodules "$i"
+ ;;
+ */schemas)
+ /usr/bin/glib-compile-schemas "$i"
+ ;;
+ esac
+done
+
diff --git a/harmony/glib/i386-fpu-test.patch b/harmony/glib/i386-fpu-test.patch
new file mode 100644
index 000000000..986c33164
--- /dev/null
+++ b/harmony/glib/i386-fpu-test.patch
@@ -0,0 +1,13 @@
+--- glib-2.54.2/glib/tests/timer.c.old 2016-10-22 00:21:30.000000000 -0500
++++ glib-2.54.2/glib/tests/timer.c 2018-03-03 18:39:40.424741042 -0600
+@@ -203,7 +203,10 @@
+ {
+ g_test_init (&argc, &argv, NULL);
+
++ /* This test fails on the i386 because of crappy FPU */
++#ifndef __i386__
+ g_test_add_func ("/timer/basic", test_timer_basic);
++#endif
+ g_test_add_func ("/timer/stop", test_timer_stop);
+ g_test_add_func ("/timer/continue", test_timer_continue);
+ g_test_add_func ("/timer/reset", test_timer_reset);
diff --git a/harmony/glib/musl-no-locale.patch b/harmony/glib/musl-no-locale.patch
new file mode 100644
index 000000000..4b36b0b2e
--- /dev/null
+++ b/harmony/glib/musl-no-locale.patch
@@ -0,0 +1,55 @@
+--- glib-2.52.1/glib/tests/option-context.c.old 2016-10-22 05:21:34.000000000 +0000
++++ glib-2.52.1/glib/tests/option-context.c 2017-08-20 23:14:46.364133517 +0000
+@@ -638,7 +638,7 @@
+
+ old_locale = g_strdup (setlocale (LC_NUMERIC, locale));
+ current_locale = setlocale (LC_NUMERIC, NULL);
+- if (strcmp (current_locale, locale) != 0)
++ //if (strcmp (current_locale, locale) != 0)
+ {
+ fprintf (stderr, "Cannot set locale to %s, skipping\n", locale);
+ goto cleanup;
+--- glib-2.52.1/glib/tests/gdatetime.c.old 2017-03-16 20:12:05.000000000 -0500
++++ glib-2.52.1/glib/tests/gdatetime.c 2017-08-20 22:20:37.805908983 -0500
+@@ -1068,7 +1068,7 @@
+
+ oldlocale = g_strdup (setlocale (LC_ALL, NULL));
+ setlocale (LC_ALL, "fa_IR.utf-8");
+- if (strstr (setlocale (LC_ALL, NULL), "fa_IR") != NULL)
++ if ((1 == 0) && strstr (setlocale (LC_ALL, NULL), "fa_IR") != NULL)
+ {
+ TEST_PRINTF_TIME (23, 0, 0, "%OH", "\333\262\333\263"); /* '23' */
+ TEST_PRINTF_TIME (23, 0, 0, "%OI", "\333\261\333\261"); /* '11' */
+--- glib-2.52.1/glib/tests/convert.c.old 2016-10-22 00:21:34.000000000 -0500
++++ glib-2.52.1/glib/tests/convert.c 2017-08-20 22:51:48.363430954 -0500
+@@ -707,7 +707,7 @@
+
+ g_test_add_func ("/conversion/no-conv", test_no_conv);
+ g_test_add_func ("/conversion/iconv-state", test_iconv_state);
+- g_test_add_func ("/conversion/illegal-sequence", test_one_half);
++ //g_test_add_func ("/conversion/illegal-sequence", test_one_half);
+- g_test_add_func ("/conversion/byte-order", test_byte_order);
++ //g_test_add_func ("/conversion/byte-order", test_byte_order);
+ g_test_add_func ("/conversion/unicode", test_unicode_conversions);
+ g_test_add_func ("/conversion/filename-utf8", test_filename_utf8);
+--- glib-2.54.2/glib/tests/collate.c.old 2017-03-08 21:37:21.000000000 -0600
++++ glib-2.54.2/glib/tests/collate.c 2018-03-01 01:07:56.957714447 -0600
+@@ -279,7 +279,7 @@
+
+ g_setenv ("LC_ALL", "en_US", TRUE);
+ locale = setlocale (LC_ALL, "");
+- if (locale == NULL || strcmp (locale, "en_US") != 0)
++ //if (locale == NULL || strcmp (locale, "en_US") != 0)
+ {
+ g_test_message ("No suitable locale, skipping tests");
+ missing_locale = TRUE;
+--- glib-2.54.2/tests/run-collate-tests.sh.old 2016-10-22 00:17:10.000000000 -0500
++++ glib-2.54.2/tests/run-collate-tests.sh 2018-03-01 01:22:01.107722429 -0600
+@@ -1,5 +1,7 @@
+ #! /bin/sh
+
++exit 77
++
+ fail ()
+ {
+ echo "Test failed: $*"
diff --git a/harmony/glib/ridiculous-strerror-nonconformance.patch b/harmony/glib/ridiculous-strerror-nonconformance.patch
new file mode 100644
index 000000000..3ffc0aafa
--- /dev/null
+++ b/harmony/glib/ridiculous-strerror-nonconformance.patch
@@ -0,0 +1,11 @@
+--- glib-2.52.1/glib/tests/strfuncs.c.old 2016-10-22 00:21:44.000000000 -0500
++++ glib-2.52.1/glib/tests/strfuncs.c 2017-08-20 22:48:18.233702952 -0500
+@@ -1335,7 +1335,7 @@
+ setlocale (LC_ALL, "C");
+
+ strs = g_hash_table_new (g_str_hash, g_str_equal);
+- for (i = 1; i < 200; i++)
++ for (i = 1; i < 40; i++)
+ {
+ str = g_strerror (i);
+ g_assert (str != NULL);
diff --git a/harmony/glib/thread-test-fix.patch b/harmony/glib/thread-test-fix.patch
new file mode 100644
index 000000000..bcfcfc441
--- /dev/null
+++ b/harmony/glib/thread-test-fix.patch
@@ -0,0 +1,11 @@
+--- 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/harmony/gnutls/APKBUILD b/harmony/gnutls/APKBUILD
new file mode 100644
index 000000000..b64faaa64
--- /dev/null
+++ b/harmony/gnutls/APKBUILD
@@ -0,0 +1,74 @@
+# Contriburo: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=gnutls
+pkgver=3.6.1
+pkgrel=0
+pkgdesc="A TLS protocol implementation"
+url="http://www.gnutls.org/"
+arch="all"
+license="GPL"
+checkdepends="diffutils"
+makedepends="nettle-dev zlib-dev libtasn1-dev p11-kit-dev libunistring-dev texinfo"
+subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev $pkgname-utils $pkgname-c++:xx"
+_v=${pkgver%.*}
+case $pkgver in
+*.*.*.*) _v=${_v%.*};;
+esac
+source="https://www.gnupg.org/ftp/gcrypt/gnutls/v${_v}/$pkgname-$pkgver.tar.xz
+ tests-date-compat.patch"
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 3.5.13-r0:
+# - CVE-2017-7507
+
+build() {
+ cd "$builddir"
+ LIBS="-lgmp" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-openssl-compatibility \
+ --disable-rpath \
+ --disable-static \
+ --disable-guile \
+ --disable-valgrind-tests \
+ --without-included-libtasn1 \
+ --enable-cxx \
+ --enable-manpages \
+ --enable-tests \
+ --disable-full-test-suite \
+ --disable-sslv2-support \
+ --with-zlib \
+ --with-p11-kit
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+utils() {
+ pkgdesc="Command line tools for TLS protocol"
+ mkdir -p "$subpkgdir"/usr/
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+xx() {
+ pkgdesc="The C++ interface to GnuTLS"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/lib*xx.so.* "$subpkgdir"/usr/lib/
+}
+
+sha512sums="1f2bd3203ea96844c531be700b44623b79f46743143edf97011aab07895ca18d62f1659c7fafc5e1c4b0686fde490836f00358bdd60d6ac0b842526db002da23 gnutls-3.6.1.tar.xz
+14b1be86a0180c914aaaada261ccf01914d48df9510b57572e4f32683d1dd984a907ecf2c848cc4773b1c139059de26383a2c617f509f8c75b985668a23fd28d tests-date-compat.patch"
diff --git a/harmony/gnutls/tests-date-compat.patch b/harmony/gnutls/tests-date-compat.patch
new file mode 100644
index 000000000..2717ab230
--- /dev/null
+++ b/harmony/gnutls/tests-date-compat.patch
@@ -0,0 +1,12 @@
+Busybox date does not support %N, this is GNU extension.
+--- a/tests/scripts/common.sh
++++ b/tests/scripts/common.sh
+@@ -59,7 +59,7 @@
+ }
+
+ # Find a port number not currently in use.
+-GETPORT='rc=0; myrandom=$(date +%N | sed s/^0*//)
++GETPORT='rc=0; myrandom=$(date +%s | sed s/^0*//)
+ while test $rc = 0;do
+ PORT="$(((($$<<15)|$myrandom) % 63001 + 2000))"
+ check_if_port_in_use $PORT;rc=$?
diff --git a/harmony/gpgme/APKBUILD b/harmony/gpgme/APKBUILD
new file mode 100644
index 000000000..313d552a6
--- /dev/null
+++ b/harmony/gpgme/APKBUILD
@@ -0,0 +1,59 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=gpgme
+pkgver=1.9.0
+pkgrel=2
+pkgdesc="GnuPG Made Easy"
+url="http://www.gnupg.org/related_software/gpgme/"
+arch="all"
+license="GPL"
+depends="gnupg"
+depends_dev="libgpg-error-dev libassuan-dev qt5-qtbase-dev"
+makedepends="$depends_dev"
+subpackages="$pkgname-dev $pkgname-doc gpgmepp qgpgme"
+source="ftp://ftp.gnupg.org/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2
+ fix-bashism.patch"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+qgpgme() {
+ pkgdesc="$pkgdesc (Qt 5 library)"
+ mkdir -p "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/libqgpgme.so* "$subpkgdir"/usr/lib/
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+gpgmepp() {
+ pkgdesc="C++ bindings for GPGME"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libgpgmepp.so.* "$subpkgdir"/usr/lib/
+}
+
+
+sha512sums="2a33343e907d9d70cc57dc1ef4e1c01995e1030bb0db937f44435643d6abfbb1bd55d52ba241701fa702783ebf035c09941131604fd8a811474b8bee41afccc8 gpgme-1.9.0.tar.bz2
+6d83139277026d280fa08827623196c90c6158ecb9a39b58f58f3b4211d8d1e9694aa255eb71a08e40028776f6cc9df9b8f6a71d918065479504de14619a11bd fix-bashism.patch"
diff --git a/harmony/gpgme/fix-bashism.patch b/harmony/gpgme/fix-bashism.patch
new file mode 100644
index 000000000..19508c96e
--- /dev/null
+++ b/harmony/gpgme/fix-bashism.patch
@@ -0,0 +1,10 @@
+diff --git a/tests/gpg/pinentry b/tests/gpg/pinentry
+index 3b99726..b12caae 100755
+--- a/tests/gpg/pinentry
++++ b/tests/gpg/pinentry
+@@ -1,4 +1,4 @@
+-#! /bin/bash
++#! /bin/sh
+ # Dummy pinentry
+ #
+ # Copyright 2008 g10 Code GmbH
diff --git a/harmony/graphviz/0001-clone-nameclash.patch b/harmony/graphviz/0001-clone-nameclash.patch
new file mode 100644
index 000000000..6222238d8
--- /dev/null
+++ b/harmony/graphviz/0001-clone-nameclash.patch
@@ -0,0 +1,87 @@
+From cb8bbbd3a48fa1f41965617852d11e02eb20b1f0 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 26 Jul 2011 12:41:21 +0000
+Subject: [PATCH] clone nameclash
+
+---
+ lib/gvpr/actions.c | 6 +++---
+ lib/gvpr/actions.h | 2 +-
+ lib/gvpr/compile.c | 2 +-
+ lib/gvpr/gvpr.c | 4 ++--
+ 4 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/lib/gvpr/actions.c b/lib/gvpr/actions.c
+index 05bfcd1..b3b4a60 100644
+--- a/lib/gvpr/actions.c
++++ b/lib/gvpr/actions.c
+@@ -380,7 +380,7 @@ Agraph_t *cloneG(Agraph_t * g, char* name)
+ * graph. Otherwise, create a clone subgraph of g.
+ * Assume obj != NULL.
+ */
+-Agobj_t *clone(Agraph_t * g, Agobj_t * obj)
++Agobj_t *cloneO(Agraph_t * g, Agobj_t * obj)
+ {
+ Agobj_t *nobj = 0;
+ Agedge_t *e;
+@@ -415,8 +415,8 @@ Agobj_t *clone(Agraph_t * g, Agobj_t * obj)
+ case AGINEDGE:
+ case AGOUTEDGE:
+ e = (Agedge_t *) obj;
+- t = (Agnode_t *) clone(g, OBJ(agtail(e)));
+- h = (Agnode_t *) clone(g, OBJ(aghead(e)));
++ t = (Agnode_t *) cloneO(g, OBJ(agtail(e)));
++ h = (Agnode_t *) cloneO(g, OBJ(aghead(e)));
+ name = agnameof (AGMKOUT(e));
+ nobj = (Agobj_t *) openEdge(g, t, h, name);
+ if (nobj)
+diff --git a/lib/gvpr/actions.h b/lib/gvpr/actions.h
+index 5c62a3b..4223c52 100644
+--- a/lib/gvpr/actions.h
++++ b/lib/gvpr/actions.h
+@@ -22,7 +22,7 @@ extern "C" {
+ #include "expr.h"
+
+ extern void nodeInduce(Agraph_t * selected);
+- extern Agobj_t *clone(Agraph_t * g, Agobj_t * obj);
++ extern Agobj_t *cloneO(Agraph_t * g, Agobj_t * obj);
+ extern Agraph_t *cloneG(Agraph_t * g, char* name);
+ extern Agobj_t *copy(Agraph_t * g, Agobj_t * obj);
+ extern int copyAttr(Agobj_t * obj, Agobj_t * obj1);
+diff --git a/lib/gvpr/compile.c b/lib/gvpr/compile.c
+index c157572..0914210 100644
+--- a/lib/gvpr/compile.c
++++ b/lib/gvpr/compile.c
+@@ -1087,7 +1087,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
+ error(ERROR_WARNING, "NULL object passed to clone()");
+ v.integer = 0;
+ } else
+- v.integer = PTR2INT(clone(gp, objp));
++ v.integer = PTR2INT(cloneO(gp, objp));
+ break;
+ case F_cloneG:
+ gp = INT2PTR(Agraph_t *, args[0].integer);
+diff --git a/lib/gvpr/gvpr.c b/lib/gvpr/gvpr.c
+index 0d47d70..9a1bfd1 100644
+--- a/lib/gvpr/gvpr.c
++++ b/lib/gvpr/gvpr.c
+@@ -803,7 +803,7 @@ addOutputGraph (Gpr_t* state, gvpropts* uopts)
+ Agraph_t* g = state->outgraph;
+
+ if ((agroot(g) == state->curgraph) && !uopts->ingraphs)
+- g = (Agraph_t*)clone (0, (Agobj_t *)g);
++ g = (Agraph_t*)cloneO (0, (Agobj_t *)g);
+
+ uopts->n_outgraphs++;
+ uopts->outgraphs = oldof(uopts->outgraphs,Agraph_t*,uopts->n_outgraphs,0);
+@@ -988,7 +988,7 @@ int gvpr (int argc, char *argv[], gvpropts * uopts)
+
+ /* begin graph */
+ if (incoreGraphs && (opts->compflags & CLONE))
+- state->curgraph = (Agraph_t*)clone (0, (Agobj_t*)(state->curgraph));
++ state->curgraph = (Agraph_t*)cloneO (0, (Agobj_t*)(state->curgraph));
+ state->curobj = (Agobj_t *) state->curgraph;
+ state->tvroot = 0;
+ if (bp->begg_stmt)
+--
+1.7.6
+
diff --git a/harmony/graphviz/APKBUILD b/harmony/graphviz/APKBUILD
new file mode 100644
index 000000000..2501e7a98
--- /dev/null
+++ b/harmony/graphviz/APKBUILD
@@ -0,0 +1,120 @@
+# Contributor: Sören Tempel <soeren/alpine@soeren-tempel.net>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=graphviz
+pkgver=2.40.1
+pkgrel=1
+pkgdesc="Graph Visualization Tools"
+url="http://www.graphviz.org/"
+arch="all"
+license="EPL"
+options="!check" # Requires unpackaged Criterion test framework
+depends=""
+depends_dev="zlib-dev libpng-dev libjpeg-turbo-dev expat-dev
+ fontconfig-dev libsm-dev libxext-dev cairo-dev pango-dev
+ librsvg-dev gmp-dev freetype-dev"
+makedepends="$depends_dev flex swig guile-dev m4 libtool
+ bison gtk+2.0-dev lua5.2-dev libltdl"
+install="$pkgname.pre-deinstall"
+triggers="$pkgname.trigger=/usr/lib/graphviz"
+subpackages="$pkgname-dev $pkgname-doc lua-$pkgname:_lua
+ $pkgname-gtk $pkgname-graphs guile-$pkgname:guile"
+source="http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-$pkgver.tar.bz2
+ $pkgname.trigger
+ 0001-clone-nameclash.patch
+ "
+
+prepare() {
+ # Rename unpacked directory with hash in the name to something sane...
+ mv "$srcdir"/$pkgname-stable_release_$pkgver-* "$builddir"
+
+ default_prepare
+
+ cd "$builddir"
+ ./autogen.sh NOCONFIG
+}
+
+build() {
+ cd "$builddir"
+
+ LIBPOSTFIX=/ \
+ LUA=lua5.2 \
+ LUA_CFLAGS="$(pkg-config --cflags lua5.2)" \
+ LUA_LIBS="$(pkg-config --libs lua5.2)" \
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --without-included-ltdl \
+ --disable-ltdl-install \
+ --disable-silent-rules \
+ --enable-ltdl \
+ --with-x \
+ --disable-static \
+ --disable-dependency-tracking \
+ --enable-java=no \
+ --enable-lua=yes \
+ --enable-python34=yes \
+ --enable-tcl=no \
+ --without-mylibgd \
+ --with-ipsepcola \
+ --with-pangocairo \
+ --with-gdk-pixbuf \
+ --with-png \
+ --with-jpeg \
+ --with-rsvg
+
+ if [ "$CARCH" = "x86_64" ]; then
+ # the configure script thinks we have sincos. we dont.
+ sed -i -e '/HAVE_SINCOS/d' config.h
+ fi
+
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" \
+ pkgconfigdir=/usr/lib/pkgconfig \
+ install
+
+ mkdir -p "$pkgdir"/usr/share/doc
+ mv "$pkgdir"/usr/share/graphviz/doc \
+ "$pkgdir"/usr/share/doc/graphviz
+}
+
+guile() {
+ pkgdesc="Guile bindings for graphviz"
+ mkdir -p "$subpkgdir"/usr/lib/graphviz
+ mv "$pkgdir"/usr/lib/graphviz/guile* \
+ "$subpkgdir"/usr/lib/graphviz/
+}
+
+_lua() {
+ pkgdesc="Lua extension for graphviz"
+ mkdir -p "$subpkgdir"/usr/lib/graphviz \
+ "$subpkgdir"/usr/lib/lua
+ mv "$pkgdir"/usr/lib/graphviz/lua \
+ "$subpkgdir"/usr/lib/graphviz
+ mv "$pkgdir"/usr/lib/lua "$subpkgdir"/usr/lib/
+}
+
+gtk() {
+ pkgdesc="Gtk extension for graphviz"
+ mkdir -p "$subpkgdir"/usr/lib/graphviz
+ mv "$pkgdir"/usr/lib/graphviz/libgvplugin_g?k* \
+ "$pkgdir"/usr/lib/graphviz/libgvplugin_rsvg* \
+ "$subpkgdir"/usr/lib/graphviz
+}
+
+graphs() {
+ pkgdesc="Demo graphs for graphviz"
+ mkdir -p "$subpkgdir"/usr/share/graphviz
+ mv "$pkgdir"/usr/share/graphviz/graphs \
+ "$subpkgdir"/usr/share/graphviz/
+}
+
+sha512sums="4e819b3906f3b8e31245a021acd6fae4a1bc55df0a4df6b57a3578a62017e9db0b474a38f3f54682b9e9136d332f2374feee308af489e2848f8bc303ffab58ac graphviz-2.40.1.tar.bz2
+50947e6a11929f724759266f7716d52d10923eba6d59704ab39e4bdf18f8471d548c2b11ab051dd4b67cb82742aaf54d6358890d049d5b5982f3383b65f7ae8c graphviz.trigger
+aa4cbc341906a949a6bf78cadd96c437d6bcc90369941fe03519aa4447731ecbf6063a0dd0366d3e7aaadf22b69e4bcab3f8632a7da7a01f8e08a3be05c2bc5d 0001-clone-nameclash.patch"
diff --git a/harmony/graphviz/graphviz.pre-deinstall b/harmony/graphviz/graphviz.pre-deinstall
new file mode 100644
index 000000000..cfc43bf6a
--- /dev/null
+++ b/harmony/graphviz/graphviz.pre-deinstall
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ -e /usr/lib/graphviz/config6 ]; then
+ rm /usr/lib/graphviz/config6
+fi
diff --git a/harmony/graphviz/graphviz.trigger b/harmony/graphviz/graphviz.trigger
new file mode 100644
index 000000000..99d447b9b
--- /dev/null
+++ b/harmony/graphviz/graphviz.trigger
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /usr/bin/dot -c
diff --git a/harmony/gsl/APKBUILD b/harmony/gsl/APKBUILD
new file mode 100644
index 000000000..a3f60e348
--- /dev/null
+++ b/harmony/gsl/APKBUILD
@@ -0,0 +1,41 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=gsl
+pkgver=2.4
+pkgrel=1
+pkgdesc="The GNU Scientific Library (GSL) is a modern numerical library for C and C++ programmers"
+url="http://www.gnu.org/software/gsl/gsl.html"
+arch="all"
+license="GPL"
+depends=
+makedepends=
+install=
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://ftp.gnu.org/gnu/gsl/gsl-$pkgver.tar.gz
+ dont-disable-deprecated.patch"
+
+# dont-disable-deprecated.patch is workaround for:
+# https://github.com/SciRuby/rb-gsl/issues/40
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="12442b023dd959e8b22a9c486646b5cedec7fdba0daf2604cda365cf96d10d99aefdec2b42e59c536cc071da1525373454e5ed6f4b15293b305ca9b1dc6db130 gsl-2.4.tar.gz
+88d40e599a9e619d8968f9848a91c54492d99032734371ee23072c8dae9d9920da445c1f8a880baa613479facec4afca3d3dec1070c240e5dfd5a662a41c92e8 dont-disable-deprecated.patch"
diff --git a/harmony/gsl/dont-disable-deprecated.patch b/harmony/gsl/dont-disable-deprecated.patch
new file mode 100644
index 000000000..40a7c3bce
--- /dev/null
+++ b/harmony/gsl/dont-disable-deprecated.patch
@@ -0,0 +1,24 @@
+diff -urp gsl-2.2.1/configure.ac patched/configure.ac
+--- gsl-2.2.1/configure.ac 2016-08-31 15:54:07.000000000 +0100
++++ patched/configure.ac 2017-01-31 14:52:10.000000000 +0000
+@@ -575,10 +575,6 @@ AH_BOTTOM([#if defined(GSL_RANGE_CHECK_O
+ AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; }
+ ])
+
+-AH_VERBATIM([GSL_DISABLE_DEPRECATED],
+-[/* Disable deprecated functions and enums while building */
+-#define GSL_DISABLE_DEPRECATED 1])
+-
+ dnl
+ AC_CONFIG_FILES([ \
+ Makefile \
+--- gsl-2.2.1/config.h.in 2016-08-31 15:54:51.000000000 +0100
++++ patched/config.h.in 2017-01-31 16:01:17.000000000 +0000
+@@ -1,8 +1,5 @@
+ /* config.h.in. Generated from configure.ac by autoheader. */
+
+-/* Disable deprecated functions and enums while building */
+-#define GSL_DISABLE_DEPRECATED 1
+-
+ /* Define if you have inline with C99 behavior */
+ #undef HAVE_C99_INLINE
diff --git a/harmony/hexchat/APKBUILD b/harmony/hexchat/APKBUILD
new file mode 100644
index 000000000..5f43c168d
--- /dev/null
+++ b/harmony/hexchat/APKBUILD
@@ -0,0 +1,61 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=hexchat
+pkgver=2.12.4
+pkgrel=1
+pkgdesc="A popular and easy to use graphical IRC (chat) client"
+url="https://hexchat.github.io"
+arch="all"
+license="GPL2+"
+depends=""
+makedepends="gtk+2.0-dev openssl-dev dbus-glib-dev perl-dev libsexy-dev
+ libnotify-dev libproxy-dev bash libtool autoconf automake"
+install=""
+subpackages="$pkgname-doc $pkgname-lang $pkgname-perl:_perl"
+source="https://dl.hexchat.net/hexchat/hexchat-$pkgver-repack.tar.xz
+ pixdata.patch
+ "
+
+builddir="$srcdir"/hexchat-$pkgver
+prepare() {
+ cd "$builddir"
+ default_prepare
+ autoreconf -vif
+}
+
+build() {
+ cd "$builddir"
+ LUA=lua5.3 \
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-openssl \
+ --enable-dbus \
+ --disable-textfe \
+ --enable-perl \
+ --disable-python \
+ --disable-lua
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ # not worth a -dev pkg
+ rm -r "$pkgdir"/usr/include
+}
+
+_perl() {
+ pkgdesc="Perl plugin for Hexchat"
+ depends="$pkgname=$pkgver-r$pkgrel"
+ install_if="$pkgname=$pkgver-r$pkgrel perl"
+ mkdir -p "$subpkgdir"/usr/lib/hexchat/plugins
+ mv "$pkgdir"/usr/lib/hexchat/plugins/perl.so \
+ "$subpkgdir"/usr/lib/hexchat/plugins
+}
+
+sha512sums="30d42f5b488abec3fa457254720a39f62619338a5a2c3fe2e5a255aafe1b19817451b01cd260eab90868df1ebf9f663c60b78b6db974ca3c777272327c0b8a25 hexchat-2.12.4-repack.tar.xz
+5cb7ac95e6d53d677d7ec82485636f2c36003ba7fa0c4d4d353095dc6207c51abdc7a2230d43616895fef8ce2c7c2096bec21ac47117d0adbc7416ff3d4ba2c3 pixdata.patch"
diff --git a/harmony/hexchat/libressl.patch b/harmony/hexchat/libressl.patch
new file mode 100644
index 000000000..d829dee39
--- /dev/null
+++ b/harmony/hexchat/libressl.patch
@@ -0,0 +1,105 @@
+From d583ca7d922e5ac6ff466df2e4411b1303a3a2a3 Mon Sep 17 00:00:00 2001
+From: Florian Stinglmayr <florian@n0la.org>
+Date: Tue, 13 Dec 2016 18:41:43 +0100
+Subject: [PATCH] Use AC_CHECK_FUNCS to find functions not in LibreSSL
+
+LibreSSL might not have all functions of OpenSSL 1.1.0 so use
+AC_CHECK_FUNCS to find them first before using them.
+
+Closes #1899
+Fixes #1898
+---
+ configure.ac | 2 ++
+ src/common/ssl.c | 4 ++--
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 34e6def..1f442c5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -374,6 +374,8 @@ AS_IF([test "$openssl" != no], [
+ openssl=yes
+ COMMON_LIBS="$COMMON_LIBS $OPENSSL_LIBS"
+ COMMON_CFLAGS="$COMMON_CFLAGS $OPENSSL_CFLAGS"
++ dnl Test for various functions that are not available in LibreSSL
++ AC_CHECK_FUNCS([SSL_CTX_get_ssl_method X509_get_signature_nid])
+ ], [
+ unset openssl_path ac_cv_lib_ssl_SSL_new ac_cv_header_openssl_ssl_h
+ AS_IF([test "$openssl" != yes], [
+diff --git a/src/common/ssl.c b/src/common/ssl.c
+index cb58ce2..76fea7b 100644
+--- a/src/common/ssl.c
++++ b/src/common/ssl.c
+@@ -176,7 +176,7 @@ _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl)
+ return 1;
+
+ alg = OBJ_obj2nid (algor->algorithm);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#ifndef HAVE_X509_GET_SIGNATURE_NID
+ sign_alg = OBJ_obj2nid (peer_cert->sig_alg->algorithm);
+ #else
+ sign_alg = X509_get_signature_nid (peer_cert);
+@@ -306,7 +306,7 @@ _SSL_socket (SSL_CTX *ctx, int sd)
+
+ SSL_set_fd (ssl, sd);
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#ifndef HAVE_SSL_CTX_GET_SSL_METHOD
+ method = ctx->method;
+ #else
+ method = SSL_CTX_get_ssl_method (ctx);
+From aa7080f8fe63939d7ff4a0d0b1ec60f0c3eb31be Mon Sep 17 00:00:00 2001
+From: Patrick Griffis <tingping@tingping.se>
+Date: Tue, 13 Dec 2016 17:29:26 -0500
+Subject: [PATCH] Fix building fishlim against libressl also
+
+Also part of #1898
+---
+ configure.ac | 2 +-
+ plugins/fishlim/dh1080.c | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1f442c5..10a1550 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -375,7 +375,7 @@ AS_IF([test "$openssl" != no], [
+ COMMON_LIBS="$COMMON_LIBS $OPENSSL_LIBS"
+ COMMON_CFLAGS="$COMMON_CFLAGS $OPENSSL_CFLAGS"
+ dnl Test for various functions that are not available in LibreSSL
+- AC_CHECK_FUNCS([SSL_CTX_get_ssl_method X509_get_signature_nid])
++ AC_CHECK_FUNCS([SSL_CTX_get_ssl_method X509_get_signature_nid DH_set0_pqg DH_get0_key DH_set0_key])
+ ], [
+ unset openssl_path ac_cv_lib_ssl_SSL_new ac_cv_header_openssl_ssl_h
+ AS_IF([test "$openssl" != yes], [
+diff --git a/plugins/fishlim/dh1080.c b/plugins/fishlim/dh1080.c
+index ff6e579..3611758 100644
+--- a/plugins/fishlim/dh1080.c
++++ b/plugins/fishlim/dh1080.c
+@@ -74,7 +74,7 @@ dh1080_init (void)
+
+ BN_set_word (g, 2);
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#ifndef HAVE_DH_SET0_PQG
+ g_dh->p = p;
+ g_dh->g = g;
+ #else
+@@ -162,7 +162,7 @@ dh1080_generate_key (char **priv_key, char **pub_key)
+ return 0;
+ }
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#ifndef HAVE_DH_GET0_KEY
+ dh_pub_key = dh->pub_key;
+ dh_priv_key = dh->priv_key;
+ #else
+@@ -213,7 +213,7 @@ dh1080_compute_key (const char *priv_key, const char *pub_key, char **secret_key
+
+ priv_key_data = dh1080_decode_b64 (priv_key, &priv_key_len);
+ priv_key_num = BN_bin2bn(priv_key_data, priv_key_len, NULL);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#ifndef HAVE_DH_SET0_KEY
+ dh->priv_key = priv_key_num;
+ #else
+ DH_set0_key (dh, NULL, priv_key_num);
diff --git a/harmony/hexchat/pixdata.patch b/harmony/hexchat/pixdata.patch
new file mode 100644
index 000000000..4e720a848
--- /dev/null
+++ b/harmony/hexchat/pixdata.patch
@@ -0,0 +1,56 @@
+From 4c178782a779f013fafab476506f7d4dae372b8a Mon Sep 17 00:00:00 2001
+From: Patrick Griffis <tingping@tingping.se>
+Date: Sat, 17 Dec 2016 19:55:06 -0500
+Subject: [PATCH] Don't combine compression with pixdata option for icon
+ resources
+
+This made minimal difference and is not recommended by upstream.
+It also is affected by a regression in the latest gdk-pixbuf release.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=776105
+---
+ data/hexchat.gresource.xml | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/data/hexchat.gresource.xml b/data/hexchat.gresource.xml
+index c125da2..5845da5 100644
+--- a/data/hexchat.gresource.xml
++++ b/data/hexchat.gresource.xml
+@@ -1,23 +1,23 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <gresources>
+ <gresource prefix="/icons">
+- <file alias="hexchat.png" preprocess="to-pixdata" compressed="true">icons/hexchat.png</file>
+- <file alias="book.png" preprocess="to-pixdata" compressed="true">icons/book.png</file>
++ <file alias="hexchat.png" preprocess="to-pixdata">icons/hexchat.png</file>
++ <file alias="book.png" preprocess="to-pixdata">icons/book.png</file>
+
+- <file alias="ulist_voice.png" preprocess="to-pixdata" compressed="true">icons/ulist_voice.png</file>
+- <file alias="ulist_halfop.png" preprocess="to-pixdata" compressed="true">icons/ulist_halfop.png</file>
+- <file alias="ulist_op.png" preprocess="to-pixdata" compressed="true">icons/ulist_op.png</file>
+- <file alias="ulist_owner.png" preprocess="to-pixdata" compressed="true">icons/ulist_owner.png</file>
+- <file alias="ulist_founder.png" preprocess="to-pixdata" compressed="true">icons/ulist_founder.png</file>
+- <file alias="ulist_netop.png" preprocess="to-pixdata" compressed="true">icons/ulist_netop.png</file>
++ <file alias="ulist_voice.png" preprocess="to-pixdata">icons/ulist_voice.png</file>
++ <file alias="ulist_halfop.png" preprocess="to-pixdata">icons/ulist_halfop.png</file>
++ <file alias="ulist_op.png" preprocess="to-pixdata">icons/ulist_op.png</file>
++ <file alias="ulist_owner.png" preprocess="to-pixdata">icons/ulist_owner.png</file>
++ <file alias="ulist_founder.png" preprocess="to-pixdata">icons/ulist_founder.png</file>
++ <file alias="ulist_netop.png" preprocess="to-pixdata">icons/ulist_netop.png</file>
+
+- <file alias="tray_fileoffer.png" preprocess="to-pixdata" compressed="true">icons/tray_fileoffer.png</file>
+- <file alias="tray_highlight.png" preprocess="to-pixdata" compressed="true">icons/tray_highlight.png</file>
+- <file alias="tray_message.png" preprocess="to-pixdata" compressed="true">icons/tray_message.png</file>
++ <file alias="tray_fileoffer.png" preprocess="to-pixdata">icons/tray_fileoffer.png</file>
++ <file alias="tray_highlight.png" preprocess="to-pixdata">icons/tray_highlight.png</file>
++ <file alias="tray_message.png" preprocess="to-pixdata">icons/tray_message.png</file>
+
+ <file alias="tree_channel.png" preprocess="to-pixdata">icons/tree_channel.png</file>
+- <file alias="tree_dialog.png" preprocess="to-pixdata" compressed="true">icons/tree_dialog.png</file>
+- <file alias="tree_server.png" preprocess="to-pixdata" compressed="true">icons/tree_server.png</file>
+- <file alias="tree_util.png" preprocess="to-pixdata" compressed="true">icons/tree_util.png</file>
++ <file alias="tree_dialog.png" preprocess="to-pixdata">icons/tree_dialog.png</file>
++ <file alias="tree_server.png" preprocess="to-pixdata">icons/tree_server.png</file>
++ <file alias="tree_util.png" preprocess="to-pixdata">icons/tree_util.png</file>
+ </gresource>
+ </gresources>
diff --git a/harmony/i3lock/APKBUILD b/harmony/i3lock/APKBUILD
new file mode 100644
index 000000000..054541a37
--- /dev/null
+++ b/harmony/i3lock/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
+# Maintainer: Johannes Matheis <jomat+alpinebuild@jmt.gr>
+pkgname=i3lock
+pkgver=2.9.1
+pkgrel=0
+pkgdesc="An improved screenlocker based upon XCB and PAM"
+url="http://i3wm.org/i3lock/"
+arch="all"
+license="MIT"
+depends="xkeyboard-config"
+makedepends="libev-dev cairo-dev linux-pam-dev libxkbcommon-dev
+ xcb-util-image-dev which"
+subpackages="$pkgname-doc"
+source="$url/$pkgname-$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname-$pkgver"
+
+prepare() {
+ default_prepare
+
+ cd "$builddir"
+
+ # Fix ticket FS#31544, sed line taken from gentoo
+ sed -i -e 's:login:base-auth:g' i3lock.pam
+}
+
+build() {
+ cd "$builddir"
+ make
+}
+
+check() {
+ cd "$builddir"
+ ./i3lock -v
+}
+
+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="9b1bfac67a97880e61f8655a9256662ceec51850005298f13247ab570c03715718db84b1afefa979fb9a53a011fa20958f38d05f5378becf7803ece3e804faaf i3lock-2.9.1.tar.bz2"
diff --git a/harmony/iproute2/APKBUILD b/harmony/iproute2/APKBUILD
new file mode 100644
index 000000000..755d5e21a
--- /dev/null
+++ b/harmony/iproute2/APKBUILD
@@ -0,0 +1,59 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=iproute2
+pkgver=4.13.0
+pkgrel=0
+pkgdesc="IP Routing Utilities"
+url="http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2"
+arch="all"
+license="GPL2"
+depends=""
+install="$pkgname.post-install"
+makedepends="bison flex bash libelf-dev"
+options="!check"
+subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch"
+source="http://kernel.org/pub/linux/utils/net/iproute2/iproute2-$pkgver.tar.xz
+ musl-fixes.patch"
+builddir="$srcdir"/$pkgname-$pkgver
+patch_args="-p0"
+
+prepare() {
+ default_prepare
+ cd "$builddir"
+
+ sed -i '/^TARGETS=/s: arpd : :' misc/Makefile
+ sed -i 's:/usr/local:/usr:' tc/m_ipt.c include/iptables.h
+ sed -i -e 's:=/share:=/usr/share:' \
+ -e 's:-Werror::' Makefile
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make CCOPTS="-D_GNU_SOURCE $CFLAGS" LIBDIR=/lib
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+bashcomp() {
+ depends=""
+ pkgdesc="Bash completions for $pkgname"
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ mkdir -p "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/share/bash-completion \
+ "$subpkgdir"/usr/share
+
+ rmdir -p "$pkgdir"/usr/share 2>/dev/null || true
+}
+
+sha512sums="f96d2839aec1f439bfac504c8e3881c063dacbf4c67b15f0e3da9882d2fa013cba33c23602de3eab624e0eecbb911a13967d60bddcdf097f47a580a5a77b5e3a iproute2-4.13.0.tar.xz
+03f41867cc728d3fbf372ef00d8e90debd03671cff052f5e75dcfbeffbdb6e2c4b10d16e0737cdf473b063b710e8e2938a8f64cfa1be93da2c7878ce6ca51583 musl-fixes.patch"
diff --git a/harmony/iproute2/iproute2.post-install b/harmony/iproute2/iproute2.post-install
new file mode 100644
index 000000000..36d567ea2
--- /dev/null
+++ b/harmony/iproute2/iproute2.post-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ "$(readlink /bin/ip)" = "/bin/busybox" ]; then
+ rm -f /bin/ip
+fi
+exit 0
diff --git a/harmony/iproute2/musl-fixes.patch b/harmony/iproute2/musl-fixes.patch
new file mode 100644
index 000000000..0149f6dae
--- /dev/null
+++ b/harmony/iproute2/musl-fixes.patch
@@ -0,0 +1,214 @@
+--- include/linux/if_ether.h 2017-07-06 11:09:53.305214044 -0700
++++ include/linux/if_ether.h 2017-07-06 16:30:06.651369931 -0700
+@@ -22,6 +22,7 @@
+ #define _LINUX_IF_ETHER_H
+
+ #include <linux/types.h>
++#include <linux/libc-compat.h>
+
+ /*
+ * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
+@@ -142,11 +143,13 @@
+ * This is an Ethernet frame header.
+ */
+
++#if __UAPI_DEF_ETHHDR
+ struct ethhdr {
+ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
+ unsigned char h_source[ETH_ALEN]; /* source ether addr */
+ __be16 h_proto; /* packet type ID field */
+ } __attribute__((packed));
++#endif
+
+
+ #endif /* _LINUX_IF_ETHER_H */
+--- include/linux/if_tunnel.h 2017-07-06 11:09:53.305214044 -0700
++++ include/linux/if_tunnel.h 2017-07-06 16:32:23.814172660 -0700
+@@ -2,7 +2,6 @@
+ #define _IF_TUNNEL_H_
+
+ #include <linux/types.h>
+-#include <linux/if.h>
+ #include <linux/ip.h>
+ #include <linux/in6.h>
+ #include <asm/byteorder.h>
+--- include/linux/ip6_tunnel.h 2017-07-06 11:09:53.303214021 -0700
++++ include/linux/ip6_tunnel.h 2017-07-06 16:33:41.630158864 -0700
+@@ -2,7 +2,6 @@
+ #define _IP6_TUNNEL_H
+
+ #include <linux/types.h>
+-#include <linux/if.h> /* For IFNAMSIZ. */
+ #include <linux/in6.h> /* For struct in6_addr. */
+
+ #define IPV6_TLV_TNL_ENCAP_LIMIT 4
+--- include/linux/kernel.h 2017-07-06 11:09:53.303214021 -0700
++++ include/linux/kernel.h 2017-07-06 16:30:06.650369918 -0700
+@@ -1,7 +1,9 @@
+ #ifndef _LINUX_KERNEL_H
+ #define _LINUX_KERNEL_H
+
++#ifdef __GLIBC__
+ #include <linux/sysinfo.h>
++#endif
+
+ /*
+ * 'kernel.h' contains some often-used function prototypes etc
+--- include/linux/libc-compat.h 2017-07-06 11:09:53.302214010 -0700
++++ include/linux/libc-compat.h 2017-07-06 16:30:06.650369918 -0700
+@@ -48,47 +48,57 @@
+ #ifndef _LIBC_COMPAT_H
+ #define _LIBC_COMPAT_H
+
+-/* We have included glibc headers... */
+-#if defined(__GLIBC__)
++/* We're used from userspace... */
++#if !defined(__KERNEL__)
+
+-/* Coordinate with glibc net/if.h header. */
++/* Coordinate with libc net/if.h header. */
+ #if defined(_NET_IF_H) && defined(__USE_MISC)
+
+-/* GLIBC headers included first so don't define anything
++/* libc headers included first so don't define anything
+ * that would already be defined. */
+
+ #define __UAPI_DEF_IF_IFCONF 0
+ #define __UAPI_DEF_IF_IFMAP 0
+ #define __UAPI_DEF_IF_IFNAMSIZ 0
+ #define __UAPI_DEF_IF_IFREQ 0
+-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
+ #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
+-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
++/* If libc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
++#if !defined(__GLIBC__)
++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0
++#else
+ #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+ #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+ #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
++#endif /* !defined(__GLIBC__) */
+
+ #else /* _NET_IF_H */
+
+ /* Linux headers included first, and we must define everything
+- * we need. The expectation is that glibc will check the
++ * we need. The expectation is that libc will check the
+ * __UAPI_DEF_* defines and adjust appropriately. */
+
+ #define __UAPI_DEF_IF_IFCONF 1
+ #define __UAPI_DEF_IF_IFMAP 1
+ #define __UAPI_DEF_IF_IFNAMSIZ 1
+ #define __UAPI_DEF_IF_IFREQ 1
+-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
+ #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
+-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
++/* If libc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
+ #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+
+ #endif /* _NET_IF_H */
+
+-/* Coordinate with glibc netinet/in.h header. */
++/* Coordinate with libc netinet/if_ether.h */
++#ifdef _NETINET_IF_ETHER_H
++#define __UAPI_DEF_ETHHDR 0
++#else
++/* glibc uses __NETINET_IF_ETHER_H and uses the uapi header */
++#define __UAPI_DEF_ETHHDR 1
++#endif /* _NETINET_IF_ETHER_H */
++
++/* Coordinate with libc netinet/in.h header. */
+ #if defined(_NETINET_IN_H)
+
+-/* GLIBC headers included first so don't define anything
++/* libc headers included first so don't define anything
+ * that would already be defined. */
+ #define __UAPI_DEF_IN_ADDR 0
+ #define __UAPI_DEF_IN_IPPROTO 0
+@@ -98,15 +108,7 @@
+ #define __UAPI_DEF_IN_CLASS 0
+
+ #define __UAPI_DEF_IN6_ADDR 0
+-/* The exception is the in6_addr macros which must be defined
+- * if the glibc code didn't define them. This guard matches
+- * the guard in glibc/inet/netinet/in.h which defines the
+- * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
+-#if defined(__USE_MISC) || defined (__USE_GNU)
+ #define __UAPI_DEF_IN6_ADDR_ALT 0
+-#else
+-#define __UAPI_DEF_IN6_ADDR_ALT 1
+-#endif
+ #define __UAPI_DEF_SOCKADDR_IN6 0
+ #define __UAPI_DEF_IPV6_MREQ 0
+ #define __UAPI_DEF_IPPROTO_V6 0
+@@ -117,7 +119,7 @@
+ #else
+
+ /* Linux headers included first, and we must define everything
+- * we need. The expectation is that glibc will check the
++ * we need. The expectation is that libc will check the
+ * __UAPI_DEF_* defines and adjust appropriately. */
+ #define __UAPI_DEF_IN_ADDR 1
+ #define __UAPI_DEF_IN_IPPROTO 1
+@@ -127,7 +129,7 @@
+ #define __UAPI_DEF_IN_CLASS 1
+
+ #define __UAPI_DEF_IN6_ADDR 1
+-/* We unconditionally define the in6_addr macros and glibc must
++/* We unconditionally define the in6_addr macros and libc must
+ * coordinate. */
+ #define __UAPI_DEF_IN6_ADDR_ALT 1
+ #define __UAPI_DEF_SOCKADDR_IN6 1
+@@ -168,18 +170,20 @@
+ /* If we did not see any headers from any supported C libraries,
+ * or we are being included in the kernel, then define everything
+ * that we need. */
+-#else /* !defined(__GLIBC__) */
++#else /* defined(__KERNEL__) */
+
+ /* Definitions for if.h */
+ #define __UAPI_DEF_IF_IFCONF 1
+ #define __UAPI_DEF_IF_IFMAP 1
+ #define __UAPI_DEF_IF_IFNAMSIZ 1
+ #define __UAPI_DEF_IF_IFREQ 1
+-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
+ #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
+-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
++/* If libc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
+ #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+
++/* Definitions for if/ether.h */
++#define __UAPI_DEF_ETHHDR 1
++
+ /* Definitions for in.h */
+ #define __UAPI_DEF_IN_ADDR 1
+ #define __UAPI_DEF_IN_IPPROTO 1
+@@ -208,6 +212,6 @@
+ /* Definitions for xattr.h */
+ #define __UAPI_DEF_XATTR 1
+
+-#endif /* __GLIBC__ */
++#endif /* defined(__KERNEL__) */
+
+ #endif /* _LIBC_COMPAT_H */
+--- include/linux/netfilter_ipv4/ip_tables.h 2017-07-06 11:09:53.310214100 -0700
++++ include/linux/netfilter_ipv4/ip_tables.h 2017-07-06 16:38:57.526211238 -0700
+@@ -17,7 +17,6 @@
+
+ #include <linux/types.h>
+
+-#include <linux/if.h>
+ #include <linux/netfilter_ipv4.h>
+
+ #include <linux/netfilter/x_tables.h>
+--- tc/f_flower.c 2017-07-06 11:09:53.289213865 -0700
++++ tc/f_flower.c 2017-07-06 16:36:04.967030780 -0700
+@@ -15,7 +15,7 @@
+ #include <syslog.h>
+ #include <string.h>
+ #include <net/if.h>
+-#include <linux/if_arp.h>
++#include <net/if_arp.h>
+ #include <linux/if_ether.h>
+ #include <linux/ip.h>
+ #include <linux/tc_act/tc_vlan.h>
diff --git a/harmony/jasper/APKBUILD b/harmony/jasper/APKBUILD
new file mode 100644
index 000000000..74504d503
--- /dev/null
+++ b/harmony/jasper/APKBUILD
@@ -0,0 +1,49 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=jasper
+pkgver=2.0.14
+pkgrel=0
+pkgdesc="A software-based implementation of the codec specified in the emerging JPEG-2000 Part-1 standard"
+url="http://www.ece.uvic.ca/~mdadams/jasper/"
+arch="all"
+license="custom:JasPer2.0"
+depends= #"libjpeg>=8 freeglut libxi libxmu mesa"
+makedepends="libjpeg-turbo-dev cmake"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
+source="http://www.ece.uvic.ca/~frodo/jasper/software/jasper-$pkgver.tar.gz
+ "
+builddir="$srcdir"/$pkgname-$pkgver
+
+# secfixes:
+# 2.0.12-r1:
+# - CVE-2017-1000050
+
+build() {
+ mkdir "$builddir"/obj
+ cd "$builddir"/obj
+ # default of 16 causes stack overflow
+ export CFLAGS="${CFLAGS} -DJPC_QMFB_COLGRPSIZE=6"
+ cmake .. \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib
+
+ make
+}
+
+check() {
+ cd "$builddir"/obj
+ make test
+}
+
+package() {
+ cd "$builddir"/obj
+ make DESTDIR="$pkgdir" install
+}
+
+libs() {
+ pkgdesc="JPEG-2000 library"
+ install -d "$subpkgdir"/usr/
+ mv "$pkgdir"/usr/lib "$subpkgdir"/usr
+}
+
+sha512sums="9e5cffd2e899e37ba08890e2377ddfc3c2fb13d9fe00dea6b4612e4d241a6f4327de6835809b415c41ae4bf44208cf7871c1982ff5fc04ae6bc09fd376b0afc8 jasper-2.0.14.tar.gz"
diff --git a/harmony/kyua/APKBUILD b/harmony/kyua/APKBUILD
new file mode 100644
index 000000000..588e4bfcf
--- /dev/null
+++ b/harmony/kyua/APKBUILD
@@ -0,0 +1,41 @@
+# Maintainer: William Pitcock <nenolod@dereferenced.org>
+pkgname=kyua
+pkgver=0.13
+pkgrel=1
+pkgdesc="testing framework for infrastructure software"
+url="https://github.com/jmmv/kyua"
+arch="all"
+license="BSD"
+depends=""
+makedepends="atf-dev lutok-dev sqlite-dev"
+install=""
+options="!checkroot"
+subpackages="$pkgname-doc"
+source="https://github.com/jmmv/kyua/releases/download/kyua-$pkgver/kyua-$pkgver.tar.gz"
+builddir="$srcdir/kyua-$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 -j1 DESTDIR="$pkgdir" install
+}
+
+md5sums="475203c0877ebe739edf8b8dff4606ec kyua-0.13.tar.gz"
+sha256sums="db6e5d341d5cf7e49e50aa361243e19087a00ba33742b0855d2685c0b8e721d6 kyua-0.13.tar.gz"
+sha512sums="80ecf4fd888d4759122f3c1d1d5b06a19135e06f7bca1ef8458c7a5e78c1b6baff54969c863c93f11c40611ca256fc0334402531397b16788fb3ec701dd278ae kyua-0.13.tar.gz"
diff --git a/harmony/libbluray/APKBUILD b/harmony/libbluray/APKBUILD
new file mode 100644
index 000000000..925ad2cfd
--- /dev/null
+++ b/harmony/libbluray/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Timo Teräs <timo.teras@iki.fi>
+# Maintainer: Timo Teräs <timo.teras@iki.fi>
+pkgname=libbluray
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="a library designed for Blu-Ray Discs playback"
+url="http://www.videolan.org/developers/libbluray.html"
+arch="all"
+license="LGPL"
+options="!check" # Test requires an actual BD-ROM to play
+makedepends="fontconfig-dev libxml2-dev"
+subpackages="$pkgname-dev"
+source="http://download.videolan.org/pub/videolan/libbluray/$pkgver/libbluray-$pkgver.tar.bz2"
+builddir="$srcdir"/libbluray-$pkgver
+
+build() {
+ cd "$builddir"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-bdjava
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="fcf2193c3b76f3436bc88ce8853cac16f29c3bb6c66447109c14202a41ea938cb6814502a8f724fb1b31add6bd36b42d3aed3eb4a8010c123537e073bd7a0be1 libbluray-1.0.0.tar.bz2"
diff --git a/harmony/libcanberra/APKBUILD b/harmony/libcanberra/APKBUILD
new file mode 100644
index 000000000..31cae167b
--- /dev/null
+++ b/harmony/libcanberra/APKBUILD
@@ -0,0 +1,95 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: William Pitcock <nenolod@dereferenced.org>
+pkgname=libcanberra
+pkgver=0.30
+pkgrel=2
+pkgdesc="simple audio library for GTK applications"
+url="http://0pointer.de/lennart/projects/libcanberra/"
+license="LGPL"
+options="!check" # No test suite.
+depends=
+makedepends="gtk+-dev libogg-dev libvorbis-dev alsa-lib-dev libtool gtk+3.0-dev
+ pulseaudio-dev gstreamer-dev"
+install=
+subpackages="$pkgname-dev $pkgname-doc $pkgname-gtk2 $pkgname-gtk3
+ $pkgname-gstreamer $pkgname-pulse"
+source="http://dev.alpinelinux.org/archive/$pkgname/$pkgname-$pkgver.tar.xz"
+arch="all"
+
+depends_dev="$makedepends"
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+prepare() {
+ cd "$builddir"
+ update_config_sub
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-oss
+ make
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+gtk2() {
+ pkgdesc="Gtk+ 2.x Bindings for libcanberra"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libcanberra-gtk.so.* \
+ "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/gtk-2.0 \
+ "$subpkgdir"/usr/lib/
+}
+
+gtk3() {
+ pkgdesc="Gtk+ 3.x Bindings for libcanberra"
+ mkdir -p "$subpkgdir"/usr/lib/gnome-settings-daemon-3.0/gtk-modules \
+ "$subpkgdir"/usr/bin \
+ "$subpkgdir"/usr/share/gnome/autostart \
+ "$subpkgdir"/usr/share/gnome/shutdown \
+ "$subpkgdir"/usr/share/gdm/autostart/LoginWindow
+ mv "$pkgdir"/usr/lib/gtk-3.0 \
+ "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libcanberra-gtk3.so.* \
+ "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/bin/canberra-gtk-play \
+ "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/share/gnome/autostart/libcanberra-login-sound.desktop \
+ "$subpkgdir"/usr/share/gnome/autostart
+ mv "$pkgdir"/usr/share/gnome/shutdown/libcanberra-logout-sound.sh \
+ "$subpkgdir"/usr/share/gnome/autostart/
+ mv "$pkgdir"/usr/share/gdm/autostart/LoginWindow/libcanberra-ready-sound.desktop \
+ "$subpkgdir"/usr/share/gdm/autostart/LoginWindow/
+ mv "$pkgdir"/usr/lib/gnome-settings-daemon-3.0/gtk-modules/canberra-gtk-module.desktop \
+ "$subpkgdir"/usr/lib/gnome-settings-daemon-3.0/gtk-modules/
+}
+
+gstreamer() {
+ pkgdesc="GStreamer backend for libcanberra"
+ install_if="$pkgname=$pkgver-$pkgrel gstreamer"
+ mkdir -p "$subpkgdir"/usr/lib/libcanberra-$pkgver
+ mv "$pkgdir"/usr/lib/libcanberra-$pkgver/libcanberra-gstreamer.so \
+ "$subpkgdir"/usr/lib/libcanberra-$pkgver/
+}
+
+pulse() {
+ pkgdesc="PulseAudio backend for libcanberra"
+ install_if="$pkgname=$pkgver-$pkgrel pulseaudio"
+ mkdir -p "$subpkgdir"/usr/lib/libcanberra-$pkgver
+ mv "$pkgdir"/usr/lib/libcanberra-$pkgver/libcanberra-pulse.so \
+ "$subpkgdir"/usr/lib/libcanberra-$pkgver/
+}
+
+sha512sums="f7543582122256826cd01d0f5673e1e58d979941a93906400182305463d6166855cb51f35c56d807a56dc20b7a64f7ce4391368d24990c1b70782a7d0b4429c2 libcanberra-0.30.tar.xz"
diff --git a/harmony/libevent/APKBUILD b/harmony/libevent/APKBUILD
new file mode 100644
index 000000000..d49dfa5e1
--- /dev/null
+++ b/harmony/libevent/APKBUILD
@@ -0,0 +1,65 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libevent
+pkgver=2.1.8
+pkgrel=3
+pkgdesc="An event notification library"
+url="http://libevent.org/"
+arch="all"
+license="BSD"
+depends=""
+depends_dev="python3"
+makedepends="$depends_dev openssl-dev"
+subpackages="$pkgname-dev"
+source="https://github.com/$pkgname/$pkgname/releases/download/release-${pkgver}-stable/$pkgname-${pkgver}-stable.tar.gz
+ dont-test-fallback.patch
+ fix-test-on-32bit.patch
+ py3_dumpevents.patch
+ py3_rpcgen.patch
+ "
+
+# secfixes:
+# 2.1.8-r0:
+# - CVE-2016-10195
+# - CVE-2016-10196
+# - CVE-2016-10197
+
+builddir="$srcdir"/$pkgname-$pkgver-stable
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --disable-static
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR=$pkgdir install
+}
+
+dev() {
+ replaces="libevent"
+ default_dev
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+sha512sums="a2fd3dd111e73634e4aeb1b29d06e420b15c024d7b47778883b5f8a4ff320b5057a8164c6d50b53bd196c79d572ce2639fe6265e03a93304b09c22b41e4c2a17 libevent-2.1.8-stable.tar.gz
+d059a592252f83a918f0b6237e2dbee1d05822c83372bcd0f658a25428cce109fd088c5dec8320fef4c1aa7a713ada53aae9b7c04d7ca9b039ed4a483ba84146 dont-test-fallback.patch
+7898a00eeab4af7ff3b7c1ee3b90e0d718beba435dfadf015f62084524b2b0f4049c8dd9e16926c61017c01faabf7a51c2f19be7f9532e01278d691acb98465d fix-test-on-32bit.patch
+1f51788db3797870392997d0314fb744ee54d3b1a326d1b67f522fc7af65d50210cb137e8213d35a788bbf3c97aac18cd9860de8af3cb8c82f25e3ae07d662ae py3_dumpevents.patch
+00d0b09425835638a5e29d96d70c855a5c57efb188157b80a3885a2dcbe88709b49ae57aeb6b8b590458a934116cf59934e6e32fbf684b2b3b8333c0dcac837e py3_rpcgen.patch"
diff --git a/harmony/libevent/dont-test-fallback.patch b/harmony/libevent/dont-test-fallback.patch
new file mode 100644
index 000000000..42a40094a
--- /dev/null
+++ b/harmony/libevent/dont-test-fallback.patch
@@ -0,0 +1,16 @@
+The libevent fallback monotonic clock is broken, but it should never be used
+anyway on musl, so disable testing it.
+
+(the brokenness involves gettimeofday, you don't want to know)
+
+--- libevent-2.1.8-stable/test/regress_util.c.old 2017-01-15 03:04:34.000000000 -0600
++++ libevent-2.1.8-stable/test/regress_util.c 2017-09-14 16:25:58.887687965 -0500
+@@ -1482,7 +1482,7 @@
+ { "monotonic_res_fallback", test_evutil_monotonic_res, TT_OFF_BY_DEFAULT, &basic_setup, (void*)"fallback" },
+ { "monotonic_prc", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"" },
+ { "monotonic_prc_precise", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"precise" },
+- { "monotonic_prc_fallback", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"fallback" },
++ /* { "monotonic_prc_fallback", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"fallback" }, */
+ { "date_rfc1123", test_evutil_date_rfc1123, 0, NULL, NULL },
+ END_OF_TESTCASES,
+ };
diff --git a/harmony/libevent/fix-test-on-32bit.patch b/harmony/libevent/fix-test-on-32bit.patch
new file mode 100644
index 000000000..ec120a78c
--- /dev/null
+++ b/harmony/libevent/fix-test-on-32bit.patch
@@ -0,0 +1,11 @@
+--- libevent-2.1.8-stable/test/regress_util.c.old 2018-03-04 21:14:24.344542520 -0600
++++ libevent-2.1.8-stable/test/regress_util.c 2018-03-04 21:24:23.788814572 -0600
+@@ -1411,7 +1411,7 @@
+ { 1255132800, "Sat, 10 Oct 2009 00:00:00 GMT"},
+ { 1289433600, "Thu, 11 Nov 2010 00:00:00 GMT"},
+ { 1323648000, "Mon, 12 Dec 2011 00:00:00 GMT"},
+-#ifndef _WIN32
++#if !defined(_WIN32) && (!defined(__SIZEOF_LONG__) || __SIZEOF_LONG__ > 4)
+ /** In win32 case we have max "23:59:59 January 18, 2038, UTC" for time32 */
+ { 4294967296, "Sun, 07 Feb 2106 06:28:16 GMT"} /* 2^32 */,
+ /** In win32 case we have max "23:59:59, December 31, 3000, UTC" for time64 */
diff --git a/harmony/libevent/libressl.patch b/harmony/libevent/libressl.patch
new file mode 100644
index 000000000..21a750c2c
--- /dev/null
+++ b/harmony/libevent/libressl.patch
@@ -0,0 +1,97 @@
+diff -ru a/openssl-compat.h b/openssl-compat.h
+--- a/openssl-compat.h
++++ b/openssl-compat.h
+@@ -1,7 +1,7 @@
+ #ifndef OPENSSL_COMPAT_H
+ #define OPENSSL_COMPAT_H
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+
+ static inline BIO_METHOD *BIO_meth_new(int type, const char *name)
+ {
+@@ -30,6 +30,6 @@
+
+ #define TLS_method SSLv23_method
+
+-#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */
++#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) */
+
+ #endif /* OPENSSL_COMPAT_H */
+diff -ru a/sample/https-client.c b/sample/https-client.c
+--- a/sample/https-client.c
++++ b/sample/https-client.c
+@@ -312,7 +312,7 @@
+ }
+ uri[sizeof(uri) - 1] = '\0';
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ // Initialize OpenSSL
+ SSL_library_init();
+ ERR_load_crypto_strings();
+@@ -480,7 +480,7 @@
+ SSL_CTX_free(ssl_ctx);
+ if (type == HTTP && ssl)
+ SSL_free(ssl);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ EVP_cleanup();
+ ERR_free_strings();
+
+@@ -492,7 +492,7 @@
+ CRYPTO_cleanup_all_ex_data();
+
+ sk_SSL_COMP_free(SSL_COMP_get_compression_methods());
+-#endif /*OPENSSL_VERSION_NUMBER < 0x10100000L */
++#endif /*OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) */
+
+ #ifdef _WIN32
+ WSACleanup();
+diff -ru a/sample/le-proxy.c b/sample/le-proxy.c
+--- a/sample/le-proxy.c
++++ b/sample/le-proxy.c
+@@ -259,7 +259,7 @@
+
+ if (use_ssl) {
+ int r;
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ SSL_library_init();
+ ERR_load_crypto_strings();
+ SSL_load_error_strings();
+diff -ru a/sample/openssl_hostname_validation.c b/sample/openssl_hostname_validation.c
+--- a/sample/openssl_hostname_validation.c
++++ b/sample/openssl_hostname_validation.c
+@@ -48,7 +48,7 @@
+
+ #define HOSTNAME_MAX_SIZE 255
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #define ASN1_STRING_get0_data ASN1_STRING_data
+ #endif
+
+diff -ru a/test/regress_ssl.c b/test/regress_ssl.c
+--- a/test/regress_ssl.c
++++ b/test/regress_ssl.c
+@@ -186,7 +186,7 @@
+ void
+ init_ssl(void)
+ {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ SSL_library_init();
+ ERR_load_crypto_strings();
+ SSL_load_error_strings();
+@@ -194,6 +194,10 @@
+ if (SSLeay() != OPENSSL_VERSION_NUMBER) {
+ TT_DECLARE("WARN", ("Version mismatch for openssl: compiled with %lx but running with %lx", (unsigned long)OPENSSL_VERSION_NUMBER, (unsigned long) SSLeay()));
+ }
++ if (SSLeay() != LIBRESSL_VERSION_NUMBER) {
++ TT_DECLARE("WARN", ("Version mismatch for libressl: compiled with %lx but running with %lx", (unsigned long)LIBRESSL_VERSION_NUMBER, (unsigned long) SSLeay()));
++ }
++
+ #endif
+ }
+
diff --git a/harmony/libevent/py3_dumpevents.patch b/harmony/libevent/py3_dumpevents.patch
new file mode 100644
index 000000000..3c012ef89
--- /dev/null
+++ b/harmony/libevent/py3_dumpevents.patch
@@ -0,0 +1,30 @@
+--- libevent-2.1.8-stable/test/check-dumpevents.py 2016-10-04 14:55:31.000000000 -0500
++++ libevent-2.1.8-py3-rpcgen/test/check-dumpevents.py 2017-09-14 15:51:16.000000000 -0500
+@@ -15,12 +15,12 @@
+ got_inserted_pos = text.index("Inserted events:\n")
+ got_active_pos = text.index("Active events:\n")
+ except ValueError:
+- print >>sys.stderr, "Missing expected dividing line in dumpevents output"
++ sys.stderr.write("Missing expected dividing line in dumpevents output\n")
+ sys.exit(1)
+
+ if not (expect_inserted_pos < expect_active_pos <
+ got_inserted_pos < got_active_pos):
+- print >>sys.stderr, "Sections out of order in dumpevents output"
++ sys.stderr.write("Sections out of order in dumpevents output\n")
+ sys.exit(1)
+
+ now,T= text[1].split()
+@@ -45,10 +45,10 @@
+ if "Internal" not in s)
+
+ if cleaned_inserted != want_inserted:
+- print >>sys.stderr, "Inserted event lists were not as expected!"
++ sys.stderr.write("Inserted event lists were not as expected!\n")
+ sys.exit(1)
+
+ if set(got_active) != set(want_active):
+- print >>sys.stderr, "Active event lists were not as expected!"
++ sys.stderr.write("Active event lists were not as expected!\n")
+ sys.exit(1)
+
diff --git a/harmony/libevent/py3_rpcgen.patch b/harmony/libevent/py3_rpcgen.patch
new file mode 100644
index 000000000..2ebe974a6
--- /dev/null
+++ b/harmony/libevent/py3_rpcgen.patch
@@ -0,0 +1,423 @@
+--- libevent-2.1.8-stable/event_rpcgen.py 2016-12-06 03:44:11.000000000 -0600
++++ libevent-2.1.8-py3-rpcgen/event_rpcgen.py 2017-09-14 15:17:51.000000000 -0500
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python2
++#!/usr/bin/env python3
+ #
+ # Copyright (c) 2005-2007 Niels Provos <provos@citi.umich.edu>
+ # Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
+@@ -36,10 +36,10 @@
+
+ def declare(s):
+ if not QUIETLY:
+- print s
++ print(s)
+
+ def TranslateList(mylist, mydict):
+- return map(lambda x: x % mydict, mylist)
++ return [x % mydict for x in mylist]
+
+ # Exception class for parse errors
+ class RpcGenError(Exception):
+@@ -57,7 +57,7 @@
+ declare(' Created struct: %s' % name)
+
+ def AddEntry(self, entry):
+- if self._tags.has_key(entry.Tag()):
++ if entry.Tag() in self._tags:
+ raise RpcGenError(
+ 'Entry "%s" duplicates tag number %d from "%s" '
+ 'around line %d' % (entry.Name(), entry.Tag(),
+@@ -78,7 +78,8 @@
+ def PrintIndented(self, file, ident, code):
+ """Takes an array, add indentation to each entry and prints it."""
+ for entry in code:
+- print >>file, '%s%s' % (ident, entry)
++ file.write('{}{}\n'.format(ident, entry))
++ #file.write('%s%s' % (ident, entry))
+
+ class StructCCode(Struct):
+ """ Knows how to generate C code for a struct """
+@@ -88,20 +89,19 @@
+
+ def PrintTags(self, file):
+ """Prints the tag definitions for a structure."""
+- print >>file, '/* Tag definition for %s */' % self._name
+- print >>file, 'enum %s_ {' % self._name.lower()
++ file.write('/* Tag definition for %s */\n' % self._name)
++ file.write('enum %s_ {\n' % self._name.lower())
+ for entry in self._entries:
+- print >>file, ' %s=%d,' % (self.EntryTagName(entry),
+- entry.Tag())
+- print >>file, ' %s_MAX_TAGS' % (self._name.upper())
+- print >>file, '};\n'
++ file.write(' %s=%d,\n' % (self.EntryTagName(entry), entry.Tag()))
++ file.write(' %s_MAX_TAGS\n' % (self._name.upper()))
++ file.write('};\n\n')
+
+ def PrintForwardDeclaration(self, file):
+- print >>file, 'struct %s;' % self._name
++ file.write('struct %s;\n' % self._name)
+
+ def PrintDeclaration(self, file):
+- print >>file, '/* Structure declaration for %s */' % self._name
+- print >>file, 'struct %s_access_ {' % self._name
++ file.write('/* Structure declaration for %s */\n' % self._name)
++ file.write('struct %s_access_ {\n' % self._name)
+ for entry in self._entries:
+ dcl = entry.AssignDeclaration('(*%s_assign)' % entry.Name())
+ dcl.extend(
+@@ -110,20 +110,19 @@
+ dcl.extend(
+ entry.AddDeclaration('(*%s_add)' % entry.Name()))
+ self.PrintIndented(file, ' ', dcl)
+- print >>file, '};\n'
++ file.write('};\n\n')
+
+- print >>file, 'struct %s {' % self._name
+- print >>file, ' struct %s_access_ *base;\n' % self._name
++ file.write('struct %s {\n' % self._name)
++ file.write(' struct %s_access_ *base;\n\n' % self._name)
+ for entry in self._entries:
+ dcl = entry.Declaration()
+ self.PrintIndented(file, ' ', dcl)
+- print >>file, ''
++ file.write('\n')
+ for entry in self._entries:
+- print >>file, ' ev_uint8_t %s_set;' % entry.Name()
+- print >>file, '};\n'
++ file.write(' ev_uint8_t %s_set;\n' % entry.Name())
++ file.write('};\n\n')
+
+- print >>file, \
+-"""struct %(name)s *%(name)s_new(void);
++ file.write("""struct %(name)s *%(name)s_new(void);
+ struct %(name)s *%(name)s_new_with_arg(void *);
+ void %(name)s_free(struct %(name)s *);
+ void %(name)s_clear(struct %(name)s *);
+@@ -133,7 +132,7 @@
+ void evtag_marshal_%(name)s(struct evbuffer *, ev_uint32_t,
+ const struct %(name)s *);
+ int evtag_unmarshal_%(name)s(struct evbuffer *, ev_uint32_t,
+- struct %(name)s *);""" % { 'name' : self._name }
++ struct %(name)s *);\n""" % { 'name' : self._name })
+
+
+ # Write a setting function of every variable
+@@ -146,22 +145,21 @@
+ self.PrintIndented(file, '', entry.AddDeclaration(
+ entry.AddFuncName()))
+
+- print >>file, '/* --- %s done --- */\n' % self._name
++ file.write('/* --- %s done --- */\n\n' % self._name)
+
+ def PrintCode(self, file):
+- print >>file, ('/*\n'
++ file.write(('/*\n'
+ ' * Implementation of %s\n'
+- ' */\n') % self._name
++ ' */\n\n') % self._name)
+
+- print >>file, \
+- 'static struct %(name)s_access_ %(name)s_base__ = {' % \
+- { 'name' : self._name }
++ file.write('static struct %(name)s_access_ %(name)s_base__ = {\n' % \
++ { 'name' : self._name })
+ for entry in self._entries:
+ self.PrintIndented(file, ' ', entry.CodeBase())
+- print >>file, '};\n'
++ file.write('};\n\n')
+
+ # Creation
+- print >>file, (
++ file.write((
+ 'struct %(name)s *\n'
+ '%(name)s_new(void)\n'
+ '{\n'
+@@ -176,77 +174,77 @@
+ ' event_warn("%%s: malloc", __func__);\n'
+ ' return (NULL);\n'
+ ' }\n'
+- ' tmp->base = &%(name)s_base__;\n') % { 'name' : self._name }
++ ' tmp->base = &%(name)s_base__;\n\n') % { 'name' : self._name })
+
+ for entry in self._entries:
+ self.PrintIndented(file, ' ', entry.CodeInitialize('tmp'))
+- print >>file, ' tmp->%s_set = 0;\n' % entry.Name()
++ file.write(' tmp->%s_set = 0;\n\n' % entry.Name())
+
+- print >>file, (
++ file.write((
+ ' return (tmp);\n'
+- '}\n')
++ '}\n\n'))
+
+ # Adding
+ for entry in self._entries:
+ if entry.Array():
+ self.PrintIndented(file, '', entry.CodeAdd())
+- print >>file, ''
++ file.write('\n')
+
+ # Assigning
+ for entry in self._entries:
+ self.PrintIndented(file, '', entry.CodeAssign())
+- print >>file, ''
++ file.write('\n')
+
+ # Getting
+ for entry in self._entries:
+ self.PrintIndented(file, '', entry.CodeGet())
+- print >>file, ''
++ file.write('\n')
+
+ # Clearing
+- print >>file, ( 'void\n'
++ file.write(( 'void\n'
+ '%(name)s_clear(struct %(name)s *tmp)\n'
+ '{'
+- ) % { 'name' : self._name }
++ '\n') % { 'name' : self._name })
+ for entry in self._entries:
+ self.PrintIndented(file, ' ', entry.CodeClear('tmp'))
+
+- print >>file, '}\n'
++ file.write('}\n\n')
+
+ # Freeing
+- print >>file, ( 'void\n'
++ file.write(( 'void\n'
+ '%(name)s_free(struct %(name)s *tmp)\n'
+ '{'
+- ) % { 'name' : self._name }
++ '\n') % { 'name' : self._name })
+
+ for entry in self._entries:
+ self.PrintIndented(file, ' ', entry.CodeFree('tmp'))
+
+- print >>file, (' free(tmp);\n'
+- '}\n')
++ file.write((' free(tmp);\n'
++ '}\n\n'))
+
+ # Marshaling
+- print >>file, ('void\n'
++ file.write(('void\n'
+ '%(name)s_marshal(struct evbuffer *evbuf, '
+ 'const struct %(name)s *tmp)'
+- '{') % { 'name' : self._name }
++ '{\n') % { 'name' : self._name })
+ for entry in self._entries:
+ indent = ' '
+ # Optional entries do not have to be set
+ if entry.Optional():
+ indent += ' '
+- print >>file, ' if (tmp->%s_set) {' % entry.Name()
++ file.write(' if (tmp->%s_set) {\n' % entry.Name())
+ self.PrintIndented(
+ file, indent,
+ entry.CodeMarshal('evbuf', self.EntryTagName(entry),
+ entry.GetVarName('tmp'),
+ entry.GetVarLen('tmp')))
+ if entry.Optional():
+- print >>file, ' }'
++ file.write(' }\n')
+
+- print >>file, '}\n'
++ file.write('}\n\n')
+
+ # Unmarshaling
+- print >>file, ('int\n'
++ file.write(('int\n'
+ '%(name)s_unmarshal(struct %(name)s *tmp, '
+ ' struct evbuffer *evbuf)\n'
+ '{\n'
+@@ -255,14 +253,14 @@
+ ' if (evtag_peek(evbuf, &tag) == -1)\n'
+ ' return (-1);\n'
+ ' switch (tag) {\n'
+- ) % { 'name' : self._name }
++ '\n') % { 'name' : self._name })
+ for entry in self._entries:
+- print >>file, ' case %s:\n' % self.EntryTagName(entry)
++ file.write(' case %s:\n' % self.EntryTagName(entry))
+ if not entry.Array():
+- print >>file, (
++ file.write((
+ ' if (tmp->%s_set)\n'
+ ' return (-1);'
+- ) % (entry.Name())
++ '\n') % (entry.Name()))
+
+ self.PrintIndented(
+ file, ' ',
+@@ -271,26 +269,26 @@
+ entry.GetVarName('tmp'),
+ entry.GetVarLen('tmp')))
+
+- print >>file, ( ' tmp->%s_set = 1;\n' % entry.Name() +
+- ' break;\n' )
+- print >>file, ( ' default:\n'
++ file.write(( ' tmp->%s_set = 1;\n' % entry.Name() +
++ ' break;\n' ))
++ file.write(( ' default:\n'
+ ' return -1;\n'
+ ' }\n'
+- ' }\n' )
++ ' }\n\n' ))
+ # Check if it was decoded completely
+- print >>file, ( ' if (%(name)s_complete(tmp) == -1)\n'
++ file.write(( ' if (%(name)s_complete(tmp) == -1)\n'
+ ' return (-1);'
+- ) % { 'name' : self._name }
++ '\n') % { 'name' : self._name })
+
+ # Successfully decoded
+- print >>file, ( ' return (0);\n'
+- '}\n')
++ file.write(( ' return (0);\n'
++ '}\n\n'))
+
+ # Checking if a structure has all the required data
+- print >>file, (
++ file.write((
+ 'int\n'
+ '%(name)s_complete(struct %(name)s *msg)\n'
+- '{' ) % { 'name' : self._name }
++ '{\n' ) % { 'name' : self._name })
+ for entry in self._entries:
+ if not entry.Optional():
+ code = [
+@@ -303,12 +301,12 @@
+ self.PrintIndented(
+ file, ' ',
+ entry.CodeComplete('msg', entry.GetVarName('msg')))
+- print >>file, (
++ file.write((
+ ' return (0);\n'
+- '}\n' )
++ '}\n\n' ))
+
+ # Complete message unmarshaling
+- print >>file, (
++ file.write((
+ 'int\n'
+ 'evtag_unmarshal_%(name)s(struct evbuffer *evbuf, '
+ 'ev_uint32_t need_tag, struct %(name)s *msg)\n'
+@@ -330,10 +328,10 @@
+ ' error:\n'
+ ' evbuffer_free(tmp);\n'
+ ' return (res);\n'
+- '}\n' ) % { 'name' : self._name }
++ '}\n\n' ) % { 'name' : self._name })
+
+ # Complete message marshaling
+- print >>file, (
++ file.write((
+ 'void\n'
+ 'evtag_marshal_%(name)s(struct evbuffer *evbuf, ev_uint32_t tag, '
+ 'const struct %(name)s *msg)\n'
+@@ -343,7 +341,7 @@
+ ' %(name)s_marshal(buf_, msg);\n'
+ ' evtag_marshal_buffer(evbuf, tag, buf_);\n '
+ ' evbuffer_free(buf_);\n'
+- '}\n' ) % { 'name' : self._name }
++ '}\n\n' ) % { 'name' : self._name })
+
+ class Entry:
+ def __init__(self, type, name, tag):
+@@ -420,7 +418,7 @@
+ "optaddarg" :
+ self._optaddarg and ", const %s value" % self._ctype or ""
+ }
+- for (k, v) in extradict.items():
++ for (k, v) in list(extradict.items()):
+ mapping[k] = v
+
+ return mapping
+@@ -1127,7 +1125,7 @@
+
+ codearrayassign = self._entry.CodeArrayAssign(
+ 'msg->%(name)s_data[off]' % self.GetTranslation(), 'value')
+- code += map(lambda x: ' ' + x, codearrayassign)
++ code += [' ' + x for x in codearrayassign]
+
+ code += TranslateList([
+ ' }',
+@@ -1168,7 +1166,7 @@
+
+ code = TranslateList(code, self.GetTranslation())
+
+- code += map(lambda x: ' ' + x, codearrayadd)
++ code += [' ' + x for x in codearrayadd]
+
+ code += TranslateList([
+ ' msg->%(name)s_set = 1;',
+@@ -1196,7 +1194,7 @@
+
+ code = TranslateList(code, translate)
+
+- code += map(lambda x: ' ' + x, tmp)
++ code += [' ' + x for x in tmp]
+
+ code += [
+ ' }',
+@@ -1261,7 +1259,7 @@
+ code = TranslateList(code, translate)
+
+ if codearrayfree:
+- code += map(lambda x: ' ' + x, codearrayfree)
++ code += [' ' + x for x in codearrayfree]
+ code += [
+ ' }' ]
+
+@@ -1687,23 +1685,23 @@
+
+ declare('... creating "%s"' % header_file)
+ header_fp = open(header_file, 'w')
+- print >>header_fp, factory.HeaderPreamble(filename)
++ header_fp.write(factory.HeaderPreamble(filename))
+
+ # Create forward declarations: allows other structs to reference
+ # each other
+ for entry in entities:
+ entry.PrintForwardDeclaration(header_fp)
+- print >>header_fp, ''
++ header_fp.write('\n')
+
+ for entry in entities:
+ entry.PrintTags(header_fp)
+ entry.PrintDeclaration(header_fp)
+- print >>header_fp, factory.HeaderPostamble(filename)
++ header_fp.write(factory.HeaderPostamble(filename))
+ header_fp.close()
+
+ declare('... creating "%s"' % impl_file)
+ impl_fp = open(impl_file, 'w')
+- print >>impl_fp, factory.BodyPreamble(filename, header_file)
++ impl_fp.write(factory.BodyPreamble(filename, header_file))
+ for entry in entities:
+ entry.PrintCode(impl_fp)
+ impl_fp.close()
+@@ -1713,16 +1711,16 @@
+ CommandLine(sys.argv).run()
+ sys.exit(0)
+
+- except RpcGenError, e:
+- print >>sys.stderr, e
++ except RpcGenError as e:
++ sys.stderr.write(e)
+ sys.exit(1)
+
+- except EnvironmentError, e:
++ except EnvironmentError as e:
+ if e.filename and e.strerror:
+- print >>sys.stderr, "%s: %s" % (e.filename, e.strerror)
++ sys.stderr.write("%s: %s" % (e.filename, e.strerror))
+ sys.exit(1)
+ elif e.strerror:
+- print >> sys.stderr, e.strerror
++ sys.stderr.write(e.strerror)
+ sys.exit(1)
+ else:
+ raise
diff --git a/harmony/libffi/APKBUILD b/harmony/libffi/APKBUILD
new file mode 100644
index 000000000..4f4923b38
--- /dev/null
+++ b/harmony/libffi/APKBUILD
@@ -0,0 +1,57 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libffi
+pkgver=3.2.1
+pkgrel=4
+pkgdesc="A portable, high level programming interface to various calling conventions."
+url="http://sourceware.org/libffi"
+arch="all"
+license="MIT"
+depends=
+makedepends="texinfo"
+checkdepends="dejagnu"
+install=
+subpackages="$pkgname-dev $pkgname-doc"
+source="ftp://sourceware.org/pub/$pkgname/$pkgname-$pkgver.tar.gz
+ disable-ppc-ldvariant.patch
+ fix-testsuite-longdouble.patch
+ gnu-linux-define.patch
+ pax-dlmmap.patch
+ "
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+build () {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --enable-pax_emutramp
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR=""$pkgdir"" install
+ install -m755 -d ""$pkgdir"/usr/share/licenses/$pkgname"
+ install -m644 LICENSE ""$pkgdir"/usr/share/licenses/$pkgname/"
+ # fix location for headers
+ # see also: https://github.com/libffi/libffi/issues/24
+ mkdir -p "$pkgdir"/usr/include/
+ mv "$pkgdir"/usr/lib/libffi-$pkgver/include/*.h \
+ "$pkgdir"/usr/include/
+ rmdir "$pkgdir"/usr/lib/libffi-$pkgver/include || true
+ sed -i -e '/^includedir=/{s,=.*,=/usr/include,g}' \
+ "$pkgdir"/usr/lib/pkgconfig/libffi.pc
+}
+
+sha512sums="980ca30a8d76f963fca722432b1fe5af77d7a4e4d2eac5144fbc5374d4c596609a293440573f4294207e1bdd9fda80ad1e1cafb2ffb543df5a275bc3bd546483 libffi-3.2.1.tar.gz
+cfd3b11a0e168fd74da0a6219c95610df3466b0769966351b2a5076c93a75996daf9aed41644bebb80e28793bbe18d62272385afd7813c472104cc6c93dcba41 disable-ppc-ldvariant.patch
+de92cb20ded7bfefc3e469ba2ac2d9d869d67dc172ec7e2d1222f8530944eb6d5016ae913baf01ac2e26bee1624c682ae9dd08d0e45d5532d59298dbe7e417eb fix-testsuite-longdouble.patch
+264af568ae5388d50f647f891a406945c73cc358692266f65ad341787c0bf5f6bf31203b86c39fa1b338101c1a6d2f4fec60f95a90d379951ff5153f8f9e178f gnu-linux-define.patch
+72486b389db16055ae4d7d33ba0cb05840537e28fe7a86aa89e2cb922592125d99c18c26c5df7ffde6282742e79f2b9126353e58b58f091f0486589e14dd6474 pax-dlmmap.patch"
diff --git a/harmony/libffi/disable-ppc-ldvariant.patch b/harmony/libffi/disable-ppc-ldvariant.patch
new file mode 100644
index 000000000..8b3f9cea0
--- /dev/null
+++ b/harmony/libffi/disable-ppc-ldvariant.patch
@@ -0,0 +1,11 @@
+--- libffi-3.2.1/configure.old 2014-11-12 06:59:57.000000000 -0500
++++ libffi-3.2.1/configure 2017-10-10 05:44:12.732989967 -0400
+@@ -17237,7 +17237,7 @@
+
+ powerpc*-*-linux* | powerpc-*-sysv*)
+ TARGET=POWERPC; TARGETDIR=powerpc
+- HAVE_LONG_DOUBLE_VARIANT=1
++ #HAVE_LONG_DOUBLE_VARIANT=1
+ ;;
+ powerpc-*-amigaos*)
+ TARGET=POWERPC; TARGETDIR=powerpc
diff --git a/harmony/libffi/fix-testsuite-longdouble.patch b/harmony/libffi/fix-testsuite-longdouble.patch
new file mode 100644
index 000000000..20fe4b8c6
--- /dev/null
+++ b/harmony/libffi/fix-testsuite-longdouble.patch
@@ -0,0 +1,44 @@
+--- libffi-3.2.1/testsuite/libffi.call/cls_align_longdouble_split.c.old 2014-11-08 07:47:24.000000000 -0500
++++ libffi-3.2.1/testsuite/libffi.call/cls_align_longdouble_split.c 2017-10-10 06:04:26.293045176 -0400
+@@ -6,7 +6,7 @@
+
+ /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
+ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
+-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
++/* { dg-options -mlong-double-64 { target powerpc64*-*-linux* } } */
+ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
+
+ #include "ffitest.h"
+--- libffi-3.2.1/testsuite/libffi.call/cls_align_longdouble_split2.c.old 2014-11-08 07:47:24.000000000 -0500
++++ libffi-3.2.1/testsuite/libffi.call/cls_align_longdouble_split2.c 2017-10-10 06:04:54.283046103 -0400
+@@ -7,7 +7,7 @@
+
+ /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
+ /* { dg-do run { xfail strongarm*-*-* } } */
+-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
++/* { dg-options -mlong-double-64 { target powerpc64*-*-linux* } } */
+ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
+
+ #include "ffitest.h"
+--- libffi-3.2.1/testsuite/libffi.call/cls_longdouble.c.old 2014-11-08 07:47:24.000000000 -0500
++++ libffi-3.2.1/testsuite/libffi.call/cls_longdouble.c 2017-10-10 06:05:19.683046965 -0400
+@@ -8,7 +8,7 @@
+ /* This test is known to PASS on armv7l-unknown-linux-gnueabihf, so I have
+ remove the xfail for arm*-*-* below, until we know more. */
+ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
+-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
++/* { dg-options -mlong-double-64 { target powerpc64*-*-linux* } } */
+ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
+
+ #include "ffitest.h"
+--- libffi-3.2.1/testsuite/libffi.call/huge_struct.c.old 2014-11-08 07:47:24.000000000 -0500
++++ libffi-3.2.1/testsuite/libffi.call/huge_struct.c 2017-10-10 06:05:39.383047674 -0400
+@@ -7,7 +7,7 @@
+
+ /* { dg-excess-errors "" { target x86_64-*-mingw* x86_64-*-cygwin* } } */
+ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
+-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
++/* { dg-options -mlong-double-64 { target powerpc64*-*-linux* } } */
+ /* { dg-options -Wformat=0 { target moxie*-*-elf } } */
+ /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
+
diff --git a/harmony/libffi/gnu-linux-define.patch b/harmony/libffi/gnu-linux-define.patch
new file mode 100644
index 000000000..8dcae738b
--- /dev/null
+++ b/harmony/libffi/gnu-linux-define.patch
@@ -0,0 +1,15 @@
+http://bugs.alpinelinux.org/issues/4275
+
+diff --git a/closures.c.orig b/closures.c
+index 721ff00..22a699c 100644
+--- a/src/closures.c.orig
++++ b/src/closures.c
+@@ -34,7 +34,7 @@
+ #include <ffi_common.h>
+
+ #if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE
+-# if __gnu_linux__ && !defined(__ANDROID__)
++# if __linux__ && !defined(__ANDROID__)
+ /* This macro indicates it may be forbidden to map anonymous memory
+ with both write and execute permission. Code compiled when this
+ option is defined will attempt to map such pages once, but if it
diff --git a/harmony/libffi/pax-dlmmap.patch b/harmony/libffi/pax-dlmmap.patch
new file mode 100644
index 000000000..ec4150410
--- /dev/null
+++ b/harmony/libffi/pax-dlmmap.patch
@@ -0,0 +1,120 @@
+From 48d2e46528fb6e621d95a7fa194069fd136b712d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Stefan=20B=C3=BChler?= <buehler@cert.uni-stuttgart.de>
+Date: Wed, 7 Sep 2016 15:49:48 +0200
+Subject: [PATCH 1/2] dlmmap_locked always needs locking as it always modifies
+ execsize
+
+---
+ src/closures.c | 13 ++++---------
+ 1 file changed, 4 insertions(+), 9 deletions(-)
+
+diff --git a/src/closures.c b/src/closures.c
+index 2e0ffb45..04d6e27f 100644
+--- a/src/closures.c
++++ b/src/closures.c
+@@ -769,16 +769,11 @@ dlmmap (void *start, size_t length, int prot,
+ MREMAP_DUP and prot at this point. */
+ }
+
+- if (execsize == 0 || execfd == -1)
+- {
+- pthread_mutex_lock (&open_temp_exec_file_mutex);
+- ptr = dlmmap_locked (start, length, prot, flags, offset);
+- pthread_mutex_unlock (&open_temp_exec_file_mutex);
++ pthread_mutex_lock (&open_temp_exec_file_mutex);
++ ptr = dlmmap_locked (start, length, prot, flags, offset);
++ pthread_mutex_unlock (&open_temp_exec_file_mutex);
+
+- return ptr;
+- }
+-
+- return dlmmap_locked (start, length, prot, flags, offset);
++ return ptr;
+ }
+
+ /* Release memory at the given address, as well as the corresponding
+
+From 7aad5f895e2dfdb79d2ef67e1b231d21063e6511 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Stefan=20B=C3=BChler?= <buehler@cert.uni-stuttgart.de>
+Date: Wed, 7 Sep 2016 15:50:54 +0200
+Subject: [PATCH 2/2] ignore PaX EMUTRAMP flag; instead check for MPROTECT
+
+- code using ffi_closure_alloc doesn't necessarily generate gcc compatible trampolines; only those are allowed by PaX
+- if MPROTECT is enabled use the same workaround as is used for SELinux (double mmap())
+---
+ src/closures.c | 29 +++++++++++++----------------
+ 1 file changed, 13 insertions(+), 16 deletions(-)
+
+diff --git a/src/closures.c b/src/closures.c
+index 04d6e27f..babecc1a 100644
+--- a/src/closures.c
++++ b/src/closures.c
+@@ -401,14 +401,15 @@ selinux_enabled_check (void)
+
+ #endif /* !FFI_MMAP_EXEC_SELINUX */
+
+-/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */
++/* On PaX enable kernels that have MPROTECT enabled we can't use PROT_EXEC. */
+ #ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX
+ #include <stdlib.h>
+
+-static int emutramp_enabled = -1;
++/* -1: not read yet; 0: no PaX or MPROTECT disabled; 1: MPROTECT enabled. */
++static int mprotect_enabled = -1;
+
+ static int
+-emutramp_enabled_check (void)
++mprotect_enabled_check (void)
+ {
+ char *buf = NULL;
+ size_t len = 0;
+@@ -422,9 +423,7 @@ emutramp_enabled_check (void)
+ while (getline (&buf, &len, f) != -1)
+ if (!strncmp (buf, "PaX:", 4))
+ {
+- char emutramp;
+- if (sscanf (buf, "%*s %*c%c", &emutramp) == 1)
+- ret = (emutramp == 'E');
++ ret = (NULL != strchr (buf + 4, 'M'));
+ break;
+ }
+ free (buf);
+@@ -432,8 +431,9 @@ emutramp_enabled_check (void)
+ return ret;
+ }
+
+-#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
+- : (emutramp_enabled = emutramp_enabled_check ()))
++#define is_mprotect_enabled() (mprotect_enabled >= 0 ? mprotect_enabled \
++ : (mprotect_enabled = mprotect_enabled_check ()))
++
+ #endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
+
+ #elif defined (__CYGWIN__) || defined(__INTERIX)
+@@ -446,7 +446,7 @@ emutramp_enabled_check (void)
+ #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */
+
+ #ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX
+-#define is_emutramp_enabled() 0
++#define is_mprotect_enabled() 0
+ #endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
+
+ /* Declare all functions defined in dlmalloc.c as static. */
+@@ -750,13 +750,10 @@ dlmmap (void *start, size_t length, int prot,
+ && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
+ && fd == -1 && offset == 0);
+
+- if (execfd == -1 && is_emutramp_enabled ())
+- {
+- ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset);
+- return ptr;
+- }
+-
+- if (execfd == -1 && !is_selinux_enabled ())
++ /* -1 != execfd hints that we already decided to use dlmmap_locked
++ last time. If PaX MPROTECT or SELinux is active fallback to
++ dlmmap_locked. */
++ if (execfd == -1 && !is_mprotect_enabled () && !is_selinux_enabled ())
+ {
+ ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
+
diff --git a/harmony/libgit2/APKBUILD b/harmony/libgit2/APKBUILD
new file mode 100644
index 000000000..e7e4bbfad
--- /dev/null
+++ b/harmony/libgit2/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: Pierre-Gilas MILLON <pgmillon@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libgit2
+pkgver=0.26.0
+pkgrel=0
+pkgdesc="A linkable library for Git"
+url="https://libgit2.github.com/"
+arch="all"
+license="GPL-2.0"
+depends=""
+depends_dev="curl-dev libssh2-dev"
+makedepends="$depends_dev python3 cmake zlib-dev openssl-dev"
+subpackages="$pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz
+ build-both-static-dynamic.patch
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 0.25.1-r0:
+# - CVE-2016-10128
+# - CVE-2016-10129
+# - CVE-2016-10130
+# 0.24.3-r0:
+# - CVE-2016-8568
+# - CVE-2016-8569
+
+build() {
+ cd "$builddir"
+ cmake \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS"
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b6e51f2216c7c23f352572b780ea1325a25a517396709f036bb573295c2bd02aa505ba616846ac7e07863e99e640e7d47fefc5727478a257b283da99060ee47c libgit2-0.26.0.tar.gz
+39534d10f38f394446f93df810233464807fca3b0e903ee40067971ecbe1d78102bbe04283435032f757f970e6846ecf279eb727ab137c01e84427bd16913ee6 build-both-static-dynamic.patch"
diff --git a/harmony/libgit2/build-both-static-dynamic.patch b/harmony/libgit2/build-both-static-dynamic.patch
new file mode 100644
index 000000000..eeb179a1e
--- /dev/null
+++ b/harmony/libgit2/build-both-static-dynamic.patch
@@ -0,0 +1,53 @@
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Mon, 11 Apr 2017 3:23:00 +0200
+Subject: [PATCH] Build both static and dynamic library
+
+This is very hack-ish, it makes option BUILD_SHARED_LIBS unusable.
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -28,7 +28,6 @@
+ # Build options
+ #
+ OPTION( SONAME "Set the (SO)VERSION of the target" ON )
+-OPTION( BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON )
+ OPTION( THREADSAFE "Build libgit2 as threadsafe" ON )
+ OPTION( BUILD_CLAR "Build Tests using the Clar suite" ON )
+ OPTION( BUILD_EXAMPLES "Build library usage example apps" OFF )
+@@ -44,6 +43,8 @@
+ OPTION( CURL "Use curl for HTTP if available" ON)
+ OPTION( DEBUG_POOL "Enable debug pool allocator" OFF )
+
++SET( BUILD_SHARED_LIBS ON )
++
+ IF(DEBUG_POOL)
+ ADD_DEFINITIONS(-DGIT_DEBUG_POOL)
+ ENDIF()
+@@ -602,7 +603,8 @@
+ ENDIF()
+
+ # Compile and link libgit2
+-ADD_LIBRARY(git2 ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1} ${WIN_RC})
++ADD_LIBRARY(objlib OBJECT ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_ZLIB} ${SRC_HTTP} ${SRC_REGEX} ${SRC_SSH} ${SRC_SHA1} ${WIN_RC})
++ADD_LIBRARY(git2 SHARED $<TARGET_OBJECTS:objlib>)
+ TARGET_LINK_LIBRARIES(git2 ${SECURITY_DIRS})
+ TARGET_LINK_LIBRARIES(git2 ${COREFOUNDATION_DIRS})
+ TARGET_LINK_LIBRARIES(git2 ${SSL_LIBRARIES})
+@@ -611,6 +613,9 @@
+ TARGET_LINK_LIBRARIES(git2 ${ICONV_LIBRARIES})
+ TARGET_OS_LIBRARIES(git2)
+
++ADD_LIBRARY(git2_static STATIC $<TARGET_OBJECTS:objlib>)
++SET_TARGET_PROPERTIES(git2_static PROPERTIES OUTPUT_NAME git2 CLEAN_DIRECT_OUTPUT 1)
++
+ # Workaround for Cmake bug #0011240 (see http://public.kitware.com/Bug/view.php?id=11240)
+ # Win64+MSVC+static libs = linker error
+ IF(MSVC AND GIT_ARCH_64 AND NOT BUILD_SHARED_LIBS)
+@@ -639,7 +644,7 @@
+ ENDIF ()
+
+ # Install
+-INSTALL(TARGETS git2
++INSTALL(TARGETS git2 git2_static
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
+ LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
diff --git a/harmony/libgit2/libressl.patch b/harmony/libgit2/libressl.patch
new file mode 100644
index 000000000..967cdc498
--- /dev/null
+++ b/harmony/libgit2/libressl.patch
@@ -0,0 +1,12 @@
+diff -ru src.orig/libgit2-0.25.1/src/openssl_stream.h src/libgit2-0.25.1/src/openssl_stream.h
+--- libgit2-0.25.1/src/copenssl_stream.h.orig
++++ libgit2-0.25.1/src/openssl_stream.h
+@@ -27,7 +27,7 @@
+
+
+
+-# if OPENSSL_VERSION_NUMBER < 0x10100000L
++# if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+
+ GIT_INLINE(BIO_METHOD*) BIO_meth_new(int type, const char *name)
+ {
diff --git a/harmony/libgit2/pkgconfig-do-not-quote-Libs.patch b/harmony/libgit2/pkgconfig-do-not-quote-Libs.patch
new file mode 100644
index 000000000..86133612e
--- /dev/null
+++ b/harmony/libgit2/pkgconfig-do-not-quote-Libs.patch
@@ -0,0 +1,26 @@
+From 452ba68cde25423d13ebb36f0a54559f07aa53a2 Mon Sep 17 00:00:00 2001
+From: Igor Gnatenko <ignatenko@redhat.com>
+Date: Tue, 7 Feb 2017 16:37:47 +0100
+Subject: [PATCH] pkgconfig: do not quote Libs
+
+It doesn't make sense at all.
+---
+ libgit2.pc.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libgit2.pc.in b/libgit2.pc.in
+index 329a560a7..880266a30 100644
+--- a/libgit2.pc.in
++++ b/libgit2.pc.in
+@@ -6,7 +6,7 @@ Name: libgit2
+ Description: The git library, take 2
+ Version: @LIBGIT2_VERSION_STRING@
+
+-Libs: -L"${libdir}" -lgit2
++Libs: -L${libdir} -lgit2
+ Libs.private: @LIBGIT2_PC_LIBS@
+ Requires.private: @LIBGIT2_PC_REQUIRES@
+
+--
+2.11.0
+
diff --git a/harmony/libnih/APKBUILD b/harmony/libnih/APKBUILD
new file mode 100644
index 000000000..f12895d65
--- /dev/null
+++ b/harmony/libnih/APKBUILD
@@ -0,0 +1,57 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: William Pitcock <nenolod@dereferenced.org>
+pkgname=libnih
+pkgver=1.0.3
+pkgrel=5
+pkgdesc="glib-like library for embedded use"
+url="http://launchpad.net/libnih"
+arch="all"
+license="LGPL"
+options="!checkroot"
+depends=
+depends_dev="dbus-dev expat-dev"
+makedepends="$depends_dev gettext-dev"
+checkdepends="dbus-x11 linux-headers"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://launchpad.net/libnih/${pkgver%.*}/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz
+ musl-fix-signals.patch
+ disable-broken-test.patch
+ musl-enomem-message.patch
+ parse-test-fix.patch
+ "
+
+builddir="${srcdir}/${pkgname}-${pkgver}"
+prepare() {
+ cd "$builddir"
+ update_config_sub
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ LIBS="-lintl" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --libdir=/lib \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="fce40d2445b28c27b8838631681ca3206a4f053b2dd4fc488fc9ef98bbd3d933e3d62b82cf346be2ef1677f6457f692cf5544cd915a6bb1e5c618f98ffa101b4 libnih-1.0.3.tar.gz
+77a979b3076c4e4229359f28c2e9d4fb66d799a66d60391ab6fd7e0dfe2a615b88330a979877b105293a95ed147546596eca174f52b75beca0457c49a017d040 musl-fix-signals.patch
+b5b77b1f18d7aa5d603a0d312b785c28200c38b7bbe5c384ee576c762bd9e3163682c29dd5410baf18c5c3734f0b719602caa1de096f1758d624d94b7753066a disable-broken-test.patch
+b800c99153ad66c9d7399bc7544a0237de0c7a4ddac129509f13eb1c31805fcac31c93bbf2945da557dfc900c9ec837ec0fded1c3f9887095dae52ff6fc046ec musl-enomem-message.patch
+3f24f648c27e9b5a6872859fe97b34055b0f43b11f0321508852b20b6dd94de5c8d24a6dbaab9d49e7004bf0c571c11ebf520d49630d8a89bceeb7783de7dcd2 parse-test-fix.patch"
diff --git a/harmony/libnih/disable-broken-test.patch b/harmony/libnih/disable-broken-test.patch
new file mode 100644
index 000000000..15027945a
--- /dev/null
+++ b/harmony/libnih/disable-broken-test.patch
@@ -0,0 +1,11 @@
+--- libnih-1.0.3/nih/tests/test_child.c.old 2010-09-20 18:17:01.000000000 -0500
++++ libnih-1.0.3/nih/tests/test_child.c 2017-09-27 20:22:23.576368549 -0500
+@@ -652,7 +652,7 @@
+ char *argv[])
+ {
+ test_add_watch ();
+- test_poll ();
++ // test_poll ();
+
+ return 0;
+ }
diff --git a/harmony/libnih/musl-enomem-message.patch b/harmony/libnih/musl-enomem-message.patch
new file mode 100644
index 000000000..2adeff852
--- /dev/null
+++ b/harmony/libnih/musl-enomem-message.patch
@@ -0,0 +1,489 @@
+--- libnih-1.0.3/nih-dbus-tool/tests/test_parse.c.old 2010-09-20 18:17:01.000000000 -0500
++++ libnih-1.0.3/nih-dbus-tool/tests/test_parse.c 2017-09-27 20:40:32.998734677 -0500
+@@ -1583,11 +1583,16 @@
+ Signal * signal;
+ Property * property;
+ Argument * argument;
++ char mem_error[280] = "test:foo:[0-9]*:[0-9]*: ";
+
+ TEST_FUNCTION ("parse_xml");
+ fp = tmpfile ();
+ output = tmpfile ();
+
++
++ strerror_r(ENOMEM, mem_error+24, 254);
++ mem_error[strlen(mem_error)] = '\n';
++
+ /* Check that a file containing a single node entity is parsed
+ * successfully, returning a Node structure with no information
+ * attached.
+@@ -1608,8 +1613,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -1645,8 +1649,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -1686,8 +1689,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -1743,8 +1745,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -1800,8 +1801,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -1857,8 +1857,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -1916,8 +1915,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -1973,8 +1971,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2047,8 +2044,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2121,8 +2117,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2195,8 +2190,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2271,8 +2265,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2345,8 +2338,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2419,8 +2411,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2493,8 +2484,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2567,8 +2557,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2641,8 +2630,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2729,8 +2717,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2817,8 +2804,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2904,8 +2890,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -2992,8 +2977,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3107,8 +3091,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3199,8 +3182,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3291,8 +3273,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3417,8 +3398,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3575,8 +3555,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3647,8 +3626,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3719,8 +3697,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3791,8 +3768,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3865,8 +3841,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -3937,8 +3912,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4023,8 +3997,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4108,8 +4081,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4194,8 +4166,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4306,8 +4277,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4426,8 +4396,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4579,8 +4548,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4652,8 +4620,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4725,8 +4692,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4800,8 +4766,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4875,8 +4840,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -4950,8 +4914,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -5027,8 +4990,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -5104,8 +5066,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -5233,8 +5194,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -5570,8 +5530,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
+@@ -5996,8 +5955,7 @@
+ if (test_alloc_failed) {
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_MATCH (output, ("test:foo:[0-9]*:[0-9]*: "
+- "Cannot allocate memory\n"));
++ TEST_FILE_MATCH (output, mem_error);
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
+ continue;
diff --git a/harmony/libnih/musl-fix-signals.patch b/harmony/libnih/musl-fix-signals.patch
new file mode 100644
index 000000000..97ef8196d
--- /dev/null
+++ b/harmony/libnih/musl-fix-signals.patch
@@ -0,0 +1,12 @@
+--- libnih-1.0.3.orig/nih/signal.c
++++ libnih-1.0.3/nih/signal.c
+@@ -87,7 +87,9 @@
+ { SIGSTKFLT, "STKFLT" },
+ #endif
+ { SIGCHLD, "CHLD" },
++#ifdef SIGCLD
+ { SIGCLD, "CLD" },
++#endif
+ { SIGCONT, "CONT" },
+ { SIGSTOP, "STOP" },
+ { SIGTSTP, "TSTP" },
diff --git a/harmony/libnih/parse-test-fix.patch b/harmony/libnih/parse-test-fix.patch
new file mode 100644
index 000000000..e993bf324
--- /dev/null
+++ b/harmony/libnih/parse-test-fix.patch
@@ -0,0 +1,11 @@
+--- libnih-1.0.3/nih-dbus-tool/tests/test_parse.c.old 2018-03-02 16:54:29.969068332 -0600
++++ libnih-1.0.3/nih-dbus-tool/tests/test_parse.c 2018-03-02 17:05:41.629074683 -0600
+@@ -7908,7 +7908,7 @@
+
+ TEST_EQ_P (node, NULL);
+
+- TEST_FILE_EQ (output, ("test:foo:2:0: "
++ TEST_FILE_EQ (output, ("test:foo:1:36: "
+ "Invalid object path in <node> name attribute\n"));
+ TEST_FILE_END (output);
+ TEST_FILE_RESET (output);
diff --git a/harmony/libnotify/APKBUILD b/harmony/libnotify/APKBUILD
new file mode 100644
index 000000000..a59730e1b
--- /dev/null
+++ b/harmony/libnotify/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libnotify
+pkgver=0.7.7
+pkgrel=1
+pkgdesc="Desktop notification library"
+url="http://library.gnome.org/devel/notification-spec/"
+arch="all"
+license="LGPL"
+options="!check" # Test suite requires running X11
+subpackages="$pkgname-dev $pkgname-doc"
+depends=
+depends_dev="dbus-dev"
+makedepends="$depends_dev gdk-pixbuf-dev glib-dev autoconf automake
+ gobject-introspection-dev"
+source="https://download.gnome.org/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz"
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-static \
+ --disable-tests
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+sha512sums="133874114407bf12267ef609f5941657181760bc7cf115c5973b1810cb72bf55072b621c143e32be1e7e8b49f244851925d14bc3f9f26457747b8a8695ee9954 libnotify-0.7.7.tar.xz"
diff --git a/harmony/libsndfile/APKBUILD b/harmony/libsndfile/APKBUILD
new file mode 100644
index 000000000..66abef4f7
--- /dev/null
+++ b/harmony/libsndfile/APKBUILD
@@ -0,0 +1,61 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libsndfile
+pkgver=1.0.28
+pkgrel=3
+pkgdesc="A C library for reading and writing files containing sampled sound"
+url="http://www.mega-nerd.com/libsndfile"
+arch="all"
+license="LGPL2+"
+subpackages="$pkgname-dev $pkgname-doc"
+depends=
+depends_dev="flac-dev libvorbis-dev libogg-dev"
+makedepends="linux-headers alsa-lib-dev $depends_dev"
+source="http://www.mega-nerd.com/$pkgname/files/$pkgname-$pkgver.tar.gz
+ CVE-2017-8361_CVE-2017-8363_CVE-2017-8365.patch
+ CVE-2017-8362.patch
+ CVE-2017-12562.patch
+ varargs-32bit.patch
+ "
+
+# secfixes:
+# 1.0.28-r2:
+# - CVE-2017-12562
+# 1.0.28-r0:
+# - CVE-2017-7585
+# - CVE-2017-7741
+# - CVE-2017-7742
+# 1.0.28-r1:
+# - CVE-2017-8361
+# - CVE-2017-8362
+# - CVE-2017-8363
+# - CVE-2017-8365
+
+builddir="$srcdir/$pkgname-$pkgver"
+build () {
+ cd "$builddir"
+ ac_cv_sys_largefile_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" \
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-sqlite \
+ --enable-largefile
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="890731a6b8173f714155ce05eaf6d991b31632c8ab207fbae860968861a107552df26fcf85602df2e7f65502c7256c1b41735e1122485a3a07ddb580aa83b57f libsndfile-1.0.28.tar.gz
+f98c40696fca3e7bca867df993de55bb4145c23428e65d1a669182eb2293046478ac727ae7f94bb77123ef0355c3c53be4f9d6a432665c90c74687d8d3afd9e3 CVE-2017-8361_CVE-2017-8363_CVE-2017-8365.patch
+dfd4b5f1c7471fc416eed5c6040580a020543f145de9103751adaad6ce1c5c6a22abc1cf0ffd381aed3072644cd5ee03ba3598265aa7d202d63167da251cb595 CVE-2017-8362.patch
+814139567d90fb07908014e858c341fe933e04dca69b88ad66078910888237bbeba94f85d9e1489883c424f35fca312eb98c21ae2b122d9289bb6418725cd02e CVE-2017-12562.patch
+2b83bacec23665cd31a596a1ce1fb543f935c7609dfff93a85822f81d66b3483cd547cd043eefb901d543276c270a17add70bf0db6348b5279220a7ecbd8b339 varargs-32bit.patch"
diff --git a/harmony/libsndfile/CVE-2017-12562.patch b/harmony/libsndfile/CVE-2017-12562.patch
new file mode 100644
index 000000000..f195e87e4
--- /dev/null
+++ b/harmony/libsndfile/CVE-2017-12562.patch
@@ -0,0 +1,88 @@
+From cf7a8182c2642c50f1cf90dddea9ce96a8bad2e8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=B6rn=20Heusipp?= <osmanx@problemloesungsmaschine.de>
+Date: Wed, 14 Jun 2017 12:25:40 +0200
+Subject: [PATCH] src/common.c: Fix heap buffer overflows when writing strings
+ in binheader
+
+Fixes the following problems:
+ 1. Case 's' only enlarges the buffer by 16 bytes instead of size bytes.
+ 2. psf_binheader_writef() enlarges the header buffer (if needed) prior to the
+ big switch statement by an amount (16 bytes) which is enough for all cases
+ where only a single value gets added. Cases 's', 'S', 'p' however
+ additionally write an arbitrary length block of data and again enlarge the
+ buffer to the required amount. However, the required space calculation does
+ not take into account the size of the length field which gets output before
+ the data.
+ 3. Buffer size requirement calculation in case 'S' does not account for the
+ padding byte ("size += (size & 1) ;" happens after the calculation which
+ uses "size").
+ 4. Case 'S' can overrun the header buffer by 1 byte when no padding is
+ involved
+ ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ;" while
+ the buffer is only guaranteed to have "size" space available).
+ 5. "psf->header.ptr [psf->header.indx] = 0 ;" in case 'S' always writes 1 byte
+ beyond the space which is guaranteed to be allocated in the header buffer.
+ 6. Case 's' can overrun the provided source string by 1 byte if padding is
+ involved ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ;"
+ where "size" is "strlen (strptr) + 1" (which includes the 0 terminator,
+ plus optionally another 1 which is padding and not guaranteed to be
+ readable via the source string pointer).
+
+Closes: https://github.com/erikd/libsndfile/issues/292
+---
+ src/common.c | 15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/src/common.c b/src/common.c
+index 1a6204ca..6b2a2ee9 100644
+--- a/src/common.c
++++ b/src/common.c
+@@ -681,16 +681,16 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
+ /* Write a C string (guaranteed to have a zero terminator). */
+ strptr = va_arg (argptr, char *) ;
+ size = strlen (strptr) + 1 ;
+- size += (size & 1) ;
+
+- if (psf->header.indx + (sf_count_t) size >= psf->header.len && psf_bump_header_allocation (psf, 16))
++ if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1)))
+ return count ;
+
+ if (psf->rwf_endian == SF_ENDIAN_BIG)
+- header_put_be_int (psf, size) ;
++ header_put_be_int (psf, size + (size & 1)) ;
+ else
+- header_put_le_int (psf, size) ;
++ header_put_le_int (psf, size + (size & 1)) ;
+ memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ;
++ size += (size & 1) ;
+ psf->header.indx += size ;
+ psf->header.ptr [psf->header.indx - 1] = 0 ;
+ count += 4 + size ;
+@@ -703,16 +703,15 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
+ */
+ strptr = va_arg (argptr, char *) ;
+ size = strlen (strptr) ;
+- if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size))
++ if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1)))
+ return count ;
+ if (psf->rwf_endian == SF_ENDIAN_BIG)
+ header_put_be_int (psf, size) ;
+ else
+ header_put_le_int (psf, size) ;
+- memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ;
++ memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + (size & 1)) ;
+ size += (size & 1) ;
+ psf->header.indx += size ;
+- psf->header.ptr [psf->header.indx] = 0 ;
+ count += 4 + size ;
+ break ;
+
+@@ -724,7 +723,7 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
+ size = (size & 1) ? size : size + 1 ;
+ size = (size > 254) ? 254 : size ;
+
+- if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size))
++ if (psf->header.indx + 1 + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, 1 + size))
+ return count ;
+
+ header_put_byte (psf, size) ;
diff --git a/harmony/libsndfile/CVE-2017-8361_CVE-2017-8363_CVE-2017-8365.patch b/harmony/libsndfile/CVE-2017-8361_CVE-2017-8363_CVE-2017-8365.patch
new file mode 100644
index 000000000..1dc5b57f1
--- /dev/null
+++ b/harmony/libsndfile/CVE-2017-8361_CVE-2017-8363_CVE-2017-8365.patch
@@ -0,0 +1,64 @@
+From fd0484aba8e51d16af1e3a880f9b8b857b385eb3 Mon Sep 17 00:00:00 2001
+From: Erik de Castro Lopo <erikd@mega-nerd.com>
+Date: Wed, 12 Apr 2017 19:45:30 +1000
+Subject: [PATCH] FLAC: Fix a buffer read overrun
+
+Buffer read overrun occurs when reading a FLAC file that switches
+from 2 channels to one channel mid-stream. Only option is to
+abort the read.
+
+Closes: https://github.com/erikd/libsndfile/issues/230
+---
+ src/common.h | 1 +
+ src/flac.c | 13 +++++++++++++
+ src/sndfile.c | 1 +
+ 3 files changed, 15 insertions(+)
+
+diff --git a/src/common.h b/src/common.h
+index 0bd810c3..e2669b6a 100644
+--- a/src/common.h
++++ b/src/common.h
+@@ -725,6 +725,7 @@ enum
+ SFE_FLAC_INIT_DECODER,
+ SFE_FLAC_LOST_SYNC,
+ SFE_FLAC_BAD_SAMPLE_RATE,
++ SFE_FLAC_CHANNEL_COUNT_CHANGED,
+ SFE_FLAC_UNKOWN_ERROR,
+
+ SFE_WVE_NOT_WVE,
+diff --git a/src/flac.c b/src/flac.c
+index 84de0e26..986a7b8f 100644
+--- a/src/flac.c
++++ b/src/flac.c
+@@ -434,6 +434,19 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_
+
+ switch (metadata->type)
+ { case FLAC__METADATA_TYPE_STREAMINFO :
++ if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels)
++ { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n"
++ "Nothing to be but to error out.\n" ,
++ psf->sf.channels, metadata->data.stream_info.channels) ;
++ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
++ return ;
++ } ;
++
++ if (psf->sf.channels > 0 && psf->sf.samplerate != (int) metadata->data.stream_info.sample_rate)
++ { psf_log_printf (psf, "Warning: FLAC stream changed sample rates from %d to %d.\n"
++ "Carrying on as if nothing happened.",
++ psf->sf.samplerate, metadata->data.stream_info.sample_rate) ;
++ } ;
+ psf->sf.channels = metadata->data.stream_info.channels ;
+ psf->sf.samplerate = metadata->data.stream_info.sample_rate ;
+ psf->sf.frames = metadata->data.stream_info.total_samples ;
+diff --git a/src/sndfile.c b/src/sndfile.c
+index 41875610..e2a87be8 100644
+--- a/src/sndfile.c
++++ b/src/sndfile.c
+@@ -245,6 +245,7 @@ ErrorStruct SndfileErrors [] =
+ { SFE_FLAC_INIT_DECODER , "Error : problem with initialization of the flac decoder." },
+ { SFE_FLAC_LOST_SYNC , "Error : flac decoder lost sync." },
+ { SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this sample rate." },
++ { SFE_FLAC_CHANNEL_COUNT_CHANGED, "Error : flac channel changed mid stream." },
+ { SFE_FLAC_UNKOWN_ERROR , "Error : unknown error in flac decoder." },
+
+ { SFE_WVE_NOT_WVE , "Error : not a WVE file." },
diff --git a/harmony/libsndfile/CVE-2017-8362.patch b/harmony/libsndfile/CVE-2017-8362.patch
new file mode 100644
index 000000000..54fbfb44c
--- /dev/null
+++ b/harmony/libsndfile/CVE-2017-8362.patch
@@ -0,0 +1,50 @@
+From ef1dbb2df1c0e741486646de40bd638a9c4cd808 Mon Sep 17 00:00:00 2001
+From: Erik de Castro Lopo <erikd@mega-nerd.com>
+Date: Fri, 14 Apr 2017 15:19:16 +1000
+Subject: [PATCH] src/flac.c: Fix a buffer read overflow
+
+A file (generated by a fuzzer) which increased the number of channels
+from one frame to the next could cause a read beyond the end of the
+buffer provided by libFLAC. Only option is to abort the read.
+
+Closes: https://github.com/erikd/libsndfile/issues/231
+---
+ src/flac.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/flac.c b/src/flac.c
+index 5a4f8c21..e4f9aaa0 100644
+--- a/src/flac.c
++++ b/src/flac.c
+@@ -169,6 +169,14 @@ flac_buffer_copy (SF_PRIVATE *psf)
+ const int32_t* const *buffer = pflac->wbuffer ;
+ unsigned i = 0, j, offset, channels, len ;
+
++ if (psf->sf.channels != (int) frame->header.channels)
++ { psf_log_printf (psf, "Error: FLAC frame changed from %d to %d channels\n"
++ "Nothing to do but to error out.\n" ,
++ psf->sf.channels, frame->header.channels) ;
++ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
++ return 0 ;
++ } ;
++
+ /*
+ ** frame->header.blocksize is variable and we're using a constant blocksize
+ ** of FLAC__MAX_BLOCK_SIZE.
+@@ -202,7 +210,6 @@ flac_buffer_copy (SF_PRIVATE *psf)
+ return 0 ;
+ } ;
+
+-
+ len = SF_MIN (pflac->len, frame->header.blocksize) ;
+
+ if (pflac->remain % channels != 0)
+@@ -436,7 +443,7 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_
+ { case FLAC__METADATA_TYPE_STREAMINFO :
+ if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels)
+ { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n"
+- "Nothing to be but to error out.\n" ,
++ "Nothing to do but to error out.\n" ,
+ psf->sf.channels, metadata->data.stream_info.channels) ;
+ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
+ return ;
diff --git a/harmony/libsndfile/varargs-32bit.patch b/harmony/libsndfile/varargs-32bit.patch
new file mode 100644
index 000000000..81f149add
--- /dev/null
+++ b/harmony/libsndfile/varargs-32bit.patch
@@ -0,0 +1,11 @@
+--- libsndfile-1.0.28/src/rf64.c.old 2017-04-02 02:43:22.000000000 -0500
++++ libsndfile-1.0.28/src/rf64.c 2018-03-04 22:35:31.072461118 -0600
+@@ -737,7 +737,7 @@
+
+ pad_size = psf->dataoffset - 16 - psf->header.indx ;
+ if (pad_size >= 0)
+- psf_binheader_writef (psf, "m4z", PAD_MARKER, pad_size, make_size_t (pad_size)) ;
++ psf_binheader_writef (psf, "m4z", PAD_MARKER, (unsigned int) pad_size, make_size_t (pad_size)) ;
+
+ if (wpriv->rf64_downgrade && (psf->filelength < RIFF_DOWNGRADE_BYTES))
+ psf_binheader_writef (psf, "tm8", data_MARKER, psf->datalength) ;
diff --git a/harmony/libssh2/APKBUILD b/harmony/libssh2/APKBUILD
new file mode 100644
index 000000000..1bfdfdef9
--- /dev/null
+++ b/harmony/libssh2/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libssh2
+pkgver=1.8.0
+pkgrel=1
+pkgdesc="library for accessing ssh1/ssh2 protocol servers"
+url="http://libssh2.org/"
+arch="all"
+license="BSD"
+makedepends_host="openssl-dev zlib-dev"
+options="!check"
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc"
+source="http://www.libssh2.org/download/libssh2-$pkgver.tar.gz"
+builddir="$srcdir"/libssh2-$pkgver
+
+prepare() {
+ cd "$builddir"
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --with-libssl-prefix="${CBUILDROOT}"/usr \
+ --disable-rpath
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="289aa45c4f99653bebf5f99565fe9c519abc204feb2084b47b7cc3badc8bf4ecdedd49ea6acdce8eb902b3c00995d5f92a3ca77b2508b92f04ae0e7de7287558 libssh2-1.8.0.tar.gz"
diff --git a/harmony/libtool/APKBUILD b/harmony/libtool/APKBUILD
new file mode 100644
index 000000000..518d33a0a
--- /dev/null
+++ b/harmony/libtool/APKBUILD
@@ -0,0 +1,55 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libtool
+pkgver=2.4.6
+pkgrel=5
+pkgdesc="A generic library support script"
+arch="all"
+license="GPL"
+url="http://www.gnu.org/software/libtool"
+source="ftp://ftp.gnu.org/pub/gnu/libtool/${pkgname}-${pkgver}.tar.gz
+ libtool-fix-cross-compile.patch
+ "
+depends="bash libltdl"
+makedepends="m4 help2man"
+checkdepends="mawk autoconf automake gzip"
+subpackages="libltdl $pkgname-doc"
+options="libtool"
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-static \
+ lt_cv_shlibpath_overrides_runpath=yes
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+check() {
+ cd "$builddir"
+ # Test 70 and 117 are known to fail
+ # Test 170 repeats the entire test suite with shorter max_cmd_len
+ make check TESTSUITEFLAGS="1-69 71-116 118-169"
+}
+
+libltdl() {
+ pkgdesc="Runtime libraries for GNU Libtool Dynamic Module Loader"
+ depends=
+ mkdir -p "$subpkgdir/usr/lib"
+ mv "$pkgdir/usr/lib/libltdl.so"* "$subpkgdir/usr/lib/"
+}
+
+md5sums="addf44b646ddb4e3919805aa88fa7c5e libtool-2.4.6.tar.gz
+3657a65e226879586c29360eac6ae41b libtool-fix-cross-compile.patch"
+sha256sums="e3bd4d5d3d025a36c21dd6af7ea818a2afcd4dfc1ea5a17b39d7854bcd0c06e3 libtool-2.4.6.tar.gz
+c98362e9b1efd90618813a6901144452dc03f51e6300686bb07e068ac851c245 libtool-fix-cross-compile.patch"
+sha512sums="3233d81cb2739a54b840a0a82064eebbfaa4fb442fb993a35d6bd41d8395c51f038c90ae048b9252f172d0a5bbfb4b36e2b13d4477001f9ff7d4124237819a18 libtool-2.4.6.tar.gz
+aa14cadd70a633520249fa3a6a4c45b309a980380e62dd5982b3ae842c478a77401ad809297fceebd167c167b0a19f380e6a6c295bc75d1029d56d3bf262b209 libtool-fix-cross-compile.patch"
diff --git a/harmony/libtool/libtool-fix-cross-compile.patch b/harmony/libtool/libtool-fix-cross-compile.patch
new file mode 100644
index 000000000..585897e0d
--- /dev/null
+++ b/harmony/libtool/libtool-fix-cross-compile.patch
@@ -0,0 +1,36 @@
+--- libtool-2.4.6.orig/build-aux/ltmain.in
++++ libtool-2.4.6/build-aux/ltmain.in
+@@ -6449,7 +6449,7 @@
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+- add_dir=-L$libdir
++ add_dir="-L$lt_sysroot$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+@@ -7628,9 +7628,11 @@
+ test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+- func_replace_sysroot "$libdir"
+- libdir=$func_replace_sysroot_result
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
+ else
+@@ -8360,6 +8362,10 @@
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
diff --git a/harmony/libtool/libtool.patch b/harmony/libtool/libtool.patch
new file mode 100644
index 000000000..4302b7e07
--- /dev/null
+++ b/harmony/libtool/libtool.patch
@@ -0,0 +1,41 @@
+diff --git a/main/libtool/APKBUILD b/main/libtool/APKBUILD
+index de86f2aeb7..3a7d137533 100644
+--- a/main/libtool/APKBUILD
++++ b/main/libtool/APKBUILD
+@@ -4,13 +4,14 @@ pkgver=2.4.6
+ pkgrel=1
+ pkgdesc="A generic library support script"
+ arch="all"
+-license='GPL'
++license="GPL"
+ url="http://www.gnu.org/software/libtool"
+ source="ftp://ftp.gnu.org/pub/gnu/libtool/${pkgname}-${pkgver}.tar.gz
+ libtool-fix-cross-compile.patch
+ "
+ depends="bash libltdl"
+ makedepends="m4 help2man"
++checkdepends="mawk autoconf automake gzip"
+ subpackages="libltdl $pkgname-doc"
+ options="libtool"
+
+@@ -23,7 +24,7 @@ build() {
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-static \
+- || return 1
++ lt_cv_shlibpath_overrides_runpath=yes
+ make
+ }
+
+@@ -32,6 +33,11 @@ package() {
+ make DESTDIR="$pkgdir" install
+ }
+
++check() {
++ cd "$builddir"
++ make check
++}
++
+ libltdl() {
+ pkgdesc="Runtime libraries for GNU Libtool Dynamic Module Loader"
+ depends=
diff --git a/harmony/libvpx/APKBUILD b/harmony/libvpx/APKBUILD
new file mode 100644
index 000000000..27de30e06
--- /dev/null
+++ b/harmony/libvpx/APKBUILD
@@ -0,0 +1,52 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libvpx
+pkgver=1.6.1
+pkgrel=1
+pkgdesc="Library for the vp8 codec"
+url="http://www.webmproject.org/"
+arch="all"
+license="GPL"
+options="!check"
+depends=""
+makedepends="coreutils yasm bash perl which"
+subpackages="$pkgname-dev $pkgname-utils"
+source="https://storage.googleapis.com/downloads.webmproject.org/releases/webm/$pkgname-$pkgver.tar.bz2"
+
+builddir="$srcdir"/$pkgname-$pkgver
+build() {
+ cd "$builddir"
+ # build fix for arm
+ export CROSS=" "
+ bash ./configure \
+ --enable-pic \
+ --enable-libs \
+ --enable-runtime-cpu-detect \
+ --enable-vp8 \
+ --enable-vp9 \
+ --enable-shared \
+ --disable-install-srcs \
+ --enable-postproc
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DIST_DIR="$pkgdir"/usr install
+ chmod 644 "$pkgdir"/usr/include/vpx/*.h \
+ "$pkgdir"/usr/lib/pkgconfig/*
+ chown root:root -R "$pkgdir"
+ chmod 755 "$pkgdir"/usr/lib/*
+}
+
+utils() {
+ pkgdesc="VP8 utilities and tools"
+ install -d "$subpkgdir"/usr
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+sha512sums="1a4b009fe1737715c6563a79848126a5859394a5074b1e9cca9bc2e213df90890c15e708040d5f2c96c7c21e268f51e1352ac6911514bf891a4bf3eea154159d libvpx-1.6.1.tar.bz2"
diff --git a/harmony/libvpx/libm-pc.patch b/harmony/libvpx/libm-pc.patch
new file mode 100644
index 000000000..87f07a398
--- /dev/null
+++ b/harmony/libvpx/libm-pc.patch
@@ -0,0 +1,11 @@
+--- ./libs.mk.orig
++++ ./libs.mk
+@@ -241,7 +241,7 @@
+ $(qexec)echo 'Version: $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)' >> $@
+ $(qexec)echo 'Requires:' >> $@
+ $(qexec)echo 'Conflicts:' >> $@
+- $(qexec)echo 'Libs: -L$${libdir} -lvpx' >> $@
++ $(qexec)echo 'Libs: -L$${libdir} -lvpx -lm' >> $@
+ $(qexec)echo 'Cflags: -I$${includedir}' >> $@
+ INSTALL-LIBS-yes += $(LIBSUBDIR)/pkgconfig/vpx.pc
+ INSTALL_MAPS += $(LIBSUBDIR)/pkgconfig/%.pc %.pc
diff --git a/harmony/libxml2/APKBUILD b/harmony/libxml2/APKBUILD
new file mode 100644
index 000000000..a67c2b550
--- /dev/null
+++ b/harmony/libxml2/APKBUILD
@@ -0,0 +1,78 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=libxml2
+pkgver=2.9.7
+pkgrel=1
+pkgdesc="XML parsing library, version 2"
+url="http://www.xmlsoft.org/"
+arch="all"
+license="MIT"
+depends=
+depends_dev="zlib-dev icu-dev"
+checkdepends="perl tar"
+makedepends="$depends_dev python3-dev"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-utils py-libxml2:py"
+options="!check !strip" # Impossible to run on Python 3
+source="ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ libxml2-2.9.4-remove-pyverify_fd.patch
+ python-segfault-fix.patch
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 2.9.4-r1:
+# - CVE-2016-5131
+# 2.9.4-r2:
+# - CVE-2016-9318
+# 2.9.4-r4:
+# - CVE-2017-5969
+
+prepare() {
+ default_prepare
+ # setup.py is generated
+ rm python/setup.py
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --with-icu \
+ --with-python=/usr/bin/python3 \
+ --disable-static
+ make
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+dev() {
+ default_dev
+ mv "$pkgdir"/usr/lib/*.sh "$subpkgdir"/usr/lib/
+}
+
+py() {
+ cd "$builddir"
+
+ pkgdesc="$pkgname Python bindings"
+ provides="py3-libxml2=$pkgver-r$pkgrel"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/python3* "$subpkgdir"/usr/lib/
+}
+
+utils() {
+ pkgdesc="XML utilities"
+ replaces="libxml2"
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+sha512sums="da06cb7c5032ef4b7c8e902fabb9d2c74634c42c161be07a7c66a00d53a68029f89b0d4de32a6b9d4ff338c2d1d9c4e53aefb9cf50cb1c2d6c6b06b442ef42d5 libxml2-2.9.7.tar.gz
+271e701daf08f10a8b591c5128f596105901a29ecc9ee72f088afab266eaec7932a4a7d2194baa07c69e1aa93f3e9dc01a4a890456f53416c45d490598be41d9 libxml2-2.9.4-remove-pyverify_fd.patch
+384b3d2031cd8f77528190bbb7652faa9ccb22bc604bcf4927e59046d38830dac38010828fe1568b6514976f725981a6d3ac1aa595d31477a36db2afe491452c python-segfault-fix.patch"
diff --git a/harmony/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch b/harmony/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch
new file mode 100644
index 000000000..d05d4cb60
--- /dev/null
+++ b/harmony/libxml2/libxml2-2.9.4-remove-pyverify_fd.patch
@@ -0,0 +1,12 @@
+diff -Nur libxml2-2.9.4.orig/python/types.c libxml2-2.9.4/python/types.c
+--- libxml2-2.9.4.orig/python/types.c 2016-02-09 03:17:33.000000000 -0700
++++ libxml2-2.9.4/python/types.c 2016-12-21 12:34:06.755650986 -0700
+@@ -31,8 +31,6 @@
+ const char *mode;
+
+ fd = PyObject_AsFileDescriptor(f);
+- if (!_PyVerify_fd(fd))
+- return(NULL);
+ /*
+ * Get the flags on the fd to understand how it was opened
+ */
diff --git a/harmony/libxml2/python-segfault-fix.patch b/harmony/libxml2/python-segfault-fix.patch
new file mode 100644
index 000000000..f1f7554eb
--- /dev/null
+++ b/harmony/libxml2/python-segfault-fix.patch
@@ -0,0 +1,36 @@
+Upstream: https://bugzilla.gnome.org/show_bug.cgi?id=791691
+
+From d1ea6250dd00a3b7a92b52a743ec53f7751196e5 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 16 Dec 2017 19:22:23 -0600
+Subject: [PATCH] Python: if message is NULL, use Py_None instead
+
+If the error message is malformed / invalid UTF-8, and the Python 3
+binding is being used, then message may be NULL. This will cause the
+Python interpreter to crash (Segmentation fault) trying to unpack the
+argument list into local variables.
+
+This uses Py_None for message if message is NULL, so that the
+interpreter does not crash.
+---
+ python/libxml.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/python/libxml.c b/python/libxml.c
+index 5b1ff6e8..dae77b88 100644
+--- a/python/libxml.c
++++ b/python/libxml.c
+@@ -1640,6 +1640,10 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNUSED void *ctx, const char *msg,
+ PyTuple_SetItem(list, 0, libxml_xmlPythonErrorFuncCtxt);
+ Py_XINCREF(libxml_xmlPythonErrorFuncCtxt);
+ message = libxml_charPtrConstWrap(str);
++ if (message == NULL) {
++ Py_INCREF(Py_None);
++ message = Py_None;
++ }
+ PyTuple_SetItem(list, 1, message);
+ result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list);
+ Py_XDECREF(list);
+--
+2.14.1
+
diff --git a/harmony/libxslt/APKBUILD b/harmony/libxslt/APKBUILD
new file mode 100644
index 000000000..a43c0ffd3
--- /dev/null
+++ b/harmony/libxslt/APKBUILD
@@ -0,0 +1,40 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+pkgname=libxslt
+pkgver=1.1.31
+pkgrel=0
+pkgdesc="XML stylesheet transformation library"
+url="http://xmlsoft.org/XSLT/"
+arch="all"
+license="custom"
+makedepends="libxml2-dev libgcrypt-dev libgpg-error-dev python3-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="ftp://xmlsoft.org/$pkgname/$pkgname-$pkgver.tar.gz"
+
+# secfixes:
+# 1.1.29-r1:
+# - CVE-2017-5029
+
+build() {
+ cd "$builddir"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install
+ install -D -m644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+}
+
+sha512sums="9012d643625d827b131c825a103f2e2a5f3cbd45d3cdf3318378e8f046da8d084db51c6b0078b5850a26adc81ba3bf357101d65ef510eff54c8b416a71efed92 libxslt-1.1.31.tar.gz"
diff --git a/harmony/lighttpd/APKBUILD b/harmony/lighttpd/APKBUILD
new file mode 100644
index 000000000..356bce93e
--- /dev/null
+++ b/harmony/lighttpd/APKBUILD
@@ -0,0 +1,116 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=lighttpd
+pkgver=1.4.48
+pkgrel=0
+pkgdesc="A secure, fast, compliant and very flexible web-server"
+url="http://www.lighttpd.net/"
+arch="all"
+license="custom"
+install="$pkgname.pre-install $pkgname.pre-upgrade"
+pkgusers="lighttpd"
+pkggroups="lighttpd"
+makedepends="flex pcre-dev openssl-dev zlib-dev bzip2-dev lua5.2-dev
+ automake autoconf openldap-dev libxml2-dev sqlite-dev libev-dev
+ gamin-dev attr-dev"
+subpackages="$pkgname-doc $pkgname-dbg $pkgname-mod_auth $pkgname-openrc
+ $pkgname-mod_webdav"
+source="http://download.lighttpd.net/lighttpd/releases-1.4.x/$pkgname-$pkgver.tar.xz
+ $pkgname.initd
+ $pkgname.confd
+ $pkgname.logrotate
+ lighttpd.conf
+ mime-types.conf
+ mod_cgi.conf
+ mod_fastcgi.conf
+ mod_fastcgi_fpm.conf
+ char-signedness.patch"
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-dependency-tracking \
+ --enable-lfs \
+ --libdir=/usr/lib/lighttpd \
+ --without-mysql \
+ --with-attr \
+ --without-kerberos5 \
+ --with-fam \
+ --with-webdav-props \
+ --with-webdav-locks \
+ --without-gdbm \
+ --with-bzip2 \
+ --with-ldap \
+ --with-openssl \
+ --with-libev \
+ --with-lua
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install
+
+ # create dirs
+ install -d -m755 -o lighttpd -g lighttpd \
+ "$pkgdir"/var/log/lighttpd/
+ install -d -m755 \
+ "$pkgdir"/etc/lighttpd/ \
+ "$pkgdir"/var/www/localhost/htdocs
+
+ # lighttpd
+ install -D -m755 "$srcdir"/lighttpd.initd \
+ "$pkgdir"/etc/init.d/lighttpd
+ install -D -m644 "$srcdir"/lighttpd.confd \
+ "$pkgdir"/etc/conf.d/lighttpd
+ install -D -m644 "$srcdir"/lighttpd.logrotate \
+ "$pkgdir"/etc/logrotate.d/lighttpd
+
+ # config files
+ local i; for i in lighttpd.conf mime-types.conf mod_cgi.conf \
+ mod_fastcgi.conf mod_fastcgi_fpm.conf
+ do
+ install -m644 "$srcdir"/$i "$pkgdir"/etc/lighttpd/$i
+ done
+}
+
+_mv_mod() {
+ mkdir -p "$subpkgdir"/usr/lib/lighttpd
+ while [ $# -gt 0 ]; do
+ mv "$pkgdir"/usr/lib/lighttpd/$1.so \
+ "$subpkgdir"/usr/lib/lighttpd/
+ shift
+ done
+}
+
+mod_auth() {
+ pkgdesc="Authentication module for lighttpd"
+ _mv_mod mod_auth
+}
+
+mod_webdav() {
+ pkgdesc="WebDAV module for lighttpd"
+ _mv_mod mod_webdav
+}
+
+sha512sums="361dbf07b280aa7345f3026cce6d12d0aeaa3bb535b5a5b2a894a568395f46a9c7ce723dfd1948225117495f3e63ec207b72d5e4b680da7cd56419e23cf8bae4 lighttpd-1.4.48.tar.xz
+f2f3c5c7731550237fd75a8de66275f427eaf897cffff7ac7ef44178328ad8fad6c4ec6654759bfc665cbaf7991ddcdf0aaa916831c8b6aa440192d57b242038 lighttpd.initd
+9d2ab5deb7353ebf290e90936b511941df440859c78589d0bcf130ef69a5e9c79e4d318548b6b118df002083c46f7476230a28954b7a10a9dbd05040e02b1291 lighttpd.confd
+0536b4f21d2e8659f7831b45998c13d9f6051ae7ecde13be01f372f837d255bfc4e211de48a7686cc743d53aa9c08ab3f10ec19788896dcf8356b90053ca7a16 lighttpd.logrotate
+b0fd7500ea7f7f7f9fbf04bb66eb06050cfed57bdc1730900b4c559598176442e4504395f1d406e037e7cffeaa1451d40a6cad408570f7f7e1dd6cc26c968912 lighttpd.conf
+a3f2f5763885d7e4f510491b24164e34aaf62bb02daa12991575dc64335c12668355af5bb8d6ce191eb4e9cce95324b1f7c9ba61b323b4e7b50a1e03e021afcf mime-types.conf
+27cc638d8068dcf47bd9db44943d1db6c6f4e8e6abd6b42af7cea004b1c093440068541d98c68f8bea70b956713adaf8ed59a4b642dea826ee8620a05f8cfde5 mod_cgi.conf
+1d15b84c03fb648a0e67ab5c5411b85478b4454c44bc2959cc96d1700eeadd7ff429520a5f1550db6527267646622dccd3d47d3fd1258869fccaf5c22d4ad4b2 mod_fastcgi.conf
+f9efc4b70d825600f5356c30e57d0b6cac11c01739337f7192c09c2cfd96cb76c8328b11d818ea4c2addc1a6d253975b84700106ae75854d55d0df73e220bd2b mod_fastcgi_fpm.conf
+ce35c1d65d7b4fedd1fcfadd8a5e906d5efa8dcda318a4fa69958b708c2df329f708591f43b12adaaac4da6a2913d0cc8f9745e636e7f2016c1075bcd52c6bb2 char-signedness.patch"
diff --git a/harmony/lighttpd/char-signedness.patch b/harmony/lighttpd/char-signedness.patch
new file mode 100644
index 000000000..43f7f5faf
--- /dev/null
+++ b/harmony/lighttpd/char-signedness.patch
@@ -0,0 +1,46 @@
+
+Added by gstrauss 16 days ago
+
+ ID d4083effab0f9bf76528d5c47198b17e7471ed13
+ Parent 0c95ed37
+ Child 37f9b60d
+
+[core] fix base64 decode when char is unsigned (fixes #2848)
+
+thx, codehero
+
+x-ref:
+"buffer_append_base64_decode() broken on compilers where char is assumed unsigned"
+https://redmine.lighttpd.net/issues/2848
+
+diff --git a/src/base64.c b/src/base64.c
+index f39dbaa2..3034181a 100644
+--- a/src/base64.c
++++ b/src/base64.c
+@@ -11,7 +11,7 @@
+
+ /* BASE64_STANDARD: "A-Z a-z 0-9 + /" maps to 0-63, pad with "=" */
+ static const char base64_standard_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+-static const char base64_standard_reverse_table[] = {
++static const signed char base64_standard_reverse_table[] = {
+ /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+ -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, /* 0x00 - 0x0F */
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, /* 0x10 - 0x1F */
+@@ -25,7 +25,7 @@ static const char base64_standard_reverse_table[] = {
+
+ /* BASE64_URL: "A-Z a-z 0-9 - _" maps to 0-63, pad with "." */
+ static const char base64_url_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
+-static const char base64_url_reverse_table[] = {
++static const signed char base64_url_reverse_table[] = {
+ /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+ -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, /* 0x00 - 0x0F */
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, /* 0x10 - 0x1F */
+@@ -42,7 +42,7 @@ unsigned char* buffer_append_base64_decode(buffer *out, const char* in, size_t i
+ size_t out_pos = 0; /* current output character (position) that is decoded. can contain partial result */
+ unsigned int group = 0; /* how many base64 digits in the current group were decoded already. each group has up to 4 digits */
+ size_t i;
+- const char *base64_reverse_table;
++ const signed char *base64_reverse_table;
+
+ switch (charset) {
+ case BASE64_STANDARD:
diff --git a/harmony/lighttpd/lighttpd.conf b/harmony/lighttpd/lighttpd.conf
new file mode 100644
index 000000000..cfec00065
--- /dev/null
+++ b/harmony/lighttpd/lighttpd.conf
@@ -0,0 +1,261 @@
+###################################
+# Default lighttpd.conf for Adélie
+###################################
+
+
+######## Variables ########
+var.basedir = "/var/www/localhost"
+var.logdir = "/var/log/lighttpd"
+var.statedir = "/var/lib/lighttpd"
+
+
+######## Modules ########
+# NOTE: the order of modules is important.
+server.modules = (
+# "mod_rewrite",
+# "mod_redirect",
+# "mod_alias",
+ "mod_access",
+# "mod_cml",
+# "mod_trigger_b4_dl",
+# "mod_auth",
+# "mod_status",
+ "mod_setenv",
+# "mod_proxy",
+# "mod_simple_vhost",
+# "mod_evhost",
+# "mod_userdir",
+ "mod_compress",
+# "mod_ssi",
+# "mod_usertrack",
+ "mod_expire",
+# "mod_secdownload",
+# "mod_rrdtool",
+# "mod_webdav",
+ "mod_accesslog"
+)
+
+
+######## Inclusions ########
+include "mime-types.conf"
+# uncomment for cgi support
+# include "mod_cgi.conf"
+# uncomment for php/fastcgi support
+# include "mod_fastcgi.conf"
+# uncomment for php/fastcgi fpm support
+# include "mod_fastcgi_fpm.conf"
+
+
+######## Global Settings ########
+server.username = "lighttpd"
+server.groupname = "lighttpd"
+
+server.document-root = var.basedir + "/htdocs"
+server.pid-file = "/run/lighttpd.pid"
+
+server.errorlog = var.logdir + "/error.log"
+# To log errors to syslog instead, use:
+# server.errorlog-use-syslog = "enable"
+
+server.indexfiles = ("index.html", "index.htm", "default.htm")
+
+# server.tag = "lighttpd"
+
+server.follow-symlink = "enable"
+
+server.event-handler = "linux-sysepoll"
+
+# To chroot to a directory:
+# server.chroot = "/"
+
+# Default bind port is 80. To change:
+# server.port = 81
+
+# Default bind address is global (0.0.0.0). To change:
+# server.bind = "grisu.home.kneschke.de"
+
+# error-handler for status 404
+# server.error-handler-404 = "/error-handler.html"
+
+# Format: <errorfile-prefix><status-code>.html
+# -> ..../status-404.html for 'File not found'
+# server.errorfile-prefix = var.basedir + "/error/status-"
+
+# FAM support for caching stat() calls
+server.stat-cache-engine = "fam"
+
+# which extensions should not be handled via static-file transfer
+# (extensions that are usually handled by mod_cgi, mod_fastcgi, etc).
+static-file.exclude-extensions = (".php", ".pl", ".cgi", ".fcgi")
+
+
+######## mod_accesslog config ########
+accesslog.filename = var.logdir + "/access.log"
+
+
+######## mod_dirlisting config ########
+# Enable directory listings if no indexfile is present.
+#dir-listing.activate = "enable"
+
+# Don't list hidden files/directories (beginning with '.')
+#dir-listing.hide-dotfiles = "enable"
+#
+# Specify a path here for custom directory listing CSS:
+#dir-listing.external-css = "/path/to/dir-listing.css"
+#
+# Exclude files that match any regex in this list from directory listings:
+#dir-listing.exclude = ("^\.", "~$")
+
+
+######## mod_access config ########
+# See access.txt in lighttpd-doc package for more info.
+
+url.access-deny = ("~", ".inc")
+
+
+######## mod_userdir config ########
+# This will give all users with valid homedirs the chance to publish a
+# webpage from this server using traditional /~username/ paths.
+# See userdir.txt in lighttpd-doc package for more info.
+#
+#userdir.path = "public_html"
+#userdir.exclude-user = ("root")
+
+
+######## mod_ssi config ########
+# This allows you to use server-side includes.
+#ssi.extension = (".shtml")
+
+
+######## SSL config ########
+# See ssl.txt in lighttpd-doc package for more info.
+# The defaults here are NOT the server defaults. You need to uncomment
+# them to use them. They are HIGHLY recommended; by default, lighttpd
+# will serve older TLS protocols that may be vulnerable to attack.
+#
+#ssl.engine = "enable"
+#ssl.honor-cipher-order = "enable"
+#ssl.disable-client-renegotiation = "enable"
+# pemfile is cert+privkey, ca-file is the intermediate chain in one file
+#ssl.pemfile = "/path/to/signed_cert_plus_private_key.pem"
+#ssl.ca-file = "/path/to/intermediate_certificate.pem"
+# ECDH/ECDHE ciphers curve strength (see `openssl ecparam -list_curves`)
+#ssl.ec-curve = "secp384r1"
+# Environment flag for HTTPS enabled
+#setenv.add-environment = (
+# "HTTPS" => "on"
+#)
+# Modern configuration, tweak to your needs
+#ssl.use-sslv2 = "disable"
+#ssl.use-sslv3 = "disable"
+#ssl.cipher-list = "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
+# HSTS(15768000 seconds = 6 months)
+#setenv.add-response-header = (
+# "Strict-Transport-Security" => "max-age=15768000;"
+#)
+
+
+######## mod_status config ########
+# This is generally handy and won't expose any sensitive info.
+#status.status-url = "/server-status"
+# This will expose some of your configuration to the world!
+#status.config-url = "/server-config"
+
+
+######## mod_compress config ########
+compress.cache-dir = var.statedir + "/cache/compress"
+compress.filetype = ("text/plain", "text/html")
+
+
+######## mod_proxy config ########
+# See proxy.txt in lighttpd-doc package for more info.
+# proxy.server = ( ".php" =>
+# ( "localhost" =>
+# (
+# "host" => "192.168.0.101",
+# "port" => 80
+# )
+# )
+# )
+# }}}
+
+
+######## mod_auth config ########
+# See authentication.txt in lighttpd-doc package for more info.
+#auth.backend = "plain"
+#auth.backend.plain.userfile = "lighttpd.user"
+#auth.backend.plain.groupfile = "lighttpd.group"
+
+#auth.backend.ldap.hostname = "localhost"
+#auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
+#auth.backend.ldap.filter = "(uid=$)"
+
+#auth.require = ( "/server-status" =>
+# (
+# "method" => "digest",
+# "realm" => "download archiv",
+# "require" => "user=jan"
+# ),
+# "/server-info" =>
+# (
+# "method" => "digest",
+# "realm" => "download archiv",
+# "require" => "valid-user"
+# )
+# )
+
+
+######## mod_rewrite config ########
+# Apache-style mod_rewrite for implementing URL rewriting.
+# See rewrite.txt in lighttpd-doc package for more info.
+#
+#url.rewrite = (
+# "^/$" => "/server-status"
+#)
+
+
+######## mod_redirect config ########
+# See redirect.txt in lighttpd-doc package for more info.
+#
+#url.redirect = (
+# "^/wishlist/(.+)" => "http://www.123.org/$1"
+#)
+
+
+######## mod_expire config ########
+# It is highly recommended you configure Expire: headers correctly to
+# conserve bandwidth, especially for users on slow links.
+#expire.url = (
+# "/buggy/" => "access 2 hours",
+# "/asdhas/" => "access plus 1 seconds 2 minutes"
+#)
+
+# {{{ mod_trigger_b4_dl
+# see trigger_b4_dl.txt
+#
+# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
+# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
+# trigger-before-download.trigger-url = "^/trigger/"
+# trigger-before-download.download-url = "^/download/"
+# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
+# trigger-before-download.trigger-timeout = 10
+# }}}
+
+
+######## mod_webdav config ########
+# lighttpd can act as a WebDAV server.
+# See webdav.txt in lighttpd-doc package for more info.
+#
+#$HTTP["url"] =~ "^/dav($|/)" {
+# webdav.activate = "enable"
+# webdav.is-readonly = "enable"
+#}
+
+
+######## Debugging options ########
+# debug.log-request-header = "enable"
+# debug.log-response-header = "enable"
+# debug.log-request-handling = "enable"
+# debug.log-file-not-found = "enable"
+
+# vim: set ft=conf foldmethod=marker et :
diff --git a/harmony/lighttpd/lighttpd.confd b/harmony/lighttpd/lighttpd.confd
new file mode 100644
index 000000000..da524afb4
--- /dev/null
+++ b/harmony/lighttpd/lighttpd.confd
@@ -0,0 +1,12 @@
+# /etc/conf.d/lighttpd
+
+# Location of a shell used by the 'include_shell' directive
+# in the lighttpd's configuration file
+#export SHELL="/bin/bash"
+
+# Location of the lighttpd configuration file
+LIGHTTPD_CONF="/etc/lighttpd/lighttpd.conf"
+
+# Location of the lighttpd pid file
+LIGHTTPD_PID="/run/lighttpd.pid"
+
diff --git a/harmony/lighttpd/lighttpd.initd b/harmony/lighttpd/lighttpd.initd
new file mode 100644
index 000000000..614cb2132
--- /dev/null
+++ b/harmony/lighttpd/lighttpd.initd
@@ -0,0 +1,75 @@
+#!/sbin/openrc-run
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/lighttpd.initd,v 1.21 2012/01/08 20:45:46 hwoarang Exp $
+
+extra_started_commands="reload graceful"
+required_files=$LIGHTTPD_CONF
+
+depend() {
+ need net
+ use mysql logger spawn-fcgi ldap slapd netmount dns
+ after firewall
+ after famd
+ after sshd
+}
+
+checkconfig() {
+ if [ ! -f "${LIGHTTPD_CONF}" ] ; then
+ ewarn "${LIGHTTPD_CONF} does not exist."
+ return 1
+ fi
+
+ if [ -z "${LIGHTTPD_PID}" ] ; then
+ ewarn "server.pid-file variable in ${LIGHTTPD_CONF}"
+ ewarn "is not set. Falling back to lighttpd.pid"
+ LIGHTTPD_PID="/run/lighttpd.pid"
+ fi
+ /usr/sbin/lighttpd -t -f ${LIGHTTPD_CONF} >/dev/null
+}
+
+start() {
+ checkconfig || return 1
+ checkpath -d -q -m 0750 -o lighttpd:lighttpd /run/lighttpd/
+
+ ebegin "Starting lighttpd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/lighttpd \
+ --pidfile "${LIGHTTPD_PID}" -- -f "${LIGHTTPD_CONF}"
+ eend $?
+}
+
+stop() {
+ local rv=0
+ ebegin "Stopping lighttpd"
+ start-stop-daemon --stop --quiet --pidfile "${LIGHTTPD_PID}"
+ eend $?
+}
+
+reload() {
+ if ! service_started "${SVCNAME}" ; then
+ eerror "${SVCNAME} isn't running"
+ return 1
+ fi
+ checkconfig || return 1
+
+ ebegin "Re-opening lighttpd log files"
+ start-stop-daemon --quiet --pidfile "${LIGHTTPD_PID}" \
+ --signal HUP
+ eend $?
+}
+
+graceful() {
+ if ! service_started "${SVCNAME}" ; then
+ eerror "${SVCNAME} isn't running"
+ return 1
+ fi
+ checkconfig || return 1
+
+ ebegin "Gracefully stopping lighttpd"
+ start-stop-daemon --quiet --pidfile "${LIGHTTPD_PID}" \
+ --signal INT
+ if eend $? ; then
+ rm -f "${LIGHTTPD_PID}"
+ start
+ fi
+}
diff --git a/harmony/lighttpd/lighttpd.logrotate b/harmony/lighttpd/lighttpd.logrotate
new file mode 100644
index 000000000..8fbb20fb0
--- /dev/null
+++ b/harmony/lighttpd/lighttpd.logrotate
@@ -0,0 +1,15 @@
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/lighttpd.logrotate,v 1.2 2006/05/30 19:49:29 bangert Exp $
+# lighttpd logrotate script for Gentoo
+
+/var/log/lighttpd/*.log {
+ daily
+ missingok
+ copytruncate
+ rotate 7
+ compress
+ notifempty
+ sharedscripts
+ postrotate
+ /etc/init.d/lighttpd --quiet --ifstarted reload
+ endscript
+}
diff --git a/harmony/lighttpd/lighttpd.pre-install b/harmony/lighttpd/lighttpd.pre-install
new file mode 100644
index 000000000..81ccda1f9
--- /dev/null
+++ b/harmony/lighttpd/lighttpd.pre-install
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+addgroup -S -g 82 www-data 2>/dev/null
+addgroup -S lighttpd 2>/dev/null
+adduser -S -D -H -h /var/www/localhost/htdocs -s /sbin/nologin -G lighttpd -g lighttpd lighttpd 2>/dev/null
+addgroup lighttpd www-data 2>/dev/null
+
+exit 0
diff --git a/harmony/lighttpd/lighttpd.pre-upgrade b/harmony/lighttpd/lighttpd.pre-upgrade
new file mode 120000
index 000000000..18a7fef66
--- /dev/null
+++ b/harmony/lighttpd/lighttpd.pre-upgrade
@@ -0,0 +1 @@
+lighttpd.pre-install \ No newline at end of file
diff --git a/harmony/lighttpd/mime-types.conf b/harmony/lighttpd/mime-types.conf
new file mode 100644
index 000000000..f24d4d858
--- /dev/null
+++ b/harmony/lighttpd/mime-types.conf
@@ -0,0 +1,79 @@
+###############################################################################
+# Default mime-types.conf for Gentoo.
+# include'd from lighttpd.conf.
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/conf/mime-types.conf,v 1.4 2010/03/14 21:45:18 bangert Exp $
+###############################################################################
+
+# {{{ mime types
+mimetype.assign = (
+ ".svg" => "image/svg+xml",
+ ".svgz" => "image/svg+xml",
+ ".pdf" => "application/pdf",
+ ".sig" => "application/pgp-signature",
+ ".spl" => "application/futuresplash",
+ ".class" => "application/octet-stream",
+ ".ps" => "application/postscript",
+ ".torrent" => "application/x-bittorrent",
+ ".dvi" => "application/x-dvi",
+ ".gz" => "application/x-gzip",
+ ".pac" => "application/x-ns-proxy-autoconfig",
+ ".swf" => "application/x-shockwave-flash",
+ ".tar.gz" => "application/x-tgz",
+ ".tgz" => "application/x-tgz",
+ ".tar" => "application/x-tar",
+ ".zip" => "application/zip",
+ ".dmg" => "application/x-apple-diskimage",
+ ".mp3" => "audio/mpeg",
+ ".m3u" => "audio/x-mpegurl",
+ ".wma" => "audio/x-ms-wma",
+ ".wax" => "audio/x-ms-wax",
+ ".ogg" => "application/ogg",
+ ".wav" => "audio/x-wav",
+ ".gif" => "image/gif",
+ ".jpg" => "image/jpeg",
+ ".jpeg" => "image/jpeg",
+ ".png" => "image/png",
+ ".xbm" => "image/x-xbitmap",
+ ".xpm" => "image/x-xpixmap",
+ ".xwd" => "image/x-xwindowdump",
+ ".css" => "text/css",
+ ".html" => "text/html",
+ ".htm" => "text/html",
+ ".js" => "text/javascript",
+ ".asc" => "text/plain",
+ ".c" => "text/plain",
+ ".h" => "text/plain",
+ ".cc" => "text/plain",
+ ".cpp" => "text/plain",
+ ".hh" => "text/plain",
+ ".hpp" => "text/plain",
+ ".conf" => "text/plain",
+ ".log" => "text/plain",
+ ".text" => "text/plain",
+ ".txt" => "text/plain",
+ ".diff" => "text/plain",
+ ".patch" => "text/plain",
+ ".ebuild" => "text/plain",
+ ".eclass" => "text/plain",
+ ".rtf" => "application/rtf",
+ ".bmp" => "image/bmp",
+ ".tif" => "image/tiff",
+ ".tiff" => "image/tiff",
+ ".ico" => "image/x-icon",
+ ".dtd" => "text/xml",
+ ".xml" => "text/xml",
+ ".mpeg" => "video/mpeg",
+ ".mpg" => "video/mpeg",
+ ".mov" => "video/quicktime",
+ ".qt" => "video/quicktime",
+ ".avi" => "video/x-msvideo",
+ ".asf" => "video/x-ms-asf",
+ ".asx" => "video/x-ms-asf",
+ ".wmv" => "video/x-ms-wmv",
+ ".bz2" => "application/x-bzip",
+ ".tbz" => "application/x-bzip-compressed-tar",
+ ".tar.bz2" => "application/x-bzip-compressed-tar"
+ )
+# }}}
+
+# vim: set ft=conf foldmethod=marker et :
diff --git a/harmony/lighttpd/mod_cgi.conf b/harmony/lighttpd/mod_cgi.conf
new file mode 100644
index 000000000..1cb3770f9
--- /dev/null
+++ b/harmony/lighttpd/mod_cgi.conf
@@ -0,0 +1,33 @@
+###############################################################################
+# mod_cgi.conf
+# include'd by lighttpd.conf.
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/conf/mod_cgi.conf,v 1.1 2005/08/27 12:36:13 ka0ttic Exp $
+###############################################################################
+
+#
+# see cgi.txt for more information on using mod_cgi
+#
+
+server.modules += ("mod_cgi")
+
+# NOTE: this requires mod_alias
+alias.url = (
+ "/cgi-bin/" => var.basedir + "/cgi-bin/"
+)
+
+#
+# Note that you'll also want to enable the
+# cgi-bin alias via mod_alias (above).
+#
+
+$HTTP["url"] =~ "^/cgi-bin/" {
+ # disable directory listings
+ dir-listing.activate = "disable"
+ # only allow cgi's in this directory
+ cgi.assign = (
+ ".pl" => "/usr/bin/perl",
+ ".cgi" => "/usr/bin/perl"
+ )
+}
+
+# vim: set ft=conf foldmethod=marker et :
diff --git a/harmony/lighttpd/mod_fastcgi.conf b/harmony/lighttpd/mod_fastcgi.conf
new file mode 100644
index 000000000..549b84c2e
--- /dev/null
+++ b/harmony/lighttpd/mod_fastcgi.conf
@@ -0,0 +1,17 @@
+###############################################################################
+# mod_fastcgi.conf
+# include'd by lighttpd.conf.
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/conf/mod_fastcgi.conf-1.4.13-r2,v 1.1 2007/04/01 23:22:00 robbat2 Exp $
+###############################################################################
+
+server.modules += ("mod_fastcgi")
+fastcgi.server = ( ".php" =>
+ ( "localhost" =>
+ (
+ "socket" => "/run/lighttpd/lighttpd-fastcgi-php-" + PID + ".socket",
+ "bin-path" => "/usr/bin/php-cgi"
+ )
+ )
+ )
+
+# vim: set ft=conf foldmethod=marker et :
diff --git a/harmony/lighttpd/mod_fastcgi_fpm.conf b/harmony/lighttpd/mod_fastcgi_fpm.conf
new file mode 100644
index 000000000..926137a43
--- /dev/null
+++ b/harmony/lighttpd/mod_fastcgi_fpm.conf
@@ -0,0 +1,16 @@
+###############################################################################
+# mod_fastcgi_fpm.conf
+# include'd by lighttpd.conf.
+###############################################################################
+
+server.modules += ("mod_fastcgi")
+fastcgi.server = ( ".php" =>
+ ( "localhost" =>
+ (
+ "host" => "127.0.0.1",
+ "port" => "9000"
+ )
+ )
+ )
+
+# vim: set ft=conf foldmethod=marker et :
diff --git a/harmony/linux-pam/APKBUILD b/harmony/linux-pam/APKBUILD
new file mode 100644
index 000000000..f55963c5c
--- /dev/null
+++ b/harmony/linux-pam/APKBUILD
@@ -0,0 +1,91 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: William Pitcock <nenolod@dereferenced.org>
+pkgname=linux-pam
+pkgver=1.3.0
+pkgrel=1
+pkgdesc="pluggable authentication modules for linux"
+url="http://www.kernel.org/pub/linux/libs/pam"
+arch="all"
+license="BSD"
+depends_dev="gettext-dev"
+makedepends_host="$depends_dev"
+makedepends_build="$depends_dev bison flex-dev autoconf automake libtool"
+makedepends="$makedepends_host $makedepends_build"
+options="suid !check"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://linux-pam.org/library/Linux-PAM-$pkgver.tar.bz2
+ fix-compat.patch
+ libpam-fix-build-with-eglibc-2.16.patch
+ musl-fix-pam_exec.patch
+
+ base-auth.pamd
+ base-account.pamd
+ base-password.pamd
+ base-session.pamd
+ base-session-noninteractive.pamd
+ other.pamd
+ su.pamd
+ "
+
+builddir="$srcdir"/Linux-PAM-$pkgver
+prepare() {
+ cd "$builddir"
+ default_prepare
+ # disable insecure modules
+ sed -e 's/pam_rhosts//g' -i modules/Makefile.am
+}
+
+build() {
+ cd "$builddir"
+ autoreconf -vif
+ [ "$CLIBC" = "musl" ] && export ac_cv_search_crypt=no
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --libdir=/lib \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-nls \
+ --disable-db
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ # do not install pam.d files bundled with the source, they could be broken
+ rm -rf "$pkgdir"/etc/pam.d
+
+ # install our pam.d files
+ mkdir "$pkgdir"/etc/pam.d
+ for i in $source; do
+ case $i in
+ *.pamd)
+ basename=$(echo $i | cut -d. -f1)
+ cp "$srcdir"/$i "$pkgdir"/etc/pam.d/"$basename"
+ # ensure users can use PAM services without SUID
+ chmod 644 "$pkgdir"/etc/pam.d/"$basename"
+ ;;
+ esac
+ done
+
+ # delete pointless libtool archives.
+ chgrp shadow "$pkgdir"/sbin/unix_chkpwd \
+ && chmod g+s "$pkgdir"/sbin/unix_chkpwd
+}
+
+sha512sums="4a89ca4b6f4676107aca4018f7c11addf03495266b209cb11c913f8b5d191d9a1f72197715dcf2a69216b4036de88780bcbbb5a8652e386910d71ba1b6282e42 Linux-PAM-1.3.0.tar.bz2
+52b97e23084f7b835ce1fa441663f91a50ea797cb38ba2c6662bcdaf0d25ba487118442674ac347fb17353af126dd6b3b696612faa56cac428dd842d14e1c90d fix-compat.patch
+f49edf3876cc6bcb87bbea4e7beaeb0a382d596898c755f5fbaf6c2ed4e0c8f082b2cd16dde8a74af82bb09a1334f463e07a4bb5b8a48f023ff90a67ad2fdd44 libpam-fix-build-with-eglibc-2.16.patch
+bc443d2a9b1d90b81959ce6fa154042365d5e7840f8696f847a145bbaaeffcbe1e9cd2b8ba76131a7b48737929e281f4fe864582fa4fc40315f2d10c650e0cd9 musl-fix-pam_exec.patch
+0672ab21adb969af2a0082e2559f1196d8a4f8b1cff2836f97e5f24edb03b6aed156c61cf335a4df978e423dcd9934ffee8cb5784ed5dde704d7e5ddec4ba9f6 base-auth.pamd
+85462201a4044c7e170e617d39b0eceb4790abc6c0504999117548030a16d80a9d2078d1ad97690d7d346e6374201f0c52e792ccb08ce2b1c4bbf0cc2be96f5b base-account.pamd
+8223b815148c3b9b874d2c283840f6428c266e56c7cf49ce8fc508c4945ae31c837bef96dab17f64a60812d1c9cd0055cf0a50d7951d23070b69bd2e5bb9666d base-password.pamd
+b0138f662715974bd865d755c5e7d403faf5b9ad1b7e2b1d1598ad7eb5764a9ff407f1a5e6ce7f16db9fc10f8d643323b494563416fd6a654032529b52213c5b base-session.pamd
+444e20046843057b17c0aac14d2b71a68923b989b3d8b478bbf684698673683186e928e5ca2e6cb9a1c76abc4248044a0e10ef6b06b3f51857106796ecce250d base-session-noninteractive.pamd
+d103ba06b2c4929171e09c845f9866539220cd20d8d56a03d25850342ef5eabe281e958dfe1eaefd550c00f9440e8700c1d74c88c3001f933134ca6fd7cb9b7b other.pamd
+b512d691f2a6b11fc329bf91dd05ca9c589bbd444308b27d3c87c75262dedf6afc68a9739229249a4bd3d0c43cb1f871eecbb93c4fe559e0f38bdabbffd06ad7 su.pamd"
diff --git a/harmony/linux-pam/base-account.pamd b/harmony/linux-pam/base-account.pamd
new file mode 100644
index 000000000..591092944
--- /dev/null
+++ b/harmony/linux-pam/base-account.pamd
@@ -0,0 +1,3 @@
+# basic PAM configuration for Alpine.
+
+account required pam_unix.so
diff --git a/harmony/linux-pam/base-auth.pamd b/harmony/linux-pam/base-auth.pamd
new file mode 100644
index 000000000..012445aa3
--- /dev/null
+++ b/harmony/linux-pam/base-auth.pamd
@@ -0,0 +1,5 @@
+# basic PAM configuration for Alpine.
+
+auth required pam_env.so
+auth required pam_unix.so nullok_secure
+auth required pam_nologin.so successok
diff --git a/harmony/linux-pam/base-password.pamd b/harmony/linux-pam/base-password.pamd
new file mode 100644
index 000000000..a146a93fe
--- /dev/null
+++ b/harmony/linux-pam/base-password.pamd
@@ -0,0 +1,3 @@
+# basic PAM configuration for Alpine.
+
+password required pam_unix.so nullok obscure md5 sha512
diff --git a/harmony/linux-pam/base-session-noninteractive.pamd b/harmony/linux-pam/base-session-noninteractive.pamd
new file mode 100644
index 000000000..85e07d594
--- /dev/null
+++ b/harmony/linux-pam/base-session-noninteractive.pamd
@@ -0,0 +1,4 @@
+# basic PAM configuration for Alpine.
+
+session required pam_limits.so
+session required pam_unix.so
diff --git a/harmony/linux-pam/base-session.pamd b/harmony/linux-pam/base-session.pamd
new file mode 100644
index 000000000..bf5bcb734
--- /dev/null
+++ b/harmony/linux-pam/base-session.pamd
@@ -0,0 +1,4 @@
+# basic PAM configuration for Alpine.
+
+session include base-session-noninteractive
+session required pam_motd.so
diff --git a/harmony/linux-pam/fix-compat.patch b/harmony/linux-pam/fix-compat.patch
new file mode 100644
index 000000000..4096c3a47
--- /dev/null
+++ b/harmony/linux-pam/fix-compat.patch
@@ -0,0 +1,21 @@
+--- Linux-PAM-1.1.6.orig/modules/pam_lastlog/pam_lastlog.c
++++ Linux-PAM-1.1.6/modules/pam_lastlog/pam_lastlog.c
+@@ -10,6 +10,7 @@
+
+ #include "config.h"
+
++#include <paths.h>
+ #include <fcntl.h>
+ #include <time.h>
+ #include <errno.h>
+@@ -48,6 +49,10 @@
+
+ #ifndef _PATH_BTMP
+ # define _PATH_BTMP "/var/log/btmp"
++#endif
++
++#ifndef __GLIBC__
++#define logwtmp(args...)
+ #endif
+
+ /* XXX - time before ignoring lock. Is 1 sec enough? */
diff --git a/harmony/linux-pam/libpam-fix-build-with-eglibc-2.16.patch b/harmony/linux-pam/libpam-fix-build-with-eglibc-2.16.patch
new file mode 100644
index 000000000..1a0716598
--- /dev/null
+++ b/harmony/linux-pam/libpam-fix-build-with-eglibc-2.16.patch
@@ -0,0 +1,10 @@
+--- Linux-PAM-1.1.5/modules/pam_unix/pam_unix_acct.c.orig
++++ Linux-PAM-1.1.5/modules/pam_unix/pam_unix_acct.c
+@@ -47,6 +47,7 @@
+ #include <time.h> /* for time() */
+ #include <errno.h>
+ #include <sys/wait.h>
++#include <sys/resource.h>
+
+ #include <security/_pam_macros.h>
+
diff --git a/harmony/linux-pam/musl-fix-pam_exec.patch b/harmony/linux-pam/musl-fix-pam_exec.patch
new file mode 100644
index 000000000..b6b999fae
--- /dev/null
+++ b/harmony/linux-pam/musl-fix-pam_exec.patch
@@ -0,0 +1,31 @@
+--- ./modules/pam_exec/pam_exec.c.orig
++++ ./modules/pam_exec/pam_exec.c
+@@ -103,11 +103,14 @@
+ int optargc;
+ const char *logfile = NULL;
+ const char *authtok = NULL;
++ char authtok_buf[PAM_MAX_RESP_SIZE+1];
++
+ pid_t pid;
+ int fds[2];
+ int stdout_fds[2];
+ FILE *stdout_file = NULL;
+
++ memset(authtok_buf, 0, sizeof(authtok_buf));
+ if (argc < 1) {
+ pam_syslog (pamh, LOG_ERR,
+ "This module needs at least one argument");
+@@ -178,11 +181,11 @@
+ }
+
+ pam_set_item (pamh, PAM_AUTHTOK, resp);
+- authtok = strndupa (resp, PAM_MAX_RESP_SIZE);
++ authtok = strncpy(authtok_buf, resp, sizeof(authtok_buf));
+ _pam_drop (resp);
+ }
+ else
+- authtok = strndupa (void_pass, PAM_MAX_RESP_SIZE);
++ authtok = strncpy(authtok_buf, void_pass, sizeof(authtok_buf));
+
+ if (pipe(fds) != 0)
+ {
diff --git a/harmony/linux-pam/other.pamd b/harmony/linux-pam/other.pamd
new file mode 100644
index 000000000..8c9797e71
--- /dev/null
+++ b/harmony/linux-pam/other.pamd
@@ -0,0 +1,6 @@
+# basic PAM configuration for Alpine.
+
+auth include base-auth
+account include base-account
+password include base-password
+session include base-session-noninteractive
diff --git a/harmony/linux-pam/su.pamd b/harmony/linux-pam/su.pamd
new file mode 100644
index 000000000..84f2ae7ea
--- /dev/null
+++ b/harmony/linux-pam/su.pamd
@@ -0,0 +1,6 @@
+# basic PAM configuration for Alpine.
+auth sufficient pam_rootok.so
+auth include base-auth
+account include base-account
+password include base-password
+session include base-session-noninteractive
diff --git a/harmony/lm_sensors/APKBUILD b/harmony/lm_sensors/APKBUILD
new file mode 100644
index 000000000..694adb868
--- /dev/null
+++ b/harmony/lm_sensors/APKBUILD
@@ -0,0 +1,85 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=lm_sensors
+pkgver=3.4.0
+pkgrel=5
+pkgdesc="Collection of user space tools for general SMBus access and hardware monitoring."
+url="http://www.lm-sensors.org/"
+arch="all"
+license="GPL"
+options="!check" # No test suite.
+depends="bash sysfsutils"
+makedepends="perl rrdtool-dev bison flex which"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-detect $pkgname-sensord
+ $pkgname-sensord-openrc:sensord_openrc"
+#install=sensors.install
+
+# 2015-11-11 (bpiotrowski): upstream website is down, Fedora mirrored the file
+#source="http://dl.lm-sensors.org/lm-sensors/releases/$pkgname-$pkgver.tar.bz2
+source="http://pkgs.fedoraproject.org/repo/pkgs/lm_sensors/lm_sensors-3.4.0.tar.bz2/c03675ae9d43d60322110c679416901a/lm_sensors-3.4.0.tar.bz2
+ sensors-detect-alpine.patch
+ musl-fix-includes.patch
+ fancontrol.initd
+ sensord.confd
+ sensord.initd
+ "
+
+prepare() {
+ cd "$builddir"
+ sed -i -e 's:^# \(PROG_EXTRA\):\1:' Makefile
+ # Respect LDFLAGS
+ sed -i -e 's/\$(LIBDIR)$/\$(LIBDIR) \$(LDFLAGS)/g' Makefile
+ sed -i -e 's/\$(LIBSHSONAME) -o/$(LIBSHSONAME) \$(LDFLAGS) -o/g' \
+ lib/Module.mk
+
+ # do not check for libiconv in ldconfig cache
+ sed -i -e 's/^LIBICONV.*/LIBICONV ?=/' prog/sensors/Module.mk
+
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ export CFLAGS="$CFLAGS -fno-stack-protector"
+ make PREFIX=/usr user
+}
+
+package() {
+ cd "$builddir"
+ make PROG_EXTRA:=sensord user_install \
+ PREFIX=/usr \
+ MANDIR=/usr/share/man \
+ DESTDIR="$pkgdir"
+
+ cd "$srcdir"
+ install -Dm755 fancontrol.initd "$pkgdir"/etc/init.d/fancontrol
+}
+
+detect() {
+ depends="perl"
+ pkgdesc="Detection/migration scripts for lm_sensors"
+ mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/sbin
+ cd "$pkgdir"
+ mv usr/bin/sensors-conf-convert "$subpkgdir"/usr/bin/
+ mv usr/sbin/sensors-detect "$subpkgdir"/usr/bin/
+}
+
+sensord() {
+ pkgdesc="sensord daemon"
+ cd "$builddir"
+ mkdir -p "$subpkgdir"/usr/sbin
+ mv "$pkgdir"/usr/sbin/sensord "$subpkgdir"/usr/sbin/sensord
+}
+
+sensord_openrc() {
+ pkgdesc="sensord daemon (OpenRC init scripts)"
+ install_if="sensord=$pkgver-r$pkgrel openrc"
+ install -Dm755 "$srcdir"/sensord.initd "$subpkgdir"/etc/init.d/sensord
+ install -Dm755 "$srcdir"/sensord.confd "$subpkgdir"/etc/conf.d/sensord
+}
+
+sha512sums="993064bd14b855c1ae8c057e89313df5b3d5efe441fb2e8c3e508f42bb15658564df2563fac8fabbdb0d650dfdbc694037736c748d45cb9d85dfb8fb5a3d1ea9 lm_sensors-3.4.0.tar.bz2
+794cf2aaa2a9e809c6b67f4c888a89064bba3e5b9333a9f0101a92372c25012e506fa48e86523f57cf30e5c2a808bc38058fd8640c870ea6b48faab44794cfbb sensors-detect-alpine.patch
+333751cb580c94f2d32ef5520d2f2acc0ef7e1cd4a6390ea75cae4c755fbdfcade1805c979ba3319905f1267bdc120a6746e6f70d89e0c72a8c2faefd34a9e79 musl-fix-includes.patch
+04756c3844033dc7897e1348181140a43f8470c1bb863f1524b21bbe6be2f13fbf17ac3a68270c96a70d8c148124fea569d1ef75619bbe383e15ec705ea18b21 fancontrol.initd
+a77d81ab7ded085ba19e4c637e93268f889ccb8ce9e008a210ae135cb6e2140be07e5d455cf7fcc1084fd57cfbfb3f2bb37207123aebe9566f78b5183806fd7d sensord.confd
+9a19874c158e82ab076ed5fb96a40d4bfb4957bfd5a2ce66aa207c06e577bc1b048336c0046a9f856f6d00dc10e68a0dc9726f6e726a8f7bfd50c4043ee1e26a sensord.initd"
diff --git a/harmony/lm_sensors/fancontrol.initd b/harmony/lm_sensors/fancontrol.initd
new file mode 100644
index 000000000..cb29a9ee9
--- /dev/null
+++ b/harmony/lm_sensors/fancontrol.initd
@@ -0,0 +1,33 @@
+#!/sbin/openrc-run
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/lm_sensors/files/fancontrol-init.d,v 1.1 2007/05/17 07:31:41 phreak Exp $
+
+CONFIG=/etc/fancontrol
+PID=/var/run/fancontrol.pid
+
+depend() {
+ after lm_sensors
+}
+
+checkconfig() {
+ if [ ! -f ${CONFIG} ]; then
+ eerror "Configuration file ${CONFIG} not found"
+ return 1
+ fi
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting fancontrol"
+ start-stop-daemon --start --quiet --background --pidfile ${PID} \
+ --exec /usr/sbin/fancontrol -- ${CONFIG}
+ eend ${?}
+}
+
+stop() {
+ ebegin "Stopping fancontrol"
+ start-stop-daemon --stop --pidfile ${PID}
+ eend ${?}
+}
diff --git a/harmony/lm_sensors/musl-fix-includes.patch b/harmony/lm_sensors/musl-fix-includes.patch
new file mode 100644
index 000000000..501f2dd76
--- /dev/null
+++ b/harmony/lm_sensors/musl-fix-includes.patch
@@ -0,0 +1,62 @@
+--- lm_sensors-3.3.4.orig/prog/dump/isadump.c
++++ lm_sensors-3.3.4/prog/dump/isadump.c
+@@ -36,13 +36,7 @@
+ #include "util.h"
+ #include "superio.h"
+
+-
+-/* To keep glibc2 happy */
+-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
+ #include <sys/io.h>
+-#else
+-#include <asm/io.h>
+-#endif
+
+ #ifdef __powerpc__
+ unsigned long isa_io_base = 0; /* XXX for now */
+--- lm_sensors-3.3.4.orig/prog/dump/isaset.c
++++ lm_sensors-3.3.4/prog/dump/isaset.c
+@@ -32,13 +32,7 @@
+ #include <string.h>
+ #include "util.h"
+
+-
+-/* To keep glibc2 happy */
+-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
+ #include <sys/io.h>
+-#else
+-#include <asm/io.h>
+-#endif
+
+ #ifdef __powerpc__
+ unsigned long isa_io_base = 0; /* XXX for now */
+--- lm_sensors-3.3.4.orig/prog/dump/superio.c
++++ lm_sensors-3.3.4/prog/dump/superio.c
+@@ -20,12 +20,7 @@
+ */
+
+ #include <stdlib.h>
+-
+-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
+ #include <sys/io.h>
+-#else
+-#include <asm/io.h>
+-#endif
+
+ #include "superio.h"
+
+--- lm_sensors-3.3.4.orig/prog/dump/util.c
++++ lm_sensors-3.3.4/prog/dump/util.c
+@@ -11,12 +11,7 @@
+ #include <stdio.h>
+ #include "util.h"
+
+-/* To keep glibc2 happy */
+-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
+ #include <sys/io.h>
+-#else
+-#include <asm/io.h>
+-#endif
+
+ /* Return 1 if we should continue, 0 if we should abort */
+ int user_ack(int def)
diff --git a/harmony/lm_sensors/sensord.confd b/harmony/lm_sensors/sensord.confd
new file mode 100644
index 000000000..d82841aeb
--- /dev/null
+++ b/harmony/lm_sensors/sensord.confd
@@ -0,0 +1,3 @@
+# Extra options to pass to the sensord daemon,
+# see sensord(8) for more information
+SENSORD_OPTIONS=""
diff --git a/harmony/lm_sensors/sensord.initd b/harmony/lm_sensors/sensord.initd
new file mode 100644
index 000000000..c100b1aa1
--- /dev/null
+++ b/harmony/lm_sensors/sensord.initd
@@ -0,0 +1,33 @@
+#!/sbin/openrc-run
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/lm_sensors/files/sensord-init.d,v 1.1 2007/05/17 07:31:41 phreak Exp $
+
+CONFIG=/etc/sensors3.conf
+
+depend() {
+ need logger
+ use lm_sensors
+}
+
+checkconfig() {
+ if [ ! -f ${CONFIG} ]; then
+ eerror "Configuration file ${CONFIG} not found"
+ return 1
+ fi
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting sensord"
+ start-stop-daemon --start --exec /usr/sbin/sensord \
+ -- --config-file ${CONFIG} ${SENSORD_OPTIONS}
+ eend ${?}
+}
+
+stop() {
+ ebegin "Stopping sensord"
+ start-stop-daemon --stop --pidfile /var/run/sensord.pid
+ eend ${?}
+}
diff --git a/harmony/lm_sensors/sensors-detect-alpine.patch b/harmony/lm_sensors/sensors-detect-alpine.patch
new file mode 100644
index 000000000..319fcec06
--- /dev/null
+++ b/harmony/lm_sensors/sensors-detect-alpine.patch
@@ -0,0 +1,47 @@
+diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect
+index 08721f0..6e83e97 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -7059,31 +7059,20 @@ sub write_config
+ }
+ }
+
+- my $have_sysconfig = -d '/etc/sysconfig';
+- printf "Do you want to \%s /etc/sysconfig/lm_sensors? (\%s): ",
+- (-e '/etc/sysconfig/lm_sensors' ? 'overwrite' : 'generate'),
+- ($have_sysconfig ? 'YES/no' : 'yes/NO');
++ my $config = '/etc/modules-load.d/lm_sensors.conf';
++ my $have_config = -f $config;
++ printf "Do you want to \%s \%s? (\%s): ",
++ (-e $config ? 'overwrite' : 'generate'),
++ $config,
++ ($have_config ? 'YES/no' : 'yes/NO');
+ $_ = read_answer();
+- if (($have_sysconfig and not m/^\s*n/i) or m/^\s*y/i) {
+- unless ($have_sysconfig) {
+- mkdir('/etc/sysconfig', 0777)
+- or die "Sorry, can't create /etc/sysconfig ($!)";
+- }
+- open(local *SYSCONFIG, ">/etc/sysconfig/lm_sensors")
+- or die "Sorry, can't create /etc/sysconfig/lm_sensors ($!)";
++ if (($have_config and not m/^\s*n/i) or m/^\s*y/i) {
++ open(local *SYSCONFIG, ">$config")
++ or die "Sorry, can't create $config ($!)";
+ print SYSCONFIG "# Generated by sensors-detect on " . scalar localtime() . "\n";
+- print SYSCONFIG <<'EOT';
+-# This file is sourced by /etc/init.d/lm_sensors and defines the modules to
+-# be loaded/unloaded.
+-#
+-# The format of this file is a shell script that simply defines variables:
+-# HWMON_MODULES for hardware monitoring driver modules, and optionally
+-# BUS_MODULES for any required bus driver module (for example for I2C or SPI).
+-
+-EOT
+- print SYSCONFIG "BUS_MODULES=\"", join(" ", @{$bus_modules}), "\"\n"
++ print SYSCONFIG join("\n", @{$bus_modules}), "\n"
+ if @{$bus_modules};
+- print SYSCONFIG "HWMON_MODULES=\"", join(" ", @{$hwmon_modules}), "\"\n";
++ print SYSCONFIG join("\n", @{$hwmon_modules}), "\n";
+ close(SYSCONFIG);
+
+ if (-x "/bin/systemctl" && -d "/lib/systemd/system" &&
diff --git a/harmony/lm_sensors/sensors.install b/harmony/lm_sensors/sensors.install
new file mode 100644
index 000000000..d593f8414
--- /dev/null
+++ b/harmony/lm_sensors/sensors.install
@@ -0,0 +1,12 @@
+post_install() {
+ echo ">>> to control the lm_sensors daemon type"
+ echo ">>> \"/etc/rc.d/sensors start|stop|restart\" "
+ echo ">>> --------------------------------------"
+ echo ">>> before you can use the fancontrol daemon"
+ echo ">>> first create a fancontrol config file, use \"pwmconfig\""
+ echo ">>> then type \"/etc/rc.d/fancontrol start|stop|restart\" "
+ echo ">>> --------------------------------------"
+ echo ">>> to decode memory SPD timings modprobe eeprom module"
+ echo ">>> and get this perl script from"
+ echo ">>> \"http://www.lm-sensors.org/browser/lm-sensors/trunk/prog/eeprom/decode-dimms.pl\""
+}
diff --git a/harmony/mutt/APKBUILD b/harmony/mutt/APKBUILD
new file mode 100644
index 000000000..2b3424421
--- /dev/null
+++ b/harmony/mutt/APKBUILD
@@ -0,0 +1,61 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: Andrew Manison<amanison@anselsystems.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=mutt
+pkgver=1.9.1
+pkgrel=0
+pkgdesc="a small but very powerful text-mode email client"
+url="http://www.mutt.org"
+arch="all"
+license="GPL"
+makedepends="cyrus-sasl-dev gdbm-dev gettext-dev gpgme-dev
+ libidn-dev ncurses-dev openssl-dev perl"
+options="suid !check"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://bitbucket.org/$pkgname/$pkgname/downloads/$pkgname-$pkgver.tar.gz"
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ ISPELL=/usr/bin/hunspell \
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-imap \
+ --enable-pop \
+ --enable-smtp \
+ --enable-hcache \
+ --enable-gpgme \
+ --enable-sidebar \
+ --enable-smime \
+ --with-curses \
+ --with-mailpath=/var/spool/mail \
+ --with-docdir=/usr/share/doc/$pkgname \
+ --without-included-gettext \
+ --with-ssl \
+ --with-sasl
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ rm "$pkgdir"/etc/*.dist \
+ "$pkgdir"/etc/mime.types \
+ "$pkgdir"/usr/bin/muttbug \
+ "$pkgdir"/usr/bin/flea
+
+ # Don't tamper with the global configuration file.
+ # Many options set in the global config cannot be
+ # overwritten in the users configuration file.
+ # Example: Resetting colors isn't possible.
+ install -Dm644 contrib/gpg.rc \
+ "$pkgdir"/etc/Muttrc.gpg.dist
+}
+
+sha512sums="1a6871eb8499c60ae18b03d56b81e64de1643c68f8fbe05bbe114085b20098be58175e5bd6d2515e8332a824cbed75640744a261d4f10654c56625f903224095 mutt-1.9.1.tar.gz"
diff --git a/harmony/neon/APKBUILD b/harmony/neon/APKBUILD
new file mode 100644
index 000000000..a0ddbd5d4
--- /dev/null
+++ b/harmony/neon/APKBUILD
@@ -0,0 +1,41 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=neon
+pkgver=0.30.2
+pkgrel=2
+pkgdesc="HTTP and WebDAV client library with a C interface"
+url="http://www.webdav.org/neon/"
+arch="all"
+license="GPL LGPL"
+makedepends="expat-dev openssl-dev zlib-dev"
+depends="ca-certificates"
+depends_dev="$makedepends"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz"
+
+build () {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --with-ssl \
+ --with-expat \
+ --without-gssapi \
+ --disable-nls \
+ --enable-shared \
+ --disable-static \
+ --enable-threadsafe-ssl=posix \
+ --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+sha512sums="634caf87522e0bd2695c6fba39cae2465e403f9fbd8007eb10e4e035c765d24cb8da932c67bfa35c34aa51b90c7bc7037ebebaa1ec43259366d5d07233efc631 neon-0.30.2.tar.gz"
diff --git a/harmony/openldap/APKBUILD b/harmony/openldap/APKBUILD
new file mode 100644
index 000000000..397bbd1ce
--- /dev/null
+++ b/harmony/openldap/APKBUILD
@@ -0,0 +1,208 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+#
+# secfixes:
+# 2.4.44-r5:
+# - CVE-2017-9287
+#
+pkgname=openldap
+pkgver=2.4.45
+pkgrel=2
+pkgdesc="LDAP Server"
+url="http://www.openldap.org/"
+arch="all"
+license="custom"
+depends=""
+pkgusers="ldap"
+pkggroups="ldap"
+depends_dev="openssl-dev cyrus-sasl-dev util-linux-dev"
+makedepends="$depends_dev db-dev groff unixodbc-dev libtool
+ autoconf automake libtool"
+subpackages="$pkgname-dev $pkgname-doc libldap $pkgname-openrc
+ $pkgname-clients $pkgname-passwd-pbkdf2:passwd_pbkdf2
+ $pkgname-backend-all:_backend_all:noarch
+ $pkgname-overlay-all:_overlay_all:noarch"
+install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
+source="ftp://ftp.$pkgname.org/pub/OpenLDAP/$pkgname-release/$pkgname-$pkgver.tgz
+ openldap-2.4-ppolicy.patch
+ openldap-2.4.11-libldap_r.patch
+ fix-manpages.patch
+ configs.patch
+
+ slapd.initd
+ slapd.confd
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+# SLAPD backends
+_backends=""
+for _name in bdb dnssrv hdb ldap mdb meta monitor null passwd \
+ relay shell sql sock
+do
+ subpackages="$subpackages $pkgname-back-$_name:_backend"
+ _backends="$_backends $pkgname-back-$_name"
+done
+
+# SLAPD overlays
+_overlays=""
+for _name in accesslog auditlog collect constraint dds deref dyngroup \
+ dynlist memberof ppolicy proxycache refint retcode rwm seqmod \
+ sssvlv syncprov translucent unique valsort
+do
+ subpackages="$subpackages $pkgname-overlay-$_name:_overlay"
+ _overlays="$_overlays $pkgname-overlay-$_name"
+done
+
+prepare() {
+ cd "$builddir"
+ update_config_sub
+
+ sed -i '/^STRIP/s,-s,,g' build/top.mk
+ libtoolize --force && aclocal && autoconf
+}
+
+build () {
+ cd "$builddir"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --libexecdir=/usr/lib \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var/lib/openldap \
+ --enable-slapd \
+ --enable-crypt \
+ --enable-modules \
+ --enable-dynamic \
+ --enable-bdb=mod \
+ --enable-dnssrv=mod \
+ --enable-hdb=mod \
+ --enable-ldap=mod \
+ --enable-mdb=mod \
+ --enable-meta=mod \
+ --enable-monitor=mod \
+ --enable-null=mod \
+ --enable-passwd=mod \
+ --enable-relay=mod \
+ --enable-shell=mod \
+ --enable-sock=mod \
+ --enable-sql=mod \
+ --enable-overlays=mod \
+ --with-tls=openssl \
+ --with-cyrus-sasl
+ make
+
+ # Build passwd pbkdf2.
+ make prefix=/usr libexecdir=/usr/lib \
+ -C contrib/slapd-modules/passwd/pbkdf2
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install
+
+ # Install passwd pbkdf2.
+ make DESTDIR="$pkgdir" prefix=/usr libexecdir=/usr/lib \
+ -C contrib/slapd-modules/passwd/pbkdf2 install
+
+ cd "$pkgdir"
+
+ rmdir var/lib/openldap/run
+
+ # Fix tools symlinks to slapd.
+ local path; for path in $(find usr/sbin/ -type l); do
+ ln -sf slapd $path
+ done
+
+ # Move executable from lib to sbin.
+ mv usr/lib/slapd usr/sbin/
+
+ # Move *.default configs to docs.
+ mkdir -p usr/share/doc/$pkgname
+ mv etc/openldap/*.default usr/share/doc/$pkgname/
+
+ chgrp ldap etc/openldap/slapd.*
+ chmod g+r etc/openldap/slapd.*
+
+ install -d -m 700 -o ldap -g ldap \
+ var/lib/openldap \
+ var/lib/openldap/openldap-data
+
+ install -D -m 755 "$srcdir"/slapd.initd etc/init.d/slapd
+ install -D -m 644 "$srcdir"/slapd.confd etc/conf.d/slapd
+}
+
+libldap() {
+ pkgdesc="OpenLDAP libraries"
+ depends=""
+ install=""
+
+ _submv "usr/lib/*.so*" etc/openldap/ldap.conf
+}
+
+clients() {
+ pkgdesc="LDAP client utilities"
+
+ _submv usr/bin
+}
+
+passwd_pbkdf2() {
+ pkgdesc="PBKDF2 OpenLDAP support"
+ depends="$pkgname"
+
+ _submv "usr/lib/openldap/pw-pbkdf2.*"
+}
+
+_backend_all() {
+ pkgdesc="Virtual package that installs all OpenLDAP backends"
+ depends="$_backends"
+
+ mkdir -p "$subpkgdir"
+}
+
+_overlay_all() {
+ pkgdesc="Virtual package that installs all OpenLDAP overlays"
+ depends="$_overlays"
+
+ mkdir -p "$subpkgdir"
+}
+
+_backend() {
+ backend_name="${subpkgname#openldap-back-}"
+ pkgdesc="OpenLDAP $backend_name backend"
+
+ _submv "usr/lib/openldap/back_$backend_name*"
+}
+
+_overlay() {
+ overlay_name="${subpkgname#openldap-overlay-}"
+ pkgdesc="OpenLDAP $backend_name overlay"
+
+ case "$overlay_name" in
+ proxycache) overlay_name=pcache;;
+ esac
+ _submv "usr/lib/openldap/$overlay_name*"
+}
+
+_submv() {
+ local path; for path in "$@"; do
+ mkdir -p "$subpkgdir"/${path%/*}
+ mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
+ done
+}
+
+sha512sums="1c9fc84efed8998f107ce6e1c6be3f5466388241afdca0cb3847720c9def0bc263a2dbc15bf0f9112d1b4c391fd01e8531a4fb08c5532c30fb86924c08daedab openldap-2.4.45.tgz
+5d34d49eabe7cb66cf8284cc3bd9730fa23df4932df68549e242d250ee50d40c434ae074ebc720d5fbcd9d16587c9333c5598d30a5f1177caa61461ab7771f38 openldap-2.4-ppolicy.patch
+44d97efb25d4f39ab10cd5571db43f3bfa7c617a5bb087085ae16c0298aca899b55c8742a502121ba743a73e6d77cd2056bc96cee63d6d0862dabc8fb5574357 openldap-2.4.11-libldap_r.patch
+8c4244d316a05870dd1147b2ab7ddbcfd7626b5dce2f5a0e72f066dc635c2edb4f1ea3be88c6fec2d5ab016001be16bedef70f2ce0695c3cd96f69e1614ff177 fix-manpages.patch
+0d2e570ddcb7ace1221abad9fc1d3dd0d00d6948340df69879b449959a68feee6a0ad8e17ef9971b35986293e16fc9d8e88de81815fedd5ea6a952eb085406ca configs.patch
+0c3606e4dad1b32f1c4b62f2bc1990a4c9f7ccd10c7b50e623309ba9df98064e68fc42a7242450f32fb6e5fa2203609d3d069871b5ae994cd4b227a078c93532 slapd.initd
+64dc4c0aa0abe3d9f7d2aef25fe4c8e23c53df2421067947ac4d096c9e942b26356cb8577ebc41b52d88d0b0a03b2a3e435fe86242671f9b36555a5f82ee0e3a slapd.confd"
diff --git a/harmony/openldap/CVE-2017-9287.patch b/harmony/openldap/CVE-2017-9287.patch
new file mode 100644
index 000000000..1599c1331
--- /dev/null
+++ b/harmony/openldap/CVE-2017-9287.patch
@@ -0,0 +1,28 @@
+From 0cee1ffb6021b1aae3fcc9581699da1c85a6dd6e Mon Sep 17 00:00:00 2001
+From: Ryan Tandy <ryan@nardis.ca>
+Date: Wed, 17 May 2017 20:07:39 -0700
+Subject: [PATCH] ITS#8655 fix double free on paged search with pagesize 0
+
+Fixes a double free when a search includes the Paged Results control
+with a page size of 0 and the search base matches the filter.
+---
+ servers/slapd/back-mdb/search.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/servers/slapd/back-mdb/search.c b/servers/slapd/back-mdb/search.c
+index 301d1a4..43442aa 100644
+--- a/servers/slapd/back-mdb/search.c
++++ b/servers/slapd/back-mdb/search.c
+@@ -1066,7 +1066,8 @@ notfound:
+ /* check size limit */
+ if ( get_pagedresults(op) > SLAP_CONTROL_IGNORED ) {
+ if ( rs->sr_nentries >= ((PagedResultsState *)op->o_pagedresults_state)->ps_size ) {
+- mdb_entry_return( op, e );
++ if (e != base)
++ mdb_entry_return( op, e );
+ e = NULL;
+ send_paged_response( op, rs, &lastid, tentries );
+ goto done;
+--
+1.7.10.4
+
diff --git a/harmony/openldap/configs.patch b/harmony/openldap/configs.patch
new file mode 100644
index 000000000..e7ec65c4b
--- /dev/null
+++ b/harmony/openldap/configs.patch
@@ -0,0 +1,117 @@
+--- a/servers/slapd/slapd.conf
++++ b/servers/slapd/slapd.conf
+@@ -2,7 +2,7 @@
+ # See slapd.conf(5) for details on configuration options.
+ # This file should NOT be world readable.
+ #
+-include %SYSCONFDIR%/schema/core.schema
++include /etc/openldap/schema/core.schema
+
+ # Define global ACLs to disable default read access.
+
+@@ -10,13 +10,16 @@
+ # service AND an understanding of referrals.
+ #referral ldap://root.openldap.org
+
+-pidfile %LOCALSTATEDIR%/run/slapd.pid
+-argsfile %LOCALSTATEDIR%/run/slapd.args
++# If you change this, adjust pidfile path also in runscript!
++pidfile /run/openldap/slapd.pid
++argsfile /run/openldap/slapd.args
+
+ # Load dynamic backend modules:
+-# modulepath %MODULEDIR%
+-# moduleload back_mdb.la
+-# moduleload back_ldap.la
++modulepath /usr/lib/openldap
++moduleload back_mdb.so
++# moduleload back_hdb.so
++# moduleload back_bbd.so
++# moduleload back_ldap.so
+
+ # Sample security restrictions
+ # Require integrity protection (prevent hijacking)
+@@ -53,13 +56,16 @@
+ maxsize 1073741824
+ suffix "dc=my-domain,dc=com"
+ rootdn "cn=Manager,dc=my-domain,dc=com"
++
+ # Cleartext passwords, especially for the rootdn, should
+ # be avoid. See slappasswd(8) and slapd.conf(5) for details.
+ # Use of strong authentication encouraged.
+ rootpw secret
++
+ # The database directory MUST exist prior to running slapd AND
+ # should only be accessible by the slapd and slap tools.
+ # Mode 700 recommended.
+-directory %LOCALSTATEDIR%/openldap-data
++directory /var/lib/openldap/openldap-data
++
+ # Indices to maintain
+ index objectClass eq
+--- a/servers/slapd/slapd.ldif
++++ b/servers/slapd/slapd.ldif
+@@ -9,8 +9,9 @@
+ #
+ # Define global ACLs to disable default read access.
+ #
+-olcArgsFile: %LOCALSTATEDIR%/run/slapd.args
+-olcPidFile: %LOCALSTATEDIR%/run/slapd.pid
++# If you change this, set pidfile variable in /etc/conf.d/slapd!
++olcPidFile: /run/openldap/slapd.pid
++olcArgsFile: /run/openldap/slapd.args
+ #
+ # Do not enable referrals until AFTER you have a working directory
+ # service AND an understanding of referrals.
+@@ -26,22 +27,23 @@
+ #
+ # Load dynamic backend modules:
+ #
+-#dn: cn=module,cn=config
+-#objectClass: olcModuleList
+-#cn: module
+-#olcModulepath: %MODULEDIR%
+-#olcModuleload: back_bdb.la
+-#olcModuleload: back_hdb.la
+-#olcModuleload: back_ldap.la
+-#olcModuleload: back_passwd.la
+-#olcModuleload: back_shell.la
++dn: cn=module,cn=config
++objectClass: olcModuleList
++cn: module
++olcModulepath: /usr/lib/openldap
++#olcModuleload: back_bdb.so
++#olcModuleload: back_hdb.so
++#olcModuleload: back_ldap.so
++olcModuleload: back_mdb.so
++#olcModuleload: back_passwd.so
++#olcModuleload: back_shell.so
+
+
+ dn: cn=schema,cn=config
+ objectClass: olcSchemaConfig
+ cn: schema
+
+-include: file://%SYSCONFDIR%/schema/core.ldif
++include: file:///etc/openldap/schema/core.ldif
+
+ # Frontend settings
+ #
+@@ -83,13 +85,16 @@
+ olcDatabase: mdb
+ olcSuffix: dc=my-domain,dc=com
+ olcRootDN: cn=Manager,dc=my-domain,dc=com
++
+ # Cleartext passwords, especially for the rootdn, should
+ # be avoided. See slappasswd(8) and slapd-config(5) for details.
+ # Use of strong authentication encouraged.
+ olcRootPW: secret
++
+ # The database directory MUST exist prior to running slapd AND
+ # should only be accessible by the slapd and slap tools.
+ # Mode 700 recommended.
+-olcDbDirectory: %LOCALSTATEDIR%/openldap-data
++olcDbDirectory: /var/lib/openldap/openldap-data
++
+ # Indices to maintain
+ olcDbIndex: objectClass eq
diff --git a/harmony/openldap/fix-manpages.patch b/harmony/openldap/fix-manpages.patch
new file mode 100644
index 000000000..179569494
--- /dev/null
+++ b/harmony/openldap/fix-manpages.patch
@@ -0,0 +1,75 @@
+Various manual pages changes:
+* removes LIBEXECDIR from slapd.8
+* removes references to non-existing manpages (bz 624616)
+
+Patch-Source: https://src.fedoraproject.org/rpms/openldap/blob/f27/f/openldap-manpages.patch
+
+diff --git a/doc/man/man1/ldapmodify.1 b/doc/man/man1/ldapmodify.1
+index 3def6da..466c772 100644
+--- a/doc/man/man1/ldapmodify.1
++++ b/doc/man/man1/ldapmodify.1
+@@ -397,8 +397,7 @@ exit status and a diagnostic message being written to standard error.
+ .BR ldap_add_ext (3),
+ .BR ldap_delete_ext (3),
+ .BR ldap_modify_ext (3),
+-.BR ldap_modrdn_ext (3),
+-.BR ldif (5).
++.BR ldif (5)
+ .SH AUTHOR
+ The OpenLDAP Project <http://www.openldap.org/>
+ .SH ACKNOWLEDGEMENTS
+diff --git a/doc/man/man5/ldap.conf.5 b/doc/man/man5/ldap.conf.5
+index cfde143..63592cb 100644
+--- a/doc/man/man5/ldap.conf.5
++++ b/doc/man/man5/ldap.conf.5
+@@ -317,6 +317,7 @@ certificates in separate individual files. The
+ .B TLS_CACERT
+ is always used before
+ .B TLS_CACERTDIR.
++The specified directory must be managed with the LibreSSL c_rehash utility.
+ This parameter is ignored with GnuTLS.
+
+ When using Mozilla NSS, <path> may contain a Mozilla NSS cert/key
+diff --git a/doc/man/man8/slapd.8 b/doc/man/man8/slapd.8
+index b739f4d..e2a1a00 100644
+--- a/doc/man/man8/slapd.8
++++ b/doc/man/man8/slapd.8
+@@ -5,7 +5,7 @@
+ .SH NAME
+ slapd \- Stand-alone LDAP Daemon
+ .SH SYNOPSIS
+-.B LIBEXECDIR/slapd
++.B slapd
+ [\c
+ .BR \-4 | \-6 ]
+ [\c
+@@ -317,7 +317,7 @@ the LDAP databases defined in the default config file, just type:
+ .LP
+ .nf
+ .ft tt
+- LIBEXECDIR/slapd
++ slapd
+ .ft
+ .fi
+ .LP
+@@ -328,7 +328,7 @@ on voluminous debugging which will be printed on standard error, type:
+ .LP
+ .nf
+ .ft tt
+- LIBEXECDIR/slapd \-f /var/tmp/slapd.conf \-d 255
++ slapd -f /var/tmp/slapd.conf -d 255
+ .ft
+ .fi
+ .LP
+@@ -336,7 +336,7 @@ To test whether the configuration file is correct or not, type:
+ .LP
+ .nf
+ .ft tt
+- LIBEXECDIR/slapd \-Tt
++ slapd -Tt
+ .ft
+ .fi
+ .LP
+--
+1.8.1.4
+
diff --git a/harmony/openldap/libressl.patch b/harmony/openldap/libressl.patch
new file mode 100644
index 000000000..ac0106418
--- /dev/null
+++ b/harmony/openldap/libressl.patch
@@ -0,0 +1,65 @@
+--- a/libraries/libldap/tls_o.c.orig 2017-06-04 16:31:28 UTC
++++ b/libraries/libldap/tls_o.c
+@@ -47,7 +47,7 @@
+ #include <ssl.h>
+ #endif
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000
++#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
+ #define ASN1_STRING_data(x) ASN1_STRING_get0_data(x)
+ #endif
+
+@@ -157,7 +157,7 @@ tlso_init( void )
+ (void) tlso_seed_PRNG( lo->ldo_tls_randfile );
+ #endif
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000
++#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
+ SSL_load_error_strings();
+ SSL_library_init();
+ OpenSSL_add_all_digests();
+@@ -205,7 +205,7 @@ static void
+ tlso_ctx_ref( tls_ctx *ctx )
+ {
+ tlso_ctx *c = (tlso_ctx *)ctx;
+-#if OPENSSL_VERSION_NUMBER < 0x10100000
++#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
+ #define SSL_CTX_up_ref(ctx) CRYPTO_add( &(ctx->references), 1, CRYPTO_LOCK_SSL_CTX )
+ #endif
+ SSL_CTX_up_ref( c );
+@@ -464,7 +464,7 @@ tlso_session_my_dn( tls_session *sess, struct berval *
+ if (!x) return LDAP_INVALID_CREDENTIALS;
+
+ xn = X509_get_subject_name(x);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000
++#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
+ der_dn->bv_len = i2d_X509_NAME( xn, NULL );
+ der_dn->bv_val = xn->bytes->data;
+ #else
+@@ -500,7 +500,7 @@ tlso_session_peer_dn( tls_session *sess, struct berval
+ return LDAP_INVALID_CREDENTIALS;
+
+ xn = X509_get_subject_name(x);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000
++#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
+ der_dn->bv_len = i2d_X509_NAME( xn, NULL );
+ der_dn->bv_val = xn->bytes->data;
+ #else
+@@ -721,7 +721,7 @@ struct tls_data {
+ Sockbuf_IO_Desc *sbiod;
+ };
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000
++#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
+ #define BIO_set_init(b, x) b->init = x
+ #define BIO_set_data(b, x) b->ptr = x
+ #define BIO_clear_flags(b, x) b->flags &= ~(x)
+@@ -822,7 +822,7 @@ tlso_bio_puts( BIO *b, const char *str )
+ return tlso_bio_write( b, str, strlen( str ) );
+ }
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000
++#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
+ struct bio_method_st {
+ int type;
+ const char *name;
diff --git a/harmony/openldap/openldap-2.4-ppolicy.patch b/harmony/openldap/openldap-2.4-ppolicy.patch
new file mode 100644
index 000000000..c05790e3e
--- /dev/null
+++ b/harmony/openldap/openldap-2.4-ppolicy.patch
@@ -0,0 +1,13 @@
+diff -urN ./clients.orig/tools/common.c ./clients/tools/common.c
+--- ./clients.orig/tools/common.c 2007-09-01 01:13:50.000000000 +0200
++++ ./clients/tools/common.c 2008-01-13 21:50:06.000000000 +0100
+@@ -1262,8 +1262,8 @@
+ int nsctrls = 0;
+
+ #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST
++ LDAPControl c;
+ if ( ppolicy ) {
+- LDAPControl c;
+ c.ldctl_oid = LDAP_CONTROL_PASSWORDPOLICYREQUEST;
+ c.ldctl_value.bv_val = NULL;
+ c.ldctl_value.bv_len = 0;
diff --git a/harmony/openldap/openldap-2.4.11-libldap_r.patch b/harmony/openldap/openldap-2.4.11-libldap_r.patch
new file mode 100644
index 000000000..448249a3b
--- /dev/null
+++ b/harmony/openldap/openldap-2.4.11-libldap_r.patch
@@ -0,0 +1,11 @@
+diff -Nuar openldap-2.4.11.orig/servers/slapd/slapi/Makefile.in openldap-2.4.11/servers/slapd/slapi/Makefile.in
+--- openldap-2.4.11.orig/servers/slapd/slapi/Makefile.in 2008-02-11 15:26:49.000000000 -0800
++++ openldap-2.4.11/servers/slapd/slapi/Makefile.in 2008-10-14 02:10:18.402799262 -0700
+@@ -37,6 +37,7 @@
+ XLIBS = $(LIBRARY)
+ XXLIBS =
+ NT_LINK_LIBS = $(AC_LIBS)
++UNIX_LINK_LIBS = ../../../libraries/libldap_r/libldap_r.la $(LTHREAD_LIBS)
+
+ XINCPATH = -I$(srcdir)/.. -I$(srcdir)
+ XDEFS = $(MODULES_CPPFLAGS)
diff --git a/harmony/openldap/openldap-mqtt-overlay.patch b/harmony/openldap/openldap-mqtt-overlay.patch
new file mode 100644
index 000000000..795480f1e
--- /dev/null
+++ b/harmony/openldap/openldap-mqtt-overlay.patch
@@ -0,0 +1,447 @@
+diff --git a/contrib/slapd-modules/mqtt/Makefile b/contrib/slapd-modules/mqtt/Makefile
+new file mode 100644
+index 0000000..2cb4db7
+--- /dev/null
++++ b/contrib/slapd-modules/mqtt/Makefile
+@@ -0,0 +1,45 @@
++# $OpenLDAP$
++
++LDAP_SRC = ../../..
++LDAP_BUILD = ../../..
++LDAP_INC = -I$(LDAP_BUILD)/include -I$(LDAP_SRC)/include -I$(LDAP_SRC)/servers/slapd
++LDAP_LIB = $(LDAP_BUILD)/libraries/libldap_r/libldap_r.la \
++ $(LDAP_BUILD)/libraries/liblber/liblber.la
++
++LIBTOOL = $(LDAP_BUILD)/libtool
++CC = gcc
++OPT = -g -O2 -Wall
++DEFS =
++INCS = $(LDAP_INC)
++LIBS = $(LDAP_LIB) -lmosquitto
++
++PROGRAMS = mqtt.la
++LTVER = 0:0:0
++
++prefix=/usr/local
++exec_prefix=$(prefix)
++ldap_subdir=/openldap
++
++libdir=$(exec_prefix)/lib
++libexecdir=$(exec_prefix)/libexec
++moduledir = $(libdir)$(ldap_subdir)
++
++.SUFFIXES: .c .o .lo
++
++.c.lo:
++ $(LIBTOOL) --mode=compile $(CC) $(OPT) $(DEFS) $(INCS) -c $<
++
++all: $(PROGRAMS)
++
++mqtt.la: mqtt.lo
++ $(LIBTOOL) --mode=link $(CC) $(OPT) -version-info $(LTVER) \
++ -rpath $(moduledir) -module -o $@ $? $(LIBS)
++
++clean:
++ rm -rf *.o *.lo *.la .libs
++
++install: $(PROGRAMS)
++ mkdir -p $(DESTDIR)$(moduledir)
++ for p in $(PROGRAMS) ; do \
++ $(LIBTOOL) --mode=install cp $$p $(DESTDIR)$(moduledir) ; \
++ done
+diff --git a/contrib/slapd-modules/mqtt/mqtt.c b/contrib/slapd-modules/mqtt/mqtt.c
+new file mode 100644
+index 0000000..b3a0a31
+--- /dev/null
++++ b/contrib/slapd-modules/mqtt/mqtt.c
+@@ -0,0 +1,389 @@
++/* $OpenLDAP$ */
++/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
++ *
++ * Copyright 2014 Timo Teräs <timo.teras@iki.fi>.
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted only as authorized by the OpenLDAP
++ * Public License.
++ *
++ * A copy of this license is available in file LICENSE in the
++ * top-level directory of the distribution or, alternatively, at
++ * http://www.OpenLDAP.org/license.html.
++ */
++/* mqtt-overlay
++ *
++ * This is an OpenLDAP overlay that... */
++
++#include <mosquitto.h>
++#include <unistd.h>
++
++#include "portable.h"
++#include "slap.h"
++#include "config.h"
++
++typedef struct mqtt_notify_t {
++ struct mqtt_notify_t *next;
++ char *topic;
++ char *dn_group_str;
++ char *oc_group_str;
++ char *str_member;
++
++ struct berval ndn_group;
++ ObjectClass *oc_group;
++ AttributeDescription *ad_member;
++ int notify_pending;
++} mqtt_notify_t;
++
++typedef struct mqtt_t {
++ struct mosquitto *mq;
++ int port;
++ char *hostname, *username, *password;
++ mqtt_notify_t *notify_map;
++} mqtt_t;
++
++static ConfigDriver mqtt_config_notify;
++
++static ConfigTable mqttcfg[] = {
++ { "mqtt-hostname", "hostname", 2, 2, 0,
++ ARG_STRING|ARG_OFFSET, (void *)offsetof(mqtt_t, hostname),
++ "( OLcfgCtAt:5.1 NAME 'olcMqttHostname' "
++ "DESC 'Hostname of MQTT broker' "
++ "SYNTAX OMsDirectoryString SINGLE-VALUE )",
++ NULL, NULL },
++ { "mqtt-port", "port", 2, 2, 0,
++ ARG_INT|ARG_OFFSET, (void *)offsetof(mqtt_t, port),
++ "( OLcfgCtAt:5.2 NAME 'olcMqttPort' "
++ "DESC 'Port of MQTT broker' "
++ "SYNTAX OMsInteger SINGLE-VALUE )",
++ NULL, NULL },
++ { "mqtt-username", "username", 2, 2, 0,
++ ARG_STRING|ARG_OFFSET, (void *)offsetof(mqtt_t, username),
++ "( OLcfgCtAt:5.3 NAME 'olcMqttUsername' "
++ "DESC 'Username for MQTT broker' "
++ "SYNTAX OMsDirectoryString SINGLE-VALUE )",
++ NULL, NULL },
++ { "mqtt-password", "password", 2, 2, 0,
++ ARG_STRING|ARG_OFFSET, (void *)offsetof(mqtt_t, password),
++ "( OLcfgCtAt:5.4 NAME 'olcMqttPassword' "
++ "DESC 'Password for MQTT broker' "
++ "SYNTAX OMsDirectoryString SINGLE-VALUE )",
++ NULL, NULL },
++ { "mqtt-notify-password", "topic> <group-dn> <group-oc> <member-ad", 2, 5, 0,
++ ARG_MAGIC, mqtt_config_notify,
++ "( OLcfgCtAt:5.5 NAME 'olcMqttNotifyPassword' "
++ "DESC 'Notify password change on <topic>, optionally checking that the object is in the specified group.'"
++ "SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )",
++ NULL, NULL },
++ { NULL, NULL, 0, 0, 0, ARG_IGNORED }
++};
++
++static ConfigOCs mqttocs[] = {
++ { "( OLcfgCtOc:5.1 "
++ "NAME 'olcMqttConfig' "
++ "DESC 'MQTT configuration' "
++ "SUP olcOverlayConfig "
++ "MAY ( "
++ "olcMqttHostname "
++ "$ olcMqttPort"
++ "$ olcMqttUsername"
++ "$ olcMqttPassword"
++ "$ olcMqttNotifyPassword"
++ " ) )",
++ Cft_Overlay, mqttcfg },
++
++ { NULL, 0, NULL }
++};
++
++static int mqtt_init(BackendInfo *bi)
++{
++ return mosquitto_lib_init();
++}
++
++static int mqtt_destroy(BackendInfo *bi)
++{
++ return mosquitto_lib_cleanup();
++}
++
++static const char *ca_arg(ConfigArgs *c, int n)
++{
++ return (c->argc <= n) ? NULL : c->argv[n];
++}
++
++static void free_notify(mqtt_notify_t *n)
++{
++ ch_free(n->topic);
++ ch_free(n->oc_group_str);
++ ch_free(n->str_member);
++ ch_free(n->dn_group_str);
++ if (!BER_BVISNULL(&n->ndn_group))
++ ber_memfree(n->ndn_group.bv_val);
++ ch_free(n);
++}
++
++static void free_all_notifies(mqtt_t *mqtt)
++{
++ mqtt_notify_t *n, *next;
++
++ for (n = mqtt->notify_map; n; n = next) {
++ next = n->next;
++ free_notify(n);
++ }
++ mqtt->notify_map = NULL;
++}
++
++static int mqtt_config_notify(ConfigArgs *c)
++{
++ slap_overinst *on = (slap_overinst *)c->bi;
++ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
++ mqtt_notify_t *n, **pprev;
++ const char *text = NULL;
++ struct berval bv = BER_BVNULL, ndn = BER_BVNULL;
++ int rc, i;
++
++ switch (c->op) {
++ case SLAP_CONFIG_EMIT:
++ for (i = 0, n = mqtt->notify_map; n; n = n->next, i++) {
++ char *ptr = c->cr_msg, *end = &c->cr_msg[sizeof(c->cr_msg)-1];
++
++ ptr += snprintf(ptr, end-ptr, SLAP_X_ORDERED_FMT "%s", i, n->topic);
++ if (n->dn_group_str)
++ ptr += snprintf(ptr, end-ptr, " \"%s\"", n->dn_group_str);
++ if (n->oc_group_str)
++ ptr += snprintf(ptr, end-ptr, " \"%s\"", n->oc_group_str);
++ if (n->str_member)
++ ptr += snprintf(ptr, end-ptr, " \"%s\"", n->str_member);
++
++ bv.bv_val = c->cr_msg;
++ bv.bv_len = ptr - bv.bv_val;
++ value_add_one(&c->rvalue_vals, &bv);
++ }
++ return 0;
++ case LDAP_MOD_DELETE:
++ if (c->valx < 0) {
++ free_all_notifies(mqtt);
++ } else {
++ pprev = &mqtt->notify_map;
++ n = mqtt->notify_map;
++ for (i = 0; i < c->valx; i++) {
++ pprev = &n->next;
++ n = n->next;
++ }
++ *pprev = n->next;
++ free_notify(n);
++ }
++ return 0;
++ }
++
++ const char *groupdn = ca_arg(c, 2);
++ const char *oc_name = ca_arg(c, 3);
++ const char *ad_name = ca_arg(c, 4);
++ ObjectClass *oc = NULL;
++ AttributeDescription *ad = NULL;
++
++ if (groupdn) {
++ oc = oc_find(oc_name ?: SLAPD_GROUP_CLASS);
++ if (oc == NULL) {
++ Debug(LDAP_DEBUG_ANY, "mqtt_db_open: unable to find objectClass=\"%s\"\n",
++ oc_name, 0, 0);
++ return 1;
++ }
++
++ rc = slap_str2ad(ad_name ?: SLAPD_GROUP_ATTR, &ad, &text);
++ if (rc != LDAP_SUCCESS) {
++ Debug(LDAP_DEBUG_ANY, "mqtt_db_config_notify: unable to find attribute=\"%s\": %s (%d)\n",
++ ad_name, text, rc);
++ return rc;
++ }
++
++ ber_str2bv(groupdn, 0, 0, &bv);
++ rc = dnNormalize(0, NULL, NULL, &bv, &ndn, NULL);
++ if (rc != LDAP_SUCCESS) {
++ Debug(LDAP_DEBUG_ANY, "mqtt_db_config_notify: DN normalization failed for \"%s\": %d\n",
++ groupdn, rc, 0);
++ return rc;
++ }
++ }
++
++ n = ch_calloc(1, sizeof(*n));
++ n->topic = ch_strdup(c->argv[1]);
++ n->dn_group_str = groupdn ? ch_strdup(groupdn) : NULL;
++ n->oc_group_str = oc_name ? ch_strdup(oc_name) : NULL;
++ n->str_member = ad_name ? ch_strdup(ad_name) : NULL;
++ n->ndn_group = ndn;
++ n->oc_group = oc;
++ n->ad_member = ad;
++
++ for (pprev = &mqtt->notify_map; *pprev; pprev = &(*pprev)->next);
++ *pprev = n;
++
++ return 0;
++}
++
++static void mqtt_send_notify(mqtt_t *mqtt, mqtt_notify_t *n)
++{
++ Debug(LDAP_DEBUG_TRACE, "mqtt_send_notify: pub on topic '%s'\n", n->topic, 0, 0);
++ n->notify_pending = mosquitto_publish(mqtt->mq, NULL, n->topic, 0, NULL, 1, true) == MOSQ_ERR_NO_CONN;
++}
++
++static void mqtt_on_connect(struct mosquitto *mq, void *obj, int rc)
++{
++ slap_overinst *on = (slap_overinst *) obj;
++ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
++ mqtt_notify_t *n;
++
++ Debug(LDAP_DEBUG_TRACE, "mqtt_on_connect: connected with status %d\n", rc, 0, 0);
++ if (rc != 0)
++ return;
++
++ for (n = mqtt->notify_map; n; n = n->next)
++ if (n->notify_pending)
++ mqtt_send_notify(mqtt, n);
++}
++
++static int mqtt_db_init(BackendDB *be, ConfigReply *cr)
++{
++ slap_overinst *on = (slap_overinst *) be->bd_info;
++
++ Debug(LDAP_DEBUG_TRACE, "mqtt_db_init: initialize overlay\n", 0, 0, 0);
++ on->on_bi.bi_private = ch_calloc(1, sizeof(mqtt_t));
++
++ return 0;
++}
++
++static int mqtt_db_destroy(BackendDB *be, ConfigReply *cr)
++{
++ slap_overinst *on = (slap_overinst *) be->bd_info;
++ mqtt_t *mqtt = on->on_bi.bi_private;
++
++ Debug(LDAP_DEBUG_TRACE, "mqtt_db_destroy: destroy overlay\n", 0, 0, 0);
++ free_all_notifies(mqtt);
++ ch_free(mqtt);
++
++ return 0;
++}
++
++static int mqtt_db_open(BackendDB *be, ConfigReply *cr)
++{
++ slap_overinst *on = (slap_overinst *) be->bd_info;
++ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
++ struct mosquitto *mq;
++ char id[256];
++ int n;
++
++ n = snprintf(id, sizeof(id), "openldap-mqtt/%d/", getpid());
++ gethostname(&id[n], sizeof(id) - n);
++
++ Debug(LDAP_DEBUG_TRACE, "mqtt_db_open, id='%s'\n", id, 0, 0);
++ mqtt->mq = mq = mosquitto_new(id, true, on);
++ if (!mq) return 1;
++
++ if (mqtt->username && mqtt->password)
++ mosquitto_username_pw_set(mq, mqtt->username, mqtt->password);
++
++ mosquitto_connect_callback_set(mq, mqtt_on_connect);
++ mosquitto_connect_async(mq, mqtt->hostname ?: "127.0.0.1", mqtt->port ?: 1883, 60);
++ mosquitto_loop_start(mq);
++
++ return 0;
++}
++
++static int mqtt_db_close(BackendDB *be, ConfigReply *cr)
++{
++ slap_overinst *on = (slap_overinst *) be->bd_info;
++ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
++
++ Debug(LDAP_DEBUG_TRACE, "mqtt_db_close\n", 0, 0, 0);
++ mosquitto_disconnect(mqtt->mq);
++ mosquitto_loop_stop(mqtt->mq, false);
++ mosquitto_destroy(mqtt->mq);
++
++ free(mqtt->hostname); mqtt->hostname = NULL;
++ free(mqtt->username); mqtt->username = NULL;
++ free(mqtt->password); mqtt->password = NULL;
++
++ return 0;
++}
++
++static int mqtt_response(Operation *op, SlapReply *rs)
++{
++ slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
++ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
++ Attribute *a;
++ Modifications *m;
++ bool change = false;
++
++ switch (op->o_tag) {
++ case LDAP_REQ_ADD:
++ for (a = op->ora_e->e_attrs; a; a = a->a_next) {
++ if (a->a_desc == slap_schema.si_ad_userPassword) {
++ change = true;
++ break;
++ }
++ }
++ break;
++ case LDAP_REQ_MODIFY:
++ for (m = op->orm_modlist; m; m = m->sml_next) {
++ if (m->sml_desc == slap_schema.si_ad_userPassword) {
++ change = true;
++ break;
++ }
++ }
++ break;
++ case LDAP_REQ_EXTENDED:
++ if (ber_bvcmp(&slap_EXOP_MODIFY_PASSWD, &op->ore_reqoid) == 0)
++ change = true;
++ break;
++ }
++
++ if (change) {
++ mqtt_notify_t *n;
++ int r, cache;
++
++ for (n = mqtt->notify_map; n; n = n->next) {
++ if (n->oc_group) {
++ cache = op->o_do_not_cache;
++ op->o_do_not_cache = 1;
++ r = backend_group(op, NULL, &n->ndn_group, &op->o_req_ndn, n->oc_group, n->ad_member);
++ op->o_do_not_cache = cache;
++ } else {
++ r = 0;
++ }
++
++ Debug(LDAP_DEBUG_TRACE, "tested o_req_ndn='%s' in ndn_group='%s' r=%d\n",
++ op->o_req_ndn.bv_val, n->ndn_group.bv_val, r);
++
++ if (r == 0)
++ mqtt_send_notify(mqtt, n);
++ }
++ }
++
++ return SLAP_CB_CONTINUE;
++}
++
++static int mqtt_init_overlay()
++{
++ static slap_overinst ov;
++ int rc;
++
++ ov.on_bi.bi_type = "mqtt";
++ ov.on_bi.bi_init = mqtt_init;
++ ov.on_bi.bi_destroy = mqtt_destroy;
++ ov.on_bi.bi_db_init = mqtt_db_init;
++ ov.on_bi.bi_db_destroy = mqtt_db_destroy;
++ ov.on_bi.bi_db_open = mqtt_db_open;
++ ov.on_bi.bi_db_close = mqtt_db_close;
++ ov.on_bi.bi_cf_ocs = mqttocs;
++ ov.on_response = mqtt_response;
++
++ rc = config_register_schema(mqttcfg, mqttocs);
++ if (rc) return rc;
++
++ return overlay_register(&ov);
++}
++
++int init_module(int argc, char *argv[])
++{
++ return mqtt_init_overlay();
++}
+
diff --git a/harmony/openldap/openldap.post-install b/harmony/openldap/openldap.post-install
new file mode 100644
index 000000000..e90d25760
--- /dev/null
+++ b/harmony/openldap/openldap.post-install
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+cat >&2 <<-EOF
+*
+* To use LDAP server, you have to install some backend. Most users would need MDB
+* backend which you can install with: apk add openldap-back-mdb.
+*
+* If you use overlays, you have to install them separately too:
+* apk add openldap-overlay-<name>, or openldap-overlay-all to install them all.
+*
+EOF
diff --git a/harmony/openldap/openldap.post-upgrade b/harmony/openldap/openldap.post-upgrade
new file mode 100644
index 000000000..7be8906a9
--- /dev/null
+++ b/harmony/openldap/openldap.post-upgrade
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+new_ver="$1"
+old_ver="$2"
+
+if [ "$(apk version -t "$old_ver" "2.4.45-r2")" = "<" ]; then
+ cat >&2 <<-EOF
+ *
+ * All SLAPD backends and overlays have been moved to subpackages.
+ * You can install specific backend or overlay with apk:
+ *
+ * apk add openldap-back-<name>
+ * apk add openldap-overlay-<name>
+ *
+ * Or you can install all of them using metapackages openldap-back-all
+ * and openldap-overlay-all.
+ EOF
+ if [ -e /var/lib/openldap/openldap-data/data.mdb ]; then
+ cat >&2 <<-EOF
+ *
+ * Found existing MDB database. You have to install MDB backend:
+ * apk add openldap-back-mdb
+ *
+ * and add "moduleload back_mdb.so" to /etc/openldap/slapd.conf,
+ * or "olcModuleload back_mdb.so" to slapd.ldif.
+ *
+ EOF
+ else
+ echo "*" >&2
+ fi
+fi
diff --git a/harmony/openldap/openldap.pre-install b/harmony/openldap/openldap.pre-install
new file mode 100644
index 000000000..eb6b10fa4
--- /dev/null
+++ b/harmony/openldap/openldap.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+addgroup -S ldap 2>/dev/null
+adduser -S -D -H -h /usr/lib/openldap -s /sbin/nologin -G ldap \
+ -g "OpenLdap User" ldap 2>/dev/null
+
+exit 0
diff --git a/harmony/openldap/slapd.confd b/harmony/openldap/slapd.confd
new file mode 100644
index 000000000..f69f92b4a
--- /dev/null
+++ b/harmony/openldap/slapd.confd
@@ -0,0 +1,12 @@
+# Configuration for /etc/init.d/slapd
+
+# Location of the configuration file.
+cfgfile="/etc/openldap/slapd.conf"
+
+# Location of the configuration directory (OpenLDAP 2.3+).
+#cfgdir=""
+
+# To enable both the standard unciphered server and the ssl encrypted
+# one uncomment this line or set any other server starting options
+# you may desire.
+#command_args="-h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"
diff --git a/harmony/openldap/slapd.initd b/harmony/openldap/slapd.initd
new file mode 100644
index 000000000..350cc0d50
--- /dev/null
+++ b/harmony/openldap/slapd.initd
@@ -0,0 +1,34 @@
+#!/sbin/openrc-run
+
+: ${pidfile:="/run/openldap/slapd.pid"}
+
+name="LDAP server"
+extra_commands="checkconfig"
+description_checkconfig="Check slapd.conf for errors"
+
+command="/usr/sbin/slapd"
+# OPTS is for backward compatibility
+cfg_opt="${cfgdir:+"-F $cfgdir"} ${cfgfile:+"-f $cfgfile"}"
+command_args="-u ldap -g ldap $cfg_opt ${command_args:-${OPTS:-}}"
+
+stopsig=2
+start_stop_daemon_args="
+ ${KRB5_KTNAME:+"--env KRB5_KTNAME=$KRB5_KTNAME"}"
+
+depend() {
+ need net
+ after firewall
+ before dbus hald avahi-daemon
+ provide ldap
+}
+
+start_pre() {
+ checkpath --directory --owner ldap:ldap "${pidfile%/*}"
+ /usr/sbin/slaptest -u -Q $cfg_opt || /usr/sbin/slaptest -u $cfg_opt
+}
+
+checkconfig() {
+ ebegin "Checking $name configuration..."
+ /usr/sbin/slaptest -u $cfg_opt
+ eend $?
+}
diff --git a/harmony/orbit2/APKBUILD b/harmony/orbit2/APKBUILD
new file mode 100644
index 000000000..5caf3dcbc
--- /dev/null
+++ b/harmony/orbit2/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=orbit2
+pkgver=2.14.19
+pkgrel=4
+pkgdesc="CORBA implementation for GNOME"
+url="http://projects.gnome.org/ORBit2"
+arch="all"
+license="LGPL"
+depends=
+makedepends="glib-dev libidl-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="ftp://ftp.gnome.org/pub/GNOME/sources/ORBit2/${pkgver%.*}/ORBit2-${pkgver}.tar.bz2
+ glib-2.36.patch"
+
+builddir="${srcdir}/ORBit2-${pkgver}"
+prepare() {
+ cd "$builddir"
+ update_config_sub
+ default_prepare
+}
+
+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="313e125234e8d1195be277ad125af169f12ce312cb541a4641c5d57d3c905bbdc6a46672a86a012409cf4d7af58b5122f0e5db250730b65e8d95b2d5f4c4657e ORBit2-2.14.19.tar.bz2
+b90d8e200d16b735bece54454d1e2b1a7c1b75aaac83986263b5a9ac38c4235eed747408a07a266c0aaaeb9c7a75e7fda1ef1b2ed54300003da38ff2251fdcfa glib-2.36.patch"
diff --git a/harmony/orbit2/glib-2.36.patch b/harmony/orbit2/glib-2.36.patch
new file mode 100644
index 000000000..c94f920f7
--- /dev/null
+++ b/harmony/orbit2/glib-2.36.patch
@@ -0,0 +1,15 @@
+$NetBSD: patch-linc2_src_Makefile.in,v 1.1 2013/04/19 14:28:54 prlw1 Exp $
+
+Avoid compilation error caused by use of deprecated g_thread API
+
+--- ./linc2/src/Makefile.in.orig 2010-09-28 09:39:39.000000000 +0000
++++ ./linc2/src/Makefile.in
+@@ -244,7 +244,7 @@ noinst_LTLIBRARIES = liblinc.la
+ # -I$(top_srcdir)/include
+ INCLUDES = -I$(top_builddir)/linc2/include \
+ -I$(top_srcdir)/linc2/include $(LINC_CFLAGS) $(WARN_CFLAGS) \
+- -DG_DISABLE_DEPRECATED $(am__append_1)
++ $(am__append_1)
+ liblinc_la_SOURCES = \
+ linc.c \
+ linc-connection.c \
diff --git a/harmony/parted/APKBUILD b/harmony/parted/APKBUILD
new file mode 100644
index 000000000..0a4680a60
--- /dev/null
+++ b/harmony/parted/APKBUILD
@@ -0,0 +1,60 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=parted
+pkgver=3.2
+pkgrel=7
+pkgdesc="Utility to create, destroy, resize, check and copy partitions"
+url="http://www.gnu.org/software/parted/parted.html"
+arch="all"
+license="GPL3"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+depends=
+makedepends="readline-dev ncurses-dev lvm2-dev bash util-linux-dev gettext-dev autoconf automake"
+checkdepends="check-dev python3"
+options="!checkroot"
+source="ftp://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.xz
+ disable-two-tests.patch
+ fix-includes.patch
+ fix-libintl-header-s390x.patch
+ tests-call-name-correctly.patch
+ tests-python3.patch
+ "
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ autoreconf
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-debug \
+ --disable-static \
+ --enable-shared \
+ --enable-device-mapper \
+ --with-readline
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm -rf "$pkgdir"/usr/lib/charset.alias
+ rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true
+}
+sha512sums="4e37dbdd6f5032c9ebfec43704f6882379597d038167b9c4d04053efa083c68a705196713864451fa9e11d32777e16c68982877945c5efd9ea5f8252cb20e1c4 parted-3.2.tar.xz
+b49eb0211c405a4ef69e1bb0079621c22fec4adf0309f0a58b5d881540913de01d05ccd3eb521f35c3cf6f4eb8aa0f4c5270ce3dea47270a5c3fe8fae635c6f0 disable-two-tests.patch
+55ee63c218d1867c0f2c596e7c3eec5c42af160181456cc551fe3d432eabed0ac2dd3a3955ff0c375f76aeec8071e7f55a32834b87a0d39b8ef30361f671bfdd fix-includes.patch
+444a7e2fb3235dfd218f6b71fb25adde107d001f638d988ee1fa79686d8efee94a9499e27bdfdd75f9718760b448938b70a90a74285b93a39338d21f4ab4c9dc fix-libintl-header-s390x.patch
+8bd86d2b0401566e7757c43d849b7f913cc4ec1bf50d5641dc72d7e278ca38db2ac746cd8dcc756b245021ea1f9738875b6a831f05185b9217d3f1c287944748 tests-call-name-correctly.patch
+7486f98d535380a9e6598b9ac6153564319d5effa25456dc393cf3540ea47ac5b462be79cbd7d8efbd1fc2d2ef240a00873a2e2b138d4b4b0bb1494893de1eac tests-python3.patch"
diff --git a/harmony/parted/disable-two-tests.patch b/harmony/parted/disable-two-tests.patch
new file mode 100644
index 000000000..a6481dde3
--- /dev/null
+++ b/harmony/parted/disable-two-tests.patch
@@ -0,0 +1,16 @@
+These tests do not appear to work right upstream. Disable for now.
+
+--- parted-3.2/tests/Makefile.am.old 2014-06-15 19:15:54.000000000 +0000
++++ parted-3.2/tests/Makefile.am 2017-08-19 19:44:28.886245388 +0000
+@@ -24,11 +24,9 @@
+ t0209-gpt-pmbr_boot.sh \
+ t0210-gpt-resized-partition-entry-array.sh \
+ t0211-gpt-rewrite-header.sh \
+- t0212-gpt-many-partitions.sh \
+ t0220-gpt-msftres.sh \
+ t0250-gpt.sh \
+ t0251-gpt-unicode.sh \
+- t0280-gpt-corrupt.sh \
+ t0281-gpt-grow.sh \
+ t0282-gpt-move-backup.sh \
+ t0283-overlap-partitions.sh \
diff --git a/harmony/parted/fix-includes.patch b/harmony/parted/fix-includes.patch
new file mode 100644
index 000000000..c6eff0eb2
--- /dev/null
+++ b/harmony/parted/fix-includes.patch
@@ -0,0 +1,10 @@
+--- parted-3.1.orig/libparted/fs/xfs/platform_defs.h
++++ parted-3.1/libparted/fs/xfs/platform_defs.h
+@@ -35,6 +35,7 @@
+ #define __XFS_PLATFORM_DEFS_H__
+
+ #include <stdio.h>
++#include <fcntl.h>
+ #include <stdarg.h>
+ #include <assert.h>
+ #include <endian.h>
diff --git a/harmony/parted/fix-libintl-header-s390x.patch b/harmony/parted/fix-libintl-header-s390x.patch
new file mode 100644
index 000000000..68ae7d270
--- /dev/null
+++ b/harmony/parted/fix-libintl-header-s390x.patch
@@ -0,0 +1,58 @@
+From 4b2a566a3e007184d3ee9ce5b399a63eebbdadc3 Mon Sep 17 00:00:00 2001
+From: "Tuan M. Hoang" <tmhoang@flatglobe.org>
+Date: Thu, 23 Feb 2017 07:53:02 +0000
+Subject: [PATCH] main/parted: disable nls on s390x
+
+Because we build with --disable-nls by default, we need to remove libintl.h in
+these files on s390x. This is specific for DASD devices only on s390x.
+---
+ libparted/labels/dasd.c | 2 +-
+ libparted/labels/fdasd.c | 2 +-
+ libparted/labels/vtoc.c | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c
+index fa9414f..5acf844 100644
+--- a/libparted/labels/dasd.c
++++ b/libparted/labels/dasd.c
+@@ -40,8 +40,8 @@
+ #include <parted/fdasd.h>
+ #include <arch/linux.h>
+
+-#include <libintl.h>
+ #if ENABLE_NLS
++# include <libintl.h>
+ # define _(String) dgettext (PACKAGE, String)
+ #else
+ # define _(String) (String)
+diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c
+index 1f87937..e6a9086 100644
+--- a/libparted/labels/fdasd.c
++++ b/libparted/labels/fdasd.c
+@@ -24,8 +24,8 @@
+
+ #include <parted/parted.h>
+
+-#include <libintl.h>
+ #if ENABLE_NLS
++# include <libintl.h>
+ # define _(String) dgettext (PACKAGE, String)
+ #else
+ # define _(String) (String)
+diff --git a/libparted/labels/vtoc.c b/libparted/labels/vtoc.c
+index fdfa94f..64ba149 100644
+--- a/libparted/labels/vtoc.c
++++ b/libparted/labels/vtoc.c
+@@ -12,8 +12,8 @@
+
+ #include <parted/parted.h>
+
+-#include <libintl.h>
+ #if ENABLE_NLS
++# include <libintl.h>
+ # define _(String) dgettext (PACKAGE, String)
+ #else
+ # define _(String) (String)
+--
+2.11.1
+
diff --git a/harmony/parted/tests-call-name-correctly.patch b/harmony/parted/tests-call-name-correctly.patch
new file mode 100644
index 000000000..27a6287e8
--- /dev/null
+++ b/harmony/parted/tests-call-name-correctly.patch
@@ -0,0 +1,42 @@
+mkpart syntax recently changed, tests do not reflect that.
+
+--- parted-3.2/tests/t5000-tags.sh.old 2014-06-15 18:17:43.000000000 +0000
++++ parted-3.2/tests/t5000-tags.sh 2017-08-19 18:55:03.207451920 +0000
+@@ -48,7 +48,7 @@
+ compare exp out || fail=1
+
+ # add a partition
+-parted -s $dev u s mkpart name1 ${start_sector} ${end_sector} >out 2>&1 \
++parted -s $dev u s mkpart primary ${start_sector} ${end_sector} name 1 name1 >out 2>&1 \
+ || fail=1
+
+ # print the table before modification
+--- parted-3.2/tests/t0208-mkpart-end-in-IEC.sh.old 2014-06-15 18:17:43.000000000 +0000
++++ parted-3.2/tests/t0208-mkpart-end-in-IEC.sh 2017-08-19 20:05:19.650875813 +0000
+@@ -25,22 +25,22 @@
+
+ dd if=/dev/null of=$dev bs=1M seek=$n_mbs || fail=1
+ # create 1st partition
+-parted --align=none -s $dev mklabel gpt mkpart p1 1MiB 2MiB > err 2>&1 || fail=1
++parted --align=none -s $dev mklabel gpt mkpart primary 1MiB 2MiB name 1 p1 > err 2>&1 || fail=1
+ compare /dev/null err || fail=1 # expect no output
+ #parted -m -s $dev u s p > exp || fail=1
+
+ # create 2nd partition - they should not overlap
+ # this time specify default unit
+-parted --align=none -s $dev unit MiB mkpart p2 2 3 > err 2>&1 || fail=1
++parted --align=none -s $dev unit MiB mkpart primary 2 3 name 2 p2 > err 2>&1 || fail=1
+ compare /dev/null err || fail=1 # expect no output
+
+ # create 3rd partition - expect no overlap
+ # specify default unit, but explicitly override it
+-parted --align=none -s $dev unit TB mkpart p3 3MiB 4MiB > err 2>&1 || fail=1
++parted --align=none -s $dev unit TB mkpart primary 3MiB 4MiB name 3 p3 > err 2>&1 || fail=1
+ compare /dev/null err || fail=1 # expect no output
+
+ # Specify default unit of MiB, yet use explicit ending sector number.
+-parted --align=none -s $dev unit MiB mkpart p4 4MiB 10239s > err 2>&1 || fail=1
++parted --align=none -s $dev unit MiB mkpart primary 4MiB 10239s name 4 p4 > err 2>&1 || fail=1
+ compare /dev/null err || fail=1 # expect no output
+
+ # check boundaries of the partitions
diff --git a/harmony/parted/tests-python3.patch b/harmony/parted/tests-python3.patch
new file mode 100644
index 000000000..8811b7237
--- /dev/null
+++ b/harmony/parted/tests-python3.patch
@@ -0,0 +1,68 @@
+--- parted-3.2/tests/gpt-header-move.old 2014-06-15 18:27:30.000000000 +0000
++++ parted-3.2/tests/gpt-header-move 2017-08-19 20:47:02.443283140 +0000
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python3
+
+ # open img file, subtract 33 from altlba address, and move the last 33 sectors
+ # back by 33 sectors
+@@ -11,12 +11,12 @@
+ file.seek(512)
+ gptheader = file.read(512)
+ altlba = unpack_from('<q', gptheader,offset=32)[0]
+-gptheader = array.array('c',gptheader)
++gptheader = array.array('B',gptheader)
+ pack_into('<Q', gptheader, 32, altlba-33)
+ #zero header crc
+ pack_into('<L', gptheader, 16, 0)
+ #compute new crc
+-newcrc = ((crc32(buffer(gptheader,0,92))) & 0xFFFFFFFF)
++newcrc = ((crc32(memoryview(gptheader[0:92]))) & 0xFFFFFFFF)
+ pack_into('<L', gptheader, 16, newcrc)
+ file.seek(512)
+ file.write(gptheader)
+@@ -25,7 +25,7 @@
+ file.seek(512*(altlba-32))
+ backup = file.read(512*32)
+ altlba -= 33
+-gptheader = array.array('c',gptheader)
++gptheader = array.array('B',gptheader)
+ #update mylba
+ pack_into('<Q', gptheader, 24, altlba)
+ #update table lba
+@@ -33,7 +33,7 @@
+ #zero header crc
+ pack_into('<L', gptheader, 16, 0)
+ #compute new crc
+-newcrc = ((crc32(buffer(gptheader,0,92))) & 0xFFFFFFFF)
++newcrc = ((crc32(memoryview(gptheader[0:92]))) & 0xFFFFFFFF)
+ pack_into('<L', gptheader, 16, newcrc)
+ file.seek(512*(altlba-32))
+ file.write(backup)
+@@ -38,4 +38,4 @@
+ file.seek(512*(altlba-32))
+ file.write(backup)
+ file.write(gptheader)
+-file.write("\0" * (512 * 33))
++file.write(b"\0" * (512 * 33))
+--- parted-3.2/tests/msdos-overlap.old 2014-06-15 18:27:30.000000000 +0000
++++ parted-3.2/tests/msdos-overlap 2017-08-19 20:48:16.279847771 +0000
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python3
+ """
+ Write an overlapping partition to a msdos disk
+
+@@ -14,10 +14,10 @@
+ OFFSET = 0x1b8
+
+ if len(sys.argv) < 2:
+- print "%s: <image or device>"
++ print("%s: <image or device>")
+ sys.exit(1)
+
+-data = "".join(chr(c) for c in BAD_ENTRY)
++data = bytearray(BAD_ENTRY)
+ with open(sys.argv[1], "rb+") as f:
+ f.seek(OFFSET, 0)
+ f.write(data)
diff --git a/harmony/pcre/APKBUILD b/harmony/pcre/APKBUILD
new file mode 100644
index 000000000..43ac2a9d6
--- /dev/null
+++ b/harmony/pcre/APKBUILD
@@ -0,0 +1,90 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=pcre
+pkgver=8.41
+pkgrel=1
+pkgdesc="Perl-compatible regular expression library"
+url="http://pcre.sourceforge.net"
+arch="all"
+license="BSD"
+depends=
+makedepends=""
+checkdepends="paxmark"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-tools
+ libpcrecpp libpcre16 libpcre32"
+source="ftp://ftp.csx.cam.ac.uk/pub/software/programming/$pkgname/$pkgname-$pkgver.tar.bz2
+ "
+
+# secfixes:
+# 8.40-r2:
+# - CVE-2017-7186
+# 7.8-r0:
+# - CVE-2017-11164
+
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ([ "$CARCH" = "s390x" ] || [ "$CARCH" = "ppc64" ]) && _enable_jit="" || _enable_jit="--enable-jit"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ $_enable_jit \
+ --enable-utf8 \
+ --enable-unicode-properties \
+ --enable-pcre8 \
+ --enable-pcre16 \
+ --enable-pcre32 \
+ --with-match-limit-recursion=8192 \
+ --htmldir=/usr/share/doc/$pkgname-$pkgver/html \
+ --docdir=/usr/share/doc/$pkgname-$pkgver
+
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+check() {
+ cd "$builddir"
+
+ # paxmark tests requiring JIT
+ for fn in pcre_jit_test pcretest; do
+ ./$fn &>/dev/null < /dev/null || true
+ [ -x .libs/lt-$fn ] && paxmark -m .libs/lt-$fn
+ done
+
+ # skip locale specific tests
+ sed -i -e 's/do3=yes//g' RunTest
+
+ make check
+}
+
+libpcrecpp() {
+ pkgdesc="C++ bindings for PCRE"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libpcrecpp.so* "$subpkgdir"/usr/lib/
+}
+
+libpcre16() {
+ pkgdesc="PCRE with 16 bit character support"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libpcre16.so* "$subpkgdir"/usr/lib/
+}
+
+libpcre32() {
+ pkgdesc="PCRE with 32 bit character support"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libpcre32.so* "$subpkgdir"/usr/lib/
+}
+
+tools() {
+ pkgdesc="Auxiliary utilities for PCRE"
+ mkdir -p "$subpkgdir"/usr/
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+sha512sums="cc9cdbeb98c010fe4f093a019bebfb91965dae4c6a48f8e49c38ec8df7d9da7f0d32c12fc58f22c51f1c2f010e72b65bcbf8bbf180060e93edf464fa9a7c3551 pcre-8.41.tar.bz2"
diff --git a/harmony/pcre2/APKBUILD b/harmony/pcre2/APKBUILD
new file mode 100644
index 000000000..d06c4b22c
--- /dev/null
+++ b/harmony/pcre2/APKBUILD
@@ -0,0 +1,88 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
+pkgname=pcre2
+pkgver=10.30
+pkgrel=1
+pkgdesc="Perl-compatible regular expression library"
+url="http://pcre.sourceforge.net/"
+arch="all"
+license="BSD"
+depends=""
+depends_dev="libedit-dev zlib-dev"
+makedepends="$depends_dev paxmark"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-tools
+ libpcre2-16:_libpcre libpcre2-32:_libpcre"
+source="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/$pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$pkgname-$pkgver"
+
+case "$CARCH" in
+ s390x) _enable_jit="";;
+ ppc64) _enable_jit="";;
+ pmmx) _enable_jit="";; # maybe someday fix sse2 detection
+ *) _enable_jit="--enable-jit";;
+esac
+
+build() {
+ cd "$builddir"
+
+ # Note: Forced -O3 is recommended (needed?) for Julia.
+ ./configure \
+ CFLAGS="$CFLAGS -O3" \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --docdir=/usr/share/doc/$pkgname-$pkgver \
+ --htmldir=/usr/share/doc/$pkgname-$pkgver/html \
+ --enable-pcre2-16 \
+ --enable-pcre2-32 \
+ --enable-pcre2grep-libz \
+ --enable-pcre2test-libedit \
+ --with-match-limit-recursion=8192 \
+ $_enable_jit
+ make
+}
+
+# Note: RunTest and pcre2_jit_test generates some binaries in .libs that needs
+# to disable MPROTECT on grsecurity kernel. That's why it's so complicated...
+check() {
+ cd "$builddir"
+
+ local is_pax=$(grep -q PaX /proc/$$/status && echo 'yes' || echo 'no')
+
+ if [ "$is_pax" = yes ]; then
+ timeout -t 1 -s KILL ./RunTest 2>/dev/null || true
+ find .libs -type f ! -name 'lib*' | xargs paxmark m
+ fi
+ ./RunTest
+
+ if [ -n "$_enable_jit" ]; then
+ if [ "$is_pax" = yes ]; then
+ timeout -t 1 -s KILL ./pcre2_jit_test >/dev/null || true
+ find .libs -type f ! -name 'lib*' | xargs paxmark m
+ fi
+ ./pcre2_jit_test
+ fi
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install
+}
+
+_libpcre() {
+ local bits="${subpkgname##*-}"
+ pkgdesc="PCRE2 with $bits bit character support"
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libpcre2-$bits.so* "$subpkgdir"/usr/lib/
+}
+
+tools() {
+ pkgdesc="Auxiliary utilities for PCRE2"
+
+ mkdir -p "$subpkgdir"/usr/
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+sha512sums="af6c7cd8e25ec1ed538c89808b144a508ee6f5ca08134f04119e4786d69643bea99bec3c9527d201cec47ba52032d55ad7692b448b4696d68fd4ed1081dbaa62 pcre2-10.30.tar.gz"
diff --git a/harmony/postgresql/APKBUILD b/harmony/postgresql/APKBUILD
new file mode 100644
index 000000000..e618eeb39
--- /dev/null
+++ b/harmony/postgresql/APKBUILD
@@ -0,0 +1,259 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+# Contributor: G.J.R. Timmer <gjr.timmer@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+pkgname=postgresql
+pkgver=10.0
+pkgrel=0
+pkgdesc="A sophisticated object-relational DBMS"
+url="http://www.postgresql.org/"
+arch="all"
+license="BSD"
+depends="postgresql-client tzdata"
+options="!checkroot"
+install="$pkgname.pre-upgrade"
+pkgusers="postgres"
+pkggroups="postgres"
+checkdepends="diffutils"
+depends_dev="openssl-dev"
+makedepends="$depends_dev libedit-dev zlib-dev libxml2-dev util-linux-dev
+ openldap-dev tcl-dev perl-dev python3-dev"
+subpackages="$pkgname-contrib $pkgname-dev $pkgname-doc libpq $pkgname-libs
+ $pkgname-client $pkgname-pltcl
+ $pkgname-plperl $pkgname-plperl-contrib:plperl_contrib
+ $pkgname-plpython3 $pkgname-plpython3-contrib:plpython3_contrib"
+source="https://ftp.postgresql.org/pub/source/v$pkgver/$pkgname-$pkgver.tar.bz2
+ initdb.patch
+ perl-rpath.patch
+ conf-unix_socket_directories.patch
+ disable-broken-tests.patch
+ $pkgname.initd
+ $pkgname.confd
+ pg-restore.initd
+ pg-restore.confd
+ pltcl_create_tables.sql
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+options="!checkroot"
+
+# secfixes:
+# 9.6.4-r0:
+# - CVE-2017-7546
+# - CVE-2017-7547
+# - CVE-2017-7548
+# 9.6.3-r0:
+# - CVE-2017-7484
+# - CVE-2017-7485
+# - CVE-2017-7486
+
+prepare() {
+ default_prepare
+ cd "$builddir"
+
+ local file; for file in $pkgname.initd $pkgname.confd; do
+ sed "s|@VERSION@|${pkgver%.*}|" "$srcdir"/$file > $file
+ done
+}
+
+build() {
+ _configure
+ make world
+}
+
+# Note: (...) instead of {...} is NOT a typo!
+_configure() (
+ export CFLAGS="${CFLAGS/-Os/-O2}"
+ export CPPFLAGS="${CPPFLAGS/-Os/-O2}"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --with-system-tzdata=/usr/share/zoneinfo \
+ --with-ldap \
+ --with-libedit-preferred \
+ --with-libxml \
+ --with-openssl \
+ --with-uuid=e2fs \
+ --disable-rpath \
+ --with-perl \
+ --with-python \
+ --with-tcl
+)
+
+check() {
+ cd "$builddir"
+
+ _run_tests src/test
+ _run_tests src/pl
+ _run_tests contrib
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install install-docs
+
+ cd "$pkgdir"
+
+ install -d -m750 -o postgres -g postgres \
+ ./var/lib/postgresql \
+ ./var/log/$pkgname
+
+ install -D -m755 "$builddir"/postgresql.initd ./etc/init.d/postgresql
+ install -D -m644 "$builddir"/postgresql.confd ./etc/conf.d/postgresql
+
+ install -D -m755 "$srcdir"/pg-restore.initd ./etc/init.d/pg-restore
+ install -D -m644 "$srcdir"/pg-restore.confd ./etc/conf.d/pg-restore
+}
+
+dev() {
+ default_dev
+
+ _submv usr/bin/pg_config \
+ usr/bin/ecpg \
+ usr/lib/postgresql/pgxs
+}
+
+libpq() {
+ pkgdesc="PostgreSQL libraries"
+ depends=""
+
+ _submv usr/lib/libpq.so.*
+}
+
+libs() {
+ depends=""
+ default_libs
+}
+
+client() {
+ pkgdesc="PostgreSQL client"
+ depends=""
+
+ cd "$pkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/usr/bin
+ mv clusterdb \
+ createdb \
+ createuser \
+ dropdb \
+ dropuser \
+ pg_basebackup \
+ pg_dump \
+ pg_dumpall \
+ pg_isready \
+ pg_receivewal \
+ pg_recvlogical \
+ pg_restore \
+ psql \
+ reindexdb \
+ vacuumdb \
+ "$subpkgdir"/usr/bin/
+}
+
+contrib() {
+ pkgdesc="Extension modules distributed with PostgreSQL"
+ depends=""
+
+ cd "$builddir"
+
+ # Avoid installing plperl and plpython extensions, these will be
+ # installed into separate subpackages.
+ sed -Ei -e 's/(.*_plperl)/#\1/' \
+ -e 's/(.*_plpython)/#\1/' \
+ contrib/Makefile
+
+ make -C contrib DESTDIR="$subpkgdir" install
+
+ mv "$subpkgdir"/usr/share/doc/postgresql/extension \
+ "$pkgdir"/usr/share/doc/postgresql/
+ rmdir -p "$subpkgdir"/usr/share/doc/postgresql || true
+}
+
+pltcl() {
+ pkgdesc="PL/Tcl procedural language for PostgreSQL"
+ depends="pgtcl"
+
+ _submv usr/lib/postgresql/pltcl.so \
+ usr/share/postgresql/extension/pltcl*
+
+ install -m 644 "$srcdir"/pltcl_create_tables.sql \
+ "$subpkgdir"/usr/share/postgresql/
+}
+
+plperl() {
+ pkgdesc="PL/Perl procedural language for PostgreSQL"
+ depends=""
+
+ _submv usr/lib/postgresql/plperl.so \
+ usr/share/postgresql/extension/plperl*
+}
+
+plperl_contrib() {
+ _plcontrib plperl "PL/Perl"
+
+ cd "$builddir"
+ make -C contrib/hstore_plperl DESTDIR="$subpkgdir" install
+}
+
+plpython3() {
+ pkgdesc="PL/Python3 procedural language for PostgreSQL"
+ depends="python3"
+
+ cd "$builddir"
+ make -C src/pl/plpython DESTDIR="$subpkgdir" install
+ rm -R "$subpkgdir"/usr/include
+}
+
+plpython3_contrib() {
+ _plcontrib plpython3 "PL/Python 3"
+
+ cd "$builddir"
+ make -C contrib/hstore_plpython DESTDIR="$subpkgdir" install
+ make -C contrib/ltree_plpython DESTDIR="$subpkgdir" install
+}
+
+_plcontrib() {
+ local subname="$1"
+ pkgdesc="$2 extension modules distributed with PostgreSQL"
+ depends="$pkgname-$subname"
+ install_if="$pkgname-$subname=$pkgver-r$pkgrel $pkgname-contrib=$pkgver-r$pkgrel"
+}
+
+_run_tests() {
+ local path="$1"; shift
+
+ msg "Running test suite at $path..."
+ # Note: some tests fail when running in parallel.
+ make -k -j 1 -C "$path" $@ check MAX_CONNECTIONS=5 || {
+ printf "\n%s\n\n" "Trying to find all regression.diffs files in build directory..." >&2
+ find "$path" -name regression.diffs | while read file; do
+ echo "=== test failure: $file ===" >&2
+ cat "$file" >&2
+ done
+ return 1
+ }
+}
+
+_submv() {
+ local path; for path in "$@"; do
+ mkdir -p "$subpkgdir/${path%/*}"
+ mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
+ done
+}
+
+sha512sums="88295af13db77a85a604c925aa627d383fdac62c1185119bba87753ce4167a13aed0f055a7a1329b3051f8757c6ba7529baed00a564ef0cfbee685720f282678 postgresql-10.0.tar.bz2
+1f8e7dc58f5b0a12427cf2fd904ffa898a34f23f3332c8382b94e0d991c007289e7913a69e04498f3d93fc5701855796c207b4b1cc4a0b366f586050124d7fcc initdb.patch
+5f9d8bb4957194069d01af8ab3abc6d4d83a7e7f8bd7ebe1caae5361d621a3e58f91b14b952958138a794e0a80bc154fbb7e3e78d211e2a95b9b7901335de854 perl-rpath.patch
+8439a6fdfdea0a4867daeb8bc23d6c825f30c00d91d4c39f48653f5ee77341f23282ce03a77aad94b5369700f11d2cb28d5aee360e59138352a9ab331a9f9d0f conf-unix_socket_directories.patch
+1966b2a3971f56fbecd8daa45965236d487683e13300e5c000e595bbadbbe9d0e1301fbbfa034f452abe8a4e4a427781f772370b9ff392bb03fc11ee43c9dee7 disable-broken-tests.patch
+224e80f9e62843fd248e625abdd0d9fe477729ff3f9a64fc5c86dd37bb7176d3504107fbed7ce578e3a1db7f60b8cf2abf5fe4862c81f76b6d026e29ca495cfc postgresql.initd
+a6d9cba5c7270484b3a22083b2b37742faefb01b6643040050c92235840c601b2e206ebda32804937b729c6cf42c79a558b921900e52fc420df2a03b5f29e1f7 postgresql.confd
+f5a1cba051e7d846c2d16703514601cb25729ed96b677c9bd0c199d64552120a8b14b238af01917fdb87106681e12dee6fff7447558155ba273e4f96be5e2892 pg-restore.initd
+c14a5684e914abb3b0ee71bbf15eed71a9264deacaa404a6e3af6bfc330d93e7598624d0ed11a94263106cc660f7f54c8ff57e759033cf606a795f69ff6c1c7c pg-restore.confd
+5c9bfd9e295dcf678298bf0aa974347a7c311d6e7c2aa76a6920fcb751d01fd1ab77abbec11f3c672f927ad9deaa88e04e370c0b5cd1b60087554c474b748731 pltcl_create_tables.sql"
diff --git a/harmony/postgresql/conf-unix_socket_directories.patch b/harmony/postgresql/conf-unix_socket_directories.patch
new file mode 100644
index 000000000..24c51e7b9
--- /dev/null
+++ b/harmony/postgresql/conf-unix_socket_directories.patch
@@ -0,0 +1,14 @@
+Creating socket in /tmp is silly, but unfortunately it's default location,
+so many clients expect it. Thus we preconfigure PostgreSQL to create socket
+both in /run/postgresql and /tmp.
+--- a/src/backend/utils/misc/postgresql.conf.sample
++++ b/src/backend/utils/misc/postgresql.conf.sample
+@@ -63,7 +63,7 @@
+ #port = 5432 # (change requires restart)
+ #max_connections = 100 # (change requires restart)
+ #superuser_reserved_connections = 3 # (change requires restart)
+-#unix_socket_directories = '/tmp' # comma-separated list of directories
++unix_socket_directories = '/run/postgresql,/tmp' # comma-separated list of directories
+ # (change requires restart)
+ #unix_socket_group = '' # (change requires restart)
+ #unix_socket_permissions = 0777 # begin with 0 to use octal notation
diff --git a/harmony/postgresql/disable-broken-tests.patch b/harmony/postgresql/disable-broken-tests.patch
new file mode 100644
index 000000000..0bb5b03fa
--- /dev/null
+++ b/harmony/postgresql/disable-broken-tests.patch
@@ -0,0 +1,119 @@
+These tests fail due to some really weird linking issue like:
+
+ ERROR: could not load library "<builddir>/tmp_install/usr/lib/postgresql/libpqwalreceiver.so": Error loading shared library libpq.so.5: No such file or directory (needed by <builddir>/tmp_install/usr/lib/postgresql/libpqwalreceiver.so)
+
+psql dynamically loads libpq and libpqwalreceiver libs using pg_dlopen()
+which is an alias for dlopen() on Linux. The above message comes from
+src/backend/utils/fmgr/dfmgr.c. The part "Error loading ..." is from
+pg_dlerror() which is alias for dlerror().
+
+LD_LIBRARY_PATH is set and passed correctly. However, the error
+disappeared when I've copied libpq.so* to /usr/lib...
+
+Also:
+
+ $ LD_LIBRARY_PATH=$(pwd) ldd postgresql/libpqwalreceiver.so
+ ldd (0x280d565e000)
+ libpq.so.5 => <builddir>/tmp_install/usr/lib/libpq.so.5 (0x280d520d000)
+ libc.musl-x86_64.so.1 => ldd (0x280d565e000)
+ libssl.so.43 => /lib/libssl.so.43 (0x280d4fc2000)
+ libcrypto.so.41 => /lib/libcrypto.so.41 (0x280d4c1c000)
+ libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0x280d49d6000)
+ liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x280d47c9000)
+ libsasl2.so.3 => /usr/lib/libsasl2.so.3 (0x280d45b0000)
+ Error relocating postgresql/libpqwalreceiver.so: appendStringInfoChar: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: MyLatch: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: MemoryContextDelete: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: errstart: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: pg_atoi: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: TupleDescGetAttInMetadata: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: WalReceiverFunctions: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: WaitLatchOrSocket: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: MemoryContextReset: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: pfree: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: errmsg: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: tuplestore_puttuple: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: pchomp: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: appendStringInfoString: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: errfinish: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: pstrdup: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: palloc0: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: errdetail: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: ResetLatch: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: work_mem: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: AllocSetContextCreate: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: CurrentMemoryContext: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: tuplestore_begin_heap: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: BuildTupleFromCStrings: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: errcode: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: MyDatabaseId: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: GetDatabaseEncodingName: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: palloc: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: pg_lsn_in: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: ProcessInterrupts: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: elog_start: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: DirectFunctionCall1Coll: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: elog_finish: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: CreateTemplateTupleDesc: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: InterruptPending: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: TupleDescInitEntry: symbol not found
+ Error relocating postgresql/libpqwalreceiver.so: initStringInfo: symbol not found w
+
+These symbols are really not provided by libpq.
+
+I wasted one day trying to figure out what's going on here, but still
+have no idea. :(
+
+--- a/src/test/regress/parallel_schedule
++++ b/src/test/regress/parallel_schedule
+@@ -84,7 +84,7 @@
+ # ----------
+ # Another group of parallel tests
+ # ----------
+-test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity object_address tablesample groupingsets drop_operator password
++test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity tablesample groupingsets drop_operator password
+
+ # ----------
+ # Another group of parallel tests
+@@ -98,7 +98,7 @@
+ test: select_parallel
+
+ # no relation related tests can be put in this group
+-test: publication subscription
++test: publication
+
+ # ----------
+ # Another group of parallel tests
+--- a/src/test/modules/dummy_seclabel/Makefile
++++ b/src/test/modules/dummy_seclabel/Makefile
+@@ -6,7 +6,7 @@
+ EXTENSION = dummy_seclabel
+ DATA = dummy_seclabel--1.0.sql
+
+-REGRESS = dummy_seclabel
++#REGRESS = dummy_seclabel
+
+ ifdef USE_PGXS
+ PG_CONFIG = pg_config
+--- a/contrib/postgres_fdw/Makefile
++++ b/contrib/postgres_fdw/Makefile
+@@ -10,7 +10,7 @@
+ EXTENSION = postgres_fdw
+ DATA = postgres_fdw--1.0.sql
+
+-REGRESS = postgres_fdw
++#REGRESS = postgres_fdw
+
+ ifdef USE_PGXS
+ PG_CONFIG = pg_config
+--- a/contrib/dblink/Makefile
++++ b/contrib/dblink/Makefile
+@@ -10,7 +10,7 @@
+ dblink--unpackaged--1.0.sql
+ PGFILEDESC = "dblink - connect to other PostgreSQL databases"
+
+-REGRESS = paths dblink
++#REGRESS = paths dblink
+ REGRESS_OPTS = --dlpath=$(top_builddir)/src/test/regress
+ EXTRA_CLEAN = sql/paths.sql expected/paths.out
+
diff --git a/harmony/postgresql/initdb.patch b/harmony/postgresql/initdb.patch
new file mode 100644
index 000000000..59a872a49
--- /dev/null
+++ b/harmony/postgresql/initdb.patch
@@ -0,0 +1,14 @@
+diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
+--- a/src/bin/initdb/initdb.c
++++ b/src/bin/initdb/initdb.c
+@@ -3259,9 +3259,7 @@
+ /* translator: This is a placeholder in a shell command. */
+ appendPQExpBuffer(start_db_cmd, " -l %s start", _("logfile"));
+
+- printf(_("\nSuccess. You can now start the database server using:\n\n"
+- " %s\n\n"),
+- start_db_cmd->data);
++ printf(_("\nSuccess.\n\n"));
+
+ destroyPQExpBuffer(start_db_cmd);
+
diff --git a/harmony/postgresql/perl-rpath.patch b/harmony/postgresql/perl-rpath.patch
new file mode 100644
index 000000000..a2505acf7
--- /dev/null
+++ b/harmony/postgresql/perl-rpath.patch
@@ -0,0 +1,22 @@
+We configure Postgres with --disable-rpath because for the most part we
+want to leave it to ldconfig to determine where libraries are. However,
+for some reason the Perl package puts libperl.so in a nonstandard place
+and doesn't add that place to the ldconfig search path. I think this
+is a Perl packaging bug, myself, but apparently it's not going to change.
+So work around it by adding an rpath spec to plperl.so (only).
+
+Alpine notes:
+This patch is copied from Fedora.
+
+--- a/src/pl/plperl/GNUmakefile
++++ b/src/pl/plperl/GNUmakefile
+@@ -43,6 +43,9 @@
+
+ SHLIB_LINK = $(perl_embed_ldflags)
+
++# Force rpath to be used even though we disable it everywhere else
++SHLIB_LINK += $(rpath)
++
+ REGRESS_OPTS = --dbname=$(PL_TESTDB) --load-extension=plperl --load-extension=plperlu
+ REGRESS = plperl plperl_lc plperl_trigger plperl_shared plperl_elog plperl_util plperl_init plperlu plperl_array
+ # if Perl can support two interpreters in one backend,
diff --git a/harmony/postgresql/pg-restore.confd b/harmony/postgresql/pg-restore.confd
new file mode 100644
index 000000000..84a179f6c
--- /dev/null
+++ b/harmony/postgresql/pg-restore.confd
@@ -0,0 +1,16 @@
+
+# Enable this to dump databases on shutdown and restore on boot
+#
+#PGDUMP="/var/lib/postgresql/backup/databases.pgdump"
+
+# The dump file will be deleted once restored unless KEEP_DUMP is set.
+# This is to avoid accidental restoring of running database. If you know what
+# you are doing and want keep the dump, then enable the KEEP_DUMP option
+# below.
+#
+#KEEP_DUMP=yes
+
+# If you enable KEEP_DUMP above you probably also want the --clean option
+# the the pg_dumpall command.
+#PG_DUMPALL_OPTS="--clean"
+
diff --git a/harmony/postgresql/pg-restore.initd b/harmony/postgresql/pg-restore.initd
new file mode 100644
index 000000000..e9fe65c19
--- /dev/null
+++ b/harmony/postgresql/pg-restore.initd
@@ -0,0 +1,36 @@
+#!/sbin/openrc-run
+
+extra_commands="${opts} dump restore purge"
+
+depend() {
+ need postgresql
+}
+
+restore() {
+ yesno "$PGDUMP" && return 0
+ ebegin "Restoring PostgreSQL $PGDUMP"
+ psql -U ${PG_USER:-postgres} ${PSQL_OPTS} -f "$PGDUMP" >/dev/null 2>/dev/null
+ local res=$?
+ yesno "$KEEP_DUMP" || rm -f "$PGDUMP"
+ eend $res
+ /etc/init.d/postgresql reload
+}
+
+dump() {
+ yesno "$PGDUMP" && return 0
+ mkdir -p "$( dirname "$PGDUMP" )"
+ ebegin "Saving PostgreSQL databases to $PGDUMP"
+ pg_dumpall -U ${PG_USER:-postgres} ${PG_DUMPALL_OPTS} -f "$PGDUMP"
+ eend $?
+}
+
+purge() {
+ yesno "$PGDUMP" && return 0
+ ebegin "Removing temporary $PGDUMP PostgreSQL backup"
+ rm -f "$PGDUMP"
+ eend $?
+}
+
+start() {
+ restore
+}
diff --git a/harmony/postgresql/pltcl_create_tables.sql b/harmony/postgresql/pltcl_create_tables.sql
new file mode 100644
index 000000000..76c7a954a
--- /dev/null
+++ b/harmony/postgresql/pltcl_create_tables.sql
@@ -0,0 +1,13 @@
+-- Create tables needed for PL/Tcl autoloading. This script should be run by
+-- the database administrator only.
+--
+-- Statements in this script are extracted from pltcl_loadmod script.
+--
+-- Author: G.J.R. Timmer
+-- Date: 2017-01-28
+
+create table pltcl_modules (modname name, modseq int2, modsrc text);
+create index pltcl_modules_i on pltcl_modules using btree (modname name_ops);
+
+create table pltcl_modfuncs (funcname name, modname name);
+create index pltcl_modfuncs_i on pltcl_modfuncs using hash (funcname name_ops);
diff --git a/harmony/postgresql/postgresql.confd b/harmony/postgresql/postgresql.confd
new file mode 100644
index 000000000..6a25cc381
--- /dev/null
+++ b/harmony/postgresql/postgresql.confd
@@ -0,0 +1,59 @@
+# Which port and socket to bind PostgreSQL.
+# This may be overriden in postgresql.conf.
+#port="5432"
+
+# How long to wait for server to start in seconds.
+#start_timeout=10
+
+# Number of seconds to wait for clients to disconnect from the server before
+# shutting down. Set to zero to disable this timeout.
+#nice_timeout=60
+
+# Timeout in seconds for rude quit - forecfully disconnect clients from server
+# and shut down. This is performed after nice_timeout exceeded. Terminated
+# client connections have their open transactions rolled back.
+# Set "rude_quit=no" to disable.
+#rude_quit="yes"
+#rude_timeout=30
+
+# Timeout in seconds for force quit - if the server still fails to shutdown,
+# you can force it to quit and a recover-run will execute on the next startup.
+# Set "force_quit=yes" to enable.
+#force_quit="no"
+#force_timeout="2"
+
+# Extra options to run postmaster with, e.g.:
+# -N is the maximal number of client connections
+# -B is the number of shared buffers (has to be at least 2x the value for -N)
+# Please read man postgres(1) for more options. Many of these options can be
+# set directly in the configuration file.
+#pg_opts="-N 512 -B 1024"
+
+# Pass extra environment variables. If you have to export environment variables
+# for the database process, this can be done here.
+# Don't forget to escape quotes.
+#env_vars="PGPASSFILE=\"/path/to/.pgpass\""
+
+# Location of postmaster.log. Default is $data_dir/postmaster.log.
+logfile="/var/log/postgresql/postmaster.log"
+
+# Automatically set up a new database if missing on startup.
+#auto_setup="yes"
+
+
+##############################################################################
+#
+# The following values should NOT be arbitrarily changed!
+#
+# The initscript uses these variables to inform PostgreSQL where to find
+# its data directory and configuration files.
+
+# Where the data directory is located/to be created.
+#data_dir="/var/lib/postgresql/@VERSION@/data"
+
+# Location of configuration files. Default is $data_dir.
+conf_dir="/etc/postgresql"
+
+# Additional options to pass to initdb.
+# See man initdb(1) for available options.
+#initdb_opts="--locale=en_US.UTF-8"
diff --git a/harmony/postgresql/postgresql.initd b/harmony/postgresql/postgresql.initd
new file mode 100644
index 000000000..846229a40
--- /dev/null
+++ b/harmony/postgresql/postgresql.initd
@@ -0,0 +1,220 @@
+#!/sbin/openrc-run
+
+extra_started_commands="reload"
+description_reload="Reload configuration"
+
+extra_stopped_commands="setup"
+description_setup="Initialize a new PostgreSQL cluster"
+
+# Note: Uppercase variables are here for backward compatibility.
+
+: ${user:=${PGUSER:-"postgres"}}
+: ${group:=${PGGROUP:-"postgres"}}
+
+: ${auto_setup:=${AUTO_SETUP:-"yes"}}
+: ${start_timeout:=${START_TIMEOUT:-10}}
+: ${nice_timeout:=${NICE_TIMEOUT:-60}}
+: ${rude_quit:=${RUDE_QUIT:-"yes"}}
+: ${rude_timeout:=${RUDE_TIMEOUT:-30}}
+: ${force_quit:=${FORCE_QUIT:-"no"}}
+: ${force_timeout:=${FORCE_TIMEOUT:-2}}
+
+: ${data_dir:=${PGDATA:-"/var/lib/postgresql/@VERSION@/data"}}
+: ${conf_dir:=$data_dir}
+: ${env_vars:=${PG_EXTRA_ENV:-}}
+: ${initdb_opts:=${PG_INITDB_OPTS:-}}
+: ${logfile:="$data_dir/postmaster.log"}
+: ${pg_opts:=${PGOPTS:-}}
+: ${port:=${PGPORT:-5432}}
+
+command="/usr/bin/postgres"
+
+conffile="$conf_dir/postgresql.conf"
+pidfile="$data_dir/postmaster.pid"
+start_stop_daemon_args="
+ --user $user
+ --group $group
+ --pidfile $pidfile
+ --wait 100"
+
+depend() {
+ use net
+ after firewall
+
+ if [ "$(get_config log_destination)" = "syslog" ]; then
+ use logger
+ fi
+}
+
+start_pre() {
+ check_deprecated_var WAIT_FOR_START start_timeout
+ check_deprecated_var WAIT_FOR_DISCONNECT nice_timeout
+ check_deprecated_var WAIT_FOR_CLEANUP rude_timeout
+ check_deprecated_var WAIT_FOR_QUIT force_timeout
+
+ if [ ! -d "$data_dir/base" ]; then
+ if yesno "$auto_setup"; then
+ setup || return 1
+ else
+ eerror "Database not found at: $data_dir"
+ eerror "Please make sure that 'data_dir' points to the right path."
+ eerror "You can run '/etc/init.d/postgresql setup' to setup a new database cluster."
+ return 1
+ fi
+ fi
+
+ local socket_dirs=$(get_config "unix_socket_directories" "/run/postgresql")
+ local port=$(get_config "port" "$port")
+
+ start_stop_daemon_args="$start_stop_daemon_args --env PGPORT=$port"
+
+ (
+ # Set the proper permission for the socket paths and create them if
+ # then don't exist.
+ set -f; IFS=","
+ for dir in $socket_dirs; do
+ if [ -e "${dir%/}/.s.PGSQL.$port" ]; then
+ eerror "Socket conflict. A server is already listening on:"
+ eerror " ${dir%/}/.s.PGSQL.$port"
+ eerror "Hint: Change 'port' to listen on a different socket."
+ return 1
+ elif [ "${dir%/}" != "/tmp" ]; then
+ checkpath -d -m 1775 -o $user:$group "$dir"
+ fi
+ done
+ )
+}
+
+start() {
+ local retval
+
+ ebegin "Starting PostgreSQL"
+
+ local var; for var in $env_vars; do
+ start_stop_daemon_args="$start_stop_daemon_args --env $var"
+ done
+
+ rm -f "$pidfile"
+ start-stop-daemon --start \
+ $start_stop_daemon_args \
+ --exec /usr/bin/pg_ctl \
+ -- start \
+ --silent \
+ -w --timeout="$start_timeout" \
+ --log="$logfile" \
+ --pgdata="$conf_dir" \
+ -o "--data-directory=$data_dir $pg_opts"
+ retval=$?
+
+ if [ $retval -ne 0 ]; then
+ eerror "Check the log for a possible explanation of the above error:"
+ eerror " $logfile"
+ fi
+ eend $retval
+}
+
+stop() {
+ local retry="SIGTERM/$nice_timeout"
+
+ yesno "$rude_quit" \
+ && retry="$retry/SIGINT/$rude_timeout" \
+ || rude_timeout=0
+
+ yesno "$force_quit" \
+ && retry="$retry/SIGQUIT/$force_timeout" \
+ || force_timeout=0
+
+ local seconds=$(( $nice_timeout + $rude_timeout + $force_timeout ))
+
+ ebegin "Stopping PostgreSQL (this can take up to $seconds seconds)"
+
+ start-stop-daemon --stop \
+ --exec "$command" \
+ --retry "$retry" \
+ --progress \
+ --pidfile "$pidfile"
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading PostgreSQL configuration"
+
+ start-stop-daemon --signal HUP --pidfile "$pidfile"
+ eend $?
+}
+
+setup() {
+ local bkpdir
+
+ ebegin "Creating a new PostgreSQL database cluster"
+
+ if [ -d "$data_dir/base" ]; then
+ eend 1 "$data_dir/base already exists!"; return 1
+ fi
+
+ # If data_dir exists, backup configs.
+ if [ -d "$data_dir" ]; then
+ bkpdir="$(mktemp -d)"
+ find "$data_dir" -type f -name "*.conf" -maxdepth 1 \
+ -exec mv -v {} "$bkpdir"/ \;
+ rm -rf "$data_dir"/*
+ fi
+
+ install -d -m 0700 -o $user -g $group "$data_dir"
+ install -d -m 0750 -o $user -g $group "$conf_dir"
+
+ cd "$data_dir" # to avoid the: could not change directory to "/root"
+ su $user -c "/usr/bin/initdb $initdb_opts --pgdata $data_dir"
+ local retval=$?
+
+ if [ -d "$bkpdir" ]; then
+ # Move backuped configs back.
+ mv -v "$bkpdir"/* "$data_dir"/
+ rm -rf "$bkpdir"
+ fi
+
+ if [ "${data_dir%/}" != "${conf_dir%/}" ]; then
+ # Move configs from data_dir to conf_dir and symlink them to data_dir.
+ local name newname
+ for name in postgresql.conf pg_hba.conf pg_ident.conf; do
+ newname="$name"
+ [ ! -e "$conf_dir"/$name ] || newname="$name.new"
+
+ mv "$data_dir"/$name "$conf_dir"/$newname
+ ln -s "$conf_dir"/$name "$data_dir"/$name
+ done
+ fi
+
+ eend $retval
+}
+
+
+get_config() {
+ local name="$1"
+ local default="${2:-}"
+
+ if [ ! -f "$conffile" ]; then
+ printf '%s\n' "$default"
+ return 1
+ fi
+ sed -En "/^\s*${name}\b/{ # find line starting with the name
+ s/^\s*${name}\s*=?\s*([^#]+).*/\1/; # capture the value
+ s/\s*$//; # trim trailing whitespaces
+ s/^['\"](.*)['\"]$/\1/; # remove delimiting quotes
+ p
+ }" "$conffile" \
+ | grep . || printf '%s\n' "$default"
+}
+
+check_deprecated_var() {
+ local old_name="$1"
+ local new_name="$2"
+
+ if [ -n "$(getval "$old_name")" ]; then
+ ewarn "Variable '$old_name' has been removed, please use '$new_name' instead."
+ fi
+}
+
+getval() {
+ eval "printf '%s\n' \"\$$1\""
+}
diff --git a/harmony/postgresql/postgresql.pre-upgrade b/harmony/postgresql/postgresql.pre-upgrade
new file mode 100644
index 000000000..6116252c1
--- /dev/null
+++ b/harmony/postgresql/postgresql.pre-upgrade
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+new="$1"
+old="$2"
+
+pgver=${new%.*}
+compare=$(apk version -t "$old" $pgver)
+
+# check if we upgrade from earlier than $pgver and if it is running
+if [ "$compare" != "<" ] || ! /etc/init.d/postgresql --quiet status; then
+ exit 0
+fi
+
+if [ -f /etc/conf.d/postgresql ]; then
+ . /etc/conf.d/postgresql
+fi
+
+cat <<EOF
+* You are upgrading to postgres $pgver wich is not compatible with the running
+* See: http://www.postgresql.org/docs/$pgver/static/upgrading.html
+*
+* The corresponding steps for Alpine Linux is:
+*
+* pg_dumpall -U ${PGUSER:-postgres} > dumpfile
+* /etc/init.d/postgresql stop
+* apk add -u postgresql
+* /etc/init.d/postgresql setup
+* /etc/init.d/postgresql start
+* psql -U ${PGUSER:-postgres} -f dumpfile
+*
+EOF
+exit 1
diff --git a/harmony/py-dbus/APKBUILD b/harmony/py-dbus/APKBUILD
new file mode 100644
index 000000000..87da11915
--- /dev/null
+++ b/harmony/py-dbus/APKBUILD
@@ -0,0 +1,44 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=py-dbus
+pkgver=1.2.0
+pkgrel=3
+pkgdesc="Python bindings for DBUS"
+url="http://www.freedesktop.org/wiki/Software/DBusBindings"
+arch="all"
+license="GPL LGPL"
+depends="python3"
+depends_dev="py-dbus"
+makedepends="dbus-glib-dev python3-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://dbus.freedesktop.org/releases/dbus-python/dbus-python-$pkgver.tar.gz"
+
+builddir="$srcdir"/dbus-python-$pkgver
+
+prepare() {
+ cd "$builddir"
+ update_config_sub
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="b09cd2d1a057cc432ce944de3fc06bf7 dbus-python-1.2.0.tar.gz"
+sha256sums="e12c6c8b2bf3a9302f75166952cbe41d6b38c3441bbc6767dbd498942316c6df dbus-python-1.2.0.tar.gz"
+sha512sums="013b23e08fa1ed43f53a756587fefbc9770f7c51e93510e555acbd77230b7200693419bba9a69680d790bbaf123f4a195afa38b3eee1143da950fee0b5130bce dbus-python-1.2.0.tar.gz"
diff --git a/harmony/py-mako/APKBUILD b/harmony/py-mako/APKBUILD
new file mode 100644
index 000000000..2ef83e096
--- /dev/null
+++ b/harmony/py-mako/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
+# Maintainer: Fabian Affolter <fabian@affolter-engineering.ch>
+pkgname=py-mako
+_pkgname=Mako
+pkgver=1.0.7
+pkgrel=0
+pkgdesc="A Python fast templating language"
+url="http://www.makotemplates.org/"
+arch="noarch"
+license="MIT"
+depends=""
+makedepends="python3-dev"
+checkdepends="py-six"
+subpackages="py3-${pkgname#py-}:_py3"
+source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir"/$_pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ python3 setup.py build
+}
+
+package() {
+ mkdir -p "$pkgdir"
+}
+
+check() {
+ cd "$builddir"
+ python3 setup.py test
+}
+
+_py2() {
+ replaces="$pkgname"
+ _py python2
+}
+
+_py3() {
+ _py python3
+}
+
+_py() {
+ local python="$1"
+ pkgdesc="$pkgdesc (for $python)"
+ depends="$depends $python"
+ install_if="$pkgname=$pkgver-r$pkgrel $python"
+
+ cd "$builddir"
+ $python setup.py install --prefix=/usr --root="$subpkgdir"
+}
+
+sha512sums="d67af6788bf8603010361ce8b6d0355b0191657c07f3b5845f9d5e91653c3e349a7b35d5b36aa9c7f291973c83911ce94075e1cad78e6935d0ed4ee9c6e2a571 Mako-1.0.7.tar.gz"
diff --git a/harmony/qca/APKBUILD b/harmony/qca/APKBUILD
new file mode 100644
index 000000000..669389ac7
--- /dev/null
+++ b/harmony/qca/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qca
+pkgver=2.1.3
+pkgrel=5
+pkgdesc="Qt cryptographic architecture"
+url="http://delta.affinix.com/qca/"
+arch="all"
+license="LGPL-2.1+"
+depends=
+depends_dev="qt5-qtbase-dev"
+makedepends="$depends_dev cmake cyrus-sasl-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://download.kde.org/stable/qca/$pkgver/src/qca-${pkgver}.tar.xz"
+
+builddir="$srcdir"/qca-$pkgver
+
+build() {
+ cd "$builddir"
+ cmake -DCMAKE_INSTALL_PREFIX=/usr -DWITH_cyrus-sasl_PLUGIN=yes .
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+sha512sums="0aec277e0695da2e45298f0a9006213829fe4c449a79969e472947db54f45000ba6e22361b782465bdc03f269b7301d318c843f5a83db459a118e58a03f3116a qca-2.1.3.tar.xz"
diff --git a/harmony/redis/APKBUILD b/harmony/redis/APKBUILD
new file mode 100644
index 000000000..3ced31796
--- /dev/null
+++ b/harmony/redis/APKBUILD
@@ -0,0 +1,84 @@
+# Contributor: V.Krishn <vkrishn4@gmail.com>
+# Maintainer:
+pkgname=redis
+pkgver=4.0.2
+pkgrel=2
+pkgdesc="Advanced key-value store"
+url="http://redis.io/"
+arch="all"
+license="BSD"
+depends=""
+makedepends="linux-headers"
+checkdepends="tcl"
+splitpackages="$pkgname-openrc"
+install="redis.pre-install"
+pkgusers="redis"
+pkggroups="redis"
+source="http://download.redis.io/releases/$pkgname-$pkgver.tar.gz
+ posix-runtest.patch
+ redis.initd
+ redis.logrotate
+ redis.confd
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+prepare() {
+ default_prepare
+
+ cd "$builddir"
+ sed -i -e 's|^daemonize .*|daemonize yes|' \
+ -e 's|^dir .*|dir /var/lib/redis/|' \
+ -e 's|^logfile .*|logfile /var/log/redis/redis\.log|' \
+ -e 's|^pidfile .*|pidfile /var/run/redis/redis\.pid|' \
+ -e 's|^loglevel .*|loglevel notice|' \
+ redis.conf
+
+ # disable broken tests
+ # see: https://github.com/antirez/redis/issues/2814
+ # https://github.com/antirez/redis/issues/3810
+
+ sed -i -e '/integration\/aof/d' \
+ -e '/integration\/logging/d' \
+ tests/test_helper.tcl
+}
+
+build() {
+ cd "$builddir"
+ make PREFIX=/usr \
+ INSTALL_BIN="$pkgdir"/usr/bin \
+ MALLOC=libc \
+ all
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ mkdir -p "$pkgdir"/usr/bin
+ install -d -o redis -g redis \
+ "$pkgdir"/var/lib/redis \
+ "$pkgdir"/var/log/redis \
+ "$pkgdir"/var/run/redis
+
+ install -D -m755 "$builddir/COPYING" \
+ "$pkgdir/usr/share/licenses/redis/COPYING"
+ install -D -m755 "$srcdir/redis.initd" "$pkgdir/etc/init.d/redis" \
+ && install -Dm644 "$srcdir/redis.logrotate" \
+ "$pkgdir/etc/logrotate.d/redis" \
+ && install -Dm644 "$srcdir/redis.confd" \
+ "$pkgdir/etc/conf.d/redis"
+ install -D -m644 "$builddir/redis.conf" "$pkgdir/etc/redis.conf"
+
+ make PREFIX=/usr \
+ INSTALL_BIN="$pkgdir/usr/bin" \
+ install
+}
+
+sha512sums="1458909c6fc16cff8ca5e6dddff23b988ee1e447f2d0bccf5941553b22bab6abb851732b3fe53dafb8a69d6c0939c3ce7e0686d51e03be720fb018c038d3b1b4 redis-4.0.2.tar.gz
+856ae98e9e8670801827c3bd793dc14ed2c62c37365f8d04b452d7e1ab97300a0bf18c59b52ea686c2689d53aeed8e29e2c55207d3d4fb1fd8fc7fc820f33157 posix-runtest.patch
+91b663f802aea9a473195940d3bf2ce3ca2af4e5b6e61a2d28ebbfe502ef2c764b574b7e87c49e60345d1a5d6b73d12920924c93b26be110c2ce824023347b6f redis.initd
+6d17d169b40a7e23a0a2894eff0f3e2fe8e4461b36f2a9d45468f0abd84ea1035d679b4c0a34029bce093147f9c7bb697e843c113c17769d38c934d4a78a5848 redis.logrotate
+d87aad6185300c99cc9b6a478c83bf62c450fb2c225592d74cc43a3adb93e19d8d2a42cc279907b385aa73a7b9c77b66828dbfb001009edc16a604abb2087e99 redis.confd"
diff --git a/harmony/redis/posix-runtest.patch b/harmony/redis/posix-runtest.patch
new file mode 100644
index 000000000..84d76ad10
--- /dev/null
+++ b/harmony/redis/posix-runtest.patch
@@ -0,0 +1,33 @@
+--- redis-4.0.2/runtest.old 2017-09-21 09:12:52.000000000 -0500
++++ redis-4.0.2/runtest 2017-12-31 05:50:13.037119127 -0600
+@@ -3,7 +3,7 @@
+ TCLSH=""
+
+ for VERSION in $TCL_VERSIONS; do
+- TCL=`which tclsh$VERSION 2>/dev/null` && TCLSH=$TCL
++ TCL=`command -v tclsh$VERSION 2>/dev/null` && TCLSH=$TCL
+ done
+
+ if [ -z $TCLSH ]
+--- redis-4.0.2/runtest-cluster.old 2017-09-21 09:12:52.000000000 -0500
++++ redis-4.0.2/runtest-cluster 2017-12-31 05:50:20.517111722 -0600
+@@ -3,7 +3,7 @@
+ TCLSH=""
+
+ for VERSION in $TCL_VERSIONS; do
+- TCL=`which tclsh$VERSION 2>/dev/null` && TCLSH=$TCL
++ TCL=`command -v tclsh$VERSION 2>/dev/null` && TCLSH=$TCL
+ done
+
+ if [ -z $TCLSH ]
+--- redis-4.0.2/runtest-sentinel.old 2017-09-21 09:12:52.000000000 -0500
++++ redis-4.0.2/runtest-sentinel 2017-12-31 05:50:26.877105425 -0600
+@@ -3,7 +3,7 @@
+ TCLSH=""
+
+ for VERSION in $TCL_VERSIONS; do
+- TCL=`which tclsh$VERSION 2>/dev/null` && TCLSH=$TCL
++ TCL=`command -v tclsh$VERSION 2>/dev/null` && TCLSH=$TCL
+ done
+
+ if [ -z $TCLSH ]
diff --git a/harmony/redis/redis.confd b/harmony/redis/redis.confd
new file mode 100644
index 000000000..a79f61ccd
--- /dev/null
+++ b/harmony/redis/redis.confd
@@ -0,0 +1,9 @@
+# Redis user.
+REDIS_USER="redis"
+
+# Redis group.
+REDIS_GROUP="redis"
+
+# Redis configuration file.
+REDIS_CONF="/etc/redis.conf"
+
diff --git a/harmony/redis/redis.initd b/harmony/redis/redis.initd
new file mode 100755
index 000000000..ce6aba7e3
--- /dev/null
+++ b/harmony/redis/redis.initd
@@ -0,0 +1,52 @@
+#!/sbin/openrc-run
+
+REDIS_CONF=${REDIS_CONF:-/etc/redis.conf}
+REDIS_USER=${REDIS_USER:-redis}
+REDIS_GROUP=${REDIS_GROUP:-redis}
+
+name="Redis server"
+command=/usr/bin/redis-server
+command_args=${REDIS_CONF}
+
+depend() {
+ use net localmount logger
+ after keepalived firewall
+}
+
+# get global pidfile, logfile, and dir from config file
+get_config() {
+ if [ ! -f "${REDIS_CONF}" ] ; then
+ eerror "You need a ${REDIS_CONF} file to run redis"
+ return 1;
+ fi
+
+ pidfile=$(awk '$1 == "pidfile" { print $2 }' "$REDIS_CONF")
+ logfile=$(awk '$1 == "logfile" { print $2 }' "$REDIS_CONF")
+ dir=$(awk '$1 == "dir" { print $2 }' "$REDIS_CONF")
+ : ${pidfile:=/var/run/redis/redis.pid}
+ : ${logfile:=/var/log/redis/redis.log}
+ : ${dir:=/var/lib/redis}
+}
+
+start() {
+ get_config || return 1
+ checkpath -d -o ${REDIS_USER}:${REDIS_GROUP} ${pidfile%/*} \
+ ${logfile%/*} ${dir}
+
+ ebegin "Starting $name"
+ start-stop-daemon --start \
+ --chdir "${dir}" \
+ --user ${REDIS_USER}:${REDIS_GROUP} \
+ --pidfile "${pidfile}" \
+ --exec "${command}" \
+ -- ${command_args}
+ eend $?
+}
+
+stop() {
+ get_config
+ ebegin "Stopping $name"
+ start-stop-daemon --stop --retry 30 --pidfile "${pidfile}"
+ eend $?
+}
+
diff --git a/harmony/redis/redis.logrotate b/harmony/redis/redis.logrotate
new file mode 100644
index 000000000..c77c9a0e8
--- /dev/null
+++ b/harmony/redis/redis.logrotate
@@ -0,0 +1,4 @@
+/var/log/redis/redis.log {
+ notifempty
+ missingok
+}
diff --git a/harmony/redis/redis.pre-install b/harmony/redis/redis.pre-install
new file mode 100644
index 000000000..f73213126
--- /dev/null
+++ b/harmony/redis/redis.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup -S redis 2>/dev/null
+adduser -S -D -H -h /var/lib/redis -s /bin/false -G redis -g redis redis 2>/dev/null
+
+exit 0
diff --git a/harmony/rsync/APKBUILD b/harmony/rsync/APKBUILD
new file mode 100644
index 000000000..af06ccd38
--- /dev/null
+++ b/harmony/rsync/APKBUILD
@@ -0,0 +1,65 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=rsync
+pkgver=3.1.2
+pkgrel=7
+pkgdesc="A file transfer program to keep remote files in sync"
+url="https://rsync.samba.org/"
+arch="all"
+license="GPL3"
+options="!checkroot"
+makedepends="perl acl-dev attr-dev popt-dev"
+subpackages="$pkgname-doc $pkgname-openrc rrsync"
+source="https://download.samba.org/pub/$pkgname/$pkgname-$pkgver.tar.gz
+ rsyncd.initd
+ rsyncd.confd
+ rsyncd.conf
+ rsyncd.logrotate
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ # Force IPv6 enabled, upstream bug https://bugzilla.samba.org/show_bug.cgi?id=10715
+ CFLAGS="$CFLAGS -DINET6" \
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-acl-support \
+ --enable-xattr-support
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ install -D -m 755 "$srcdir"/rsyncd.initd "$pkgdir"/etc/init.d/rsyncd
+ install -D -m 644 "$srcdir"/rsyncd.conf "$pkgdir"/etc/rsyncd.conf
+ install -D -m 644 "$srcdir"/rsyncd.confd "$pkgdir"/etc/conf.d/rsyncd
+ install -D -m 644 "$srcdir"/rsyncd.logrotate "$pkgdir"/etc/logrotate.d/rsyncd
+
+}
+
+rrsync() {
+ pkgdesc="Restricted rsync, restricts rsync to a subdir declared in .ssh/authorized_keys"
+ depends="rsync perl"
+ arch="noarch"
+
+ cd "$builddir"
+ install -D -m 755 ./support/rrsync "$subpkgdir"/usr/bin/rrsync
+}
+
+sha512sums="4c55fd69f436ead0cb5a0b7c6fdfef9bb28ddb9c63534eb619e756b118d5b08cfc5e696498650932c86e865b37e06633da947e6720ca0c27ed5c034313ae208b rsync-3.1.2.tar.gz
+638d87c9a753b35044f6321ccd09d2c0addaab3c52c40863eb6905905576b5268bec67b496df81225528c9e39fbd92e9225d7b3037ab1fda78508d452c78158f rsyncd.initd
+c7527e289c81bee5e4c14b890817cdb47d14f0d26dd8dcdcbe85c7199cf27c57a0b679bdd1b115bfe00de77b52709cc5d97522a47f63c1bb5104f4a7220c9961 rsyncd.confd
+3db8a2b364fc89132af6143af90513deb6be3a78c8180d47c969e33cb5edde9db88aad27758a6911f93781e3c9846aeadc80fffc761c355d6a28358853156b62 rsyncd.conf
+b8d6c0bb467a5c963317dc55478d2c10874564cd264d943d4a42037e2fce134fe001fabc92af5c6b5775e84dc310b1c8da147afaa61c99e5663c36580d8651a5 rsyncd.logrotate"
diff --git a/harmony/rsync/rsyncd.conf b/harmony/rsync/rsyncd.conf
new file mode 100644
index 000000000..6318016e9
--- /dev/null
+++ b/harmony/rsync/rsyncd.conf
@@ -0,0 +1,7 @@
+# /etc/rsyncd.conf
+# Minimal configuration file for rsync daemon.
+# See rsync(1) and rsyncd.conf(5) man pages for help.
+# Do not set "pid file" here.
+
+use chroot = yes
+read only = yes
diff --git a/harmony/rsync/rsyncd.confd b/harmony/rsync/rsyncd.confd
new file mode 100644
index 000000000..7128f97fd
--- /dev/null
+++ b/harmony/rsync/rsyncd.confd
@@ -0,0 +1,8 @@
+# Config file for /etc/init.d/rsyncd
+
+# Path to configuration file.
+#cfgfile="/etc/rsyncd.conf"
+
+# See man pages for rsync or run `rsync --daemon --help`
+# for valid cmdline options.
+#command_args=""
diff --git a/harmony/rsync/rsyncd.initd b/harmony/rsync/rsyncd.initd
new file mode 100644
index 000000000..eb05b3b59
--- /dev/null
+++ b/harmony/rsync/rsyncd.initd
@@ -0,0 +1,16 @@
+#!/sbin/openrc-run
+
+: ${cfgfile:="/etc/rsyncd.conf"}
+
+command="/usr/bin/rsync"
+command_args="--daemon --no-detach --config=$cfgfile
+ $command_args $RSYNC_OPTS"
+command_background="yes"
+
+pidfile="/run/$RC_SVCNAME.pid"
+required_files="$cfgfile"
+
+depend() {
+ use net
+ after firewall
+}
diff --git a/harmony/rsync/rsyncd.logrotate b/harmony/rsync/rsyncd.logrotate
new file mode 100644
index 000000000..34bcf72d2
--- /dev/null
+++ b/harmony/rsync/rsyncd.logrotate
@@ -0,0 +1,9 @@
+/var/log/rsync.log {
+ compress
+ maxage 365
+ rotate 7
+ size=+1024k
+ notifempty
+ missingok
+ copytruncate
+}
diff --git a/harmony/sed/APKBUILD b/harmony/sed/APKBUILD
new file mode 100644
index 000000000..08fe6a55a
--- /dev/null
+++ b/harmony/sed/APKBUILD
@@ -0,0 +1,49 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=sed
+pkgver=4.4
+pkgrel=1
+subpackages="$pkgname-doc"
+pkgdesc="GNU stream editor"
+url="http://www.gnu.org/software/sed"
+arch="all"
+license="GPL"
+options="!checkroot"
+makedepends="perl"
+install="$pkgname.post-deinstall"
+source="http://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.xz
+ disable-mbrtowc-test.patch
+ localename-test-fix.patch
+ "
+
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --bindir=/bin \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-i18n \
+ --disable-nls
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/usr/lib/charset.alias || true
+ rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true
+}
+
+sha512sums="4e1b0a7403913f1e25047eb2292a0a9b3488b15b4463ce2803e05eaecbc2da19f477a18e6a70c992461c38ced90774415091aa2d8ce85cb74e391610d9eedb70 sed-4.4.tar.xz
+aeb55f85a5c724f0dacbf2f39e0f99ae4c66159115b00aa36d65f234f87e52e660878cb18b772a494349632dfa1b616b9306a4cafe87e91182ea8936c308506a disable-mbrtowc-test.patch
+3fbf7f5fbdef19f1212c4efad560b85e62744eecfe60eceaba1c8d093764f34bff844d31d704afdc064ca3d31bb7e46860a4b91e671b96930554a72953e88edf localename-test-fix.patch"
diff --git a/harmony/sed/disable-mbrtowc-test.patch b/harmony/sed/disable-mbrtowc-test.patch
new file mode 100644
index 000000000..51cdf3c25
--- /dev/null
+++ b/harmony/sed/disable-mbrtowc-test.patch
@@ -0,0 +1,10 @@
+--- sed-4.4/gnulib-tests/test-mbrtowc5.sh.old 2016-12-31 13:54:43.000000000 +0000
++++ sed-4.4/gnulib-tests/test-mbrtowc5.sh 2017-07-30 17:29:50.879924130 +0000
+@@ -1,6 +1,2 @@
+ #!/bin/sh
+-# Test whether the POSIX locale has encoding errors.
+-LC_ALL=C \
+-./test-mbrtowc${EXEEXT} 5 || exit
+-LC_ALL=POSIX \
+-./test-mbrtowc${EXEEXT} 5
++exit 77
diff --git a/harmony/sed/localename-test-fix.patch b/harmony/sed/localename-test-fix.patch
new file mode 100644
index 000000000..8a5d68dde
--- /dev/null
+++ b/harmony/sed/localename-test-fix.patch
@@ -0,0 +1,34 @@
+--- sed-4.4/gnulib-tests/localename.c.old 2016-12-31 13:54:43.000000000 +0000
++++ sed-4.4/gnulib-tests/localename.c 2017-07-30 16:40:47.098541270 +0000
+@@ -40,7 +40,7 @@
+ # if defined __APPLE__ && defined __MACH__
+ # include <xlocale.h>
+ # endif
+-# if __GLIBC__ >= 2 && !defined __UCLIBC__
++# if defined __linux__
+ # include <langinfo.h>
+ # endif
+ # if !defined IN_LIBINTL
+@@ -2692,16 +2692,19 @@
+ locale_t thread_locale = uselocale (NULL);
+ if (thread_locale != LC_GLOBAL_LOCALE)
+ {
+-# if __GLIBC__ >= 2 && !defined __UCLIBC__
++# if defined(_NL_LOCALE_NAME)
++ const char *name = nl_langinfo(_NL_LOCALE_NAME(category));
++# if __GLIBC__ >= 2 && !defined __UCLIBC__
+ /* Work around an incorrect definition of the _NL_LOCALE_NAME macro in
+ glibc < 2.12.
+ See <http://sourceware.org/bugzilla/show_bug.cgi?id=10968>. */
+- const char *name =
+- nl_langinfo (_NL_ITEM ((category), _NL_ITEM_INDEX (-1)));
++ if (name[0] == '\0')
++ name = nl_langinfo (_NL_ITEM ((category), _NL_ITEM_INDEX (-1)));
+ if (name[0] == '\0')
+ /* Fallback code for glibc < 2.4, which did not implement
+ nl_langinfo (_NL_LOCALE_NAME (category)). */
+ name = thread_locale->__names[category];
++# endif
+ return name;
+ # elif defined __FreeBSD__ || (defined __APPLE__ && defined __MACH__)
+ /* FreeBSD, Mac OS X */
diff --git a/harmony/sed/sed.post-deinstall b/harmony/sed/sed.post-deinstall
new file mode 100644
index 000000000..5ec0031a4
--- /dev/null
+++ b/harmony/sed/sed.post-deinstall
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# we cannot rely on the busybox trigger since sed might be used from install
+# scripts
+
+[ -x /bin/busybox ] && exec /bin/busybox --install -s
diff --git a/harmony/snappy/APKBUILD b/harmony/snappy/APKBUILD
new file mode 100644
index 000000000..d8806e2f6
--- /dev/null
+++ b/harmony/snappy/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=snappy
+pkgver=1.1.4
+pkgrel=3
+pkgdesc="Fast compression and decompression library"
+url="http://google.github.io/snappy/"
+arch="all"
+license="BSD"
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc"
+source="https://github.com/google/snappy/releases/download/$pkgver/snappy-$pkgver.tar.gz
+ fix-UnalignedCopy64.patch
+ "
+
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure --prefix=/usr \
+ --disable-static
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4f522f1d541e3f00d82ccaf6dda5c6ede28d4db19c53717003d8057261fe8630516ed6ff2a28615da032e0de9c6200b560ed5fce4f8714df9916d50d6a7c2178 snappy-1.1.4.tar.gz
+a086dbdfe2cb21419b33c2f8a2739224a8e843f2c6a51715100c723b9fbd9aed14bcfa791c20dae785b33ac1d1cf4812ed2c5c5d4058c5b8e56a0e004e9a8c60 fix-UnalignedCopy64.patch"
diff --git a/harmony/snappy/fix-UnalignedCopy64.patch b/harmony/snappy/fix-UnalignedCopy64.patch
new file mode 100644
index 000000000..ea64639a1
--- /dev/null
+++ b/harmony/snappy/fix-UnalignedCopy64.patch
@@ -0,0 +1,13 @@
+diff --git a/snappy.cc b/snappy.cc
+index 4bcea0b..2db94b7 100644
+--- a/snappy.cc
++++ b/snappy.cc
+@@ -89,7 +89,7 @@ size_t MaxCompressedLength(size_t source_len) {
+ namespace {
+
+ void UnalignedCopy64(const void* src, void* dst) {
+- memcpy(dst, src, 8);
++ memmove(dst, src, 8);
+ }
+
+ void UnalignedCopy128(const void* src, void* dst) {
diff --git a/harmony/ssmtp/APKBUILD b/harmony/ssmtp/APKBUILD
new file mode 100644
index 000000000..b7ae28bc7
--- /dev/null
+++ b/harmony/ssmtp/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+
+pkgname=ssmtp
+pkgver=2.64
+pkgrel=11
+pkgdesc="Extremely simple MTA to get mail off the system to a mail hub"
+subpackages="$pkgname-doc"
+arch="all"
+url="https://packages.debian.org/stable/mail/ssmtp"
+license="GPL2"
+depends=
+makedepends="openssl-dev autoconf"
+options="!check"
+provides="/usr/sbin/sendmail"
+source="http://ftp.debian.org/debian/pool/main/s/$pkgname/${pkgname}_${pkgver}.orig.tar.bz2
+ generate_config.patch
+ libcrypto-underlinking.patch
+ inet6-getaddrinfo.patch
+ "
+_builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$_builddir"
+ sed -i -e 's:$(CC) -o:$(CC) @LDFLAGS@ -o:' Makefile.in
+ autoconf
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --sysconfdir=/etc \
+ --enable-ssl \
+ --enable-inet6 \
+ || return 1
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make prefix="$pkgdir"/usr \
+ etcdir="$pkgdir"/etc \
+ mandir="$pkgdir"/usr/share/man \
+ install
+ ln -s ssmtp "$pkgdir"/usr/sbin/sendmail
+}
+
+sha512sums="911752e744420adf58552b9cf3a6e558d8b39103e5ad33a9ed4429b9a3a2091f7674aac11fe9bbd66747a61cdabe6bd638b80efcaadc86b057c12e2e235cca72 ssmtp_2.64.orig.tar.bz2
+a4273d7c5b50984994b35de052c450a872f0014c45c1d3bfe36f2edd4f224281aacea234be61c6e966da2c4d3e033042628b79b2216340001487e6bb3a55b6cd generate_config.patch
+9da89ec5ea66dae8b7a22ffcf196c45005c0403e6505162dba05003feac38eb397f8aff4f140d720f826ea057f92e47302ec3c24bddf5786c10b214ec906e82f libcrypto-underlinking.patch
+92dc128b2f6ce234843e8f1e6ddb72653825652544cd68f693457b3fdc4ee22b0f9861feec0dfd123d012c294c7083dd8d24a9a589a3c2ae5bcdde697d30a290 inet6-getaddrinfo.patch"
diff --git a/harmony/ssmtp/generate_config.patch b/harmony/ssmtp/generate_config.patch
new file mode 100644
index 000000000..23285b193
--- /dev/null
+++ b/harmony/ssmtp/generate_config.patch
@@ -0,0 +1,49 @@
+--- ./generate_config 2004-07-23 05:58:48.000000000 +0000
++++ ./generate_config 2009-01-27 10:09:11.000000000 +0000
+@@ -4,7 +4,7 @@
+ # Figure out the system's mailname
+ #
+
+-syshostname=`hostname --fqdn`
++syshostname="localhost"
+ if test -f /etc/mailname
+ then
+ mailname="`head -1 /etc/mailname`"
+@@ -15,23 +15,7 @@
+ mailname=$syshostname
+ fi
+
+-echo "Please enter the mail name of your system."
+-echo "This is the hostname portion of the address to be shown"
+-echo "on outgoing news and mail messages headers."
+-echo "The default is $syshostname, your system's host name."
+-echo
+-echo -n "Mail name [$syshostname]: "
+-read mailname
+-echo
+-
+-echo -n "Please enter the SMTP port number [25]: "
+-read smtpport
+-if test -z "$smtpport"
+-then
+- mailhub=$mailhub
+-else
+- mailhub="$mailhub:$smtpport"
+-fi
++mailhub="$mailhub:$smtpport"
+
+ #
+ # Generate configuration file
+@@ -56,11 +40,5 @@
+ # Where will the mail seem to come from?
+ #rewriteDomain=`echo -n $mailname`
+ # The full hostname
+-hostname=`hostname --fqdn`
++#hostname="localhost"
+ EOF
+-
+-echo
+-echo
+-echo "Please check the configuration file $1 for correctness."
+-echo
+-echo
diff --git a/harmony/ssmtp/inet6-getaddrinfo.patch b/harmony/ssmtp/inet6-getaddrinfo.patch
new file mode 100644
index 000000000..bbc2d90ba
--- /dev/null
+++ b/harmony/ssmtp/inet6-getaddrinfo.patch
@@ -0,0 +1,12 @@
+diff -up ssmtp.orig/ssmtp.c ssmtp/ssmtp.c
+--- ssmtp.orig/ssmtp.c 2009-11-23 10:55:11.000000000 +0100
++++ ssmtp/ssmtp.c 2015-07-27 17:34:12.498140804 +0200
+@@ -1157,7 +1157,7 @@ int smtp_open(char *host, int port)
+ snprintf(servname, sizeof(servname), "%d", port);
+
+ /* Check we can reach the host */
+- if (getaddrinfo(host, servname, &hints, &ai0)) {
++ if (getaddrinfo(host, servname, &hints, &ai0) != 0) {
+ log_event(LOG_ERR, "Unable to locate %s", host);
+ return(-1);
+ }
diff --git a/harmony/ssmtp/libcrypto-underlinking.patch b/harmony/ssmtp/libcrypto-underlinking.patch
new file mode 100644
index 000000000..4928f271c
--- /dev/null
+++ b/harmony/ssmtp/libcrypto-underlinking.patch
@@ -0,0 +1,11 @@
+--- ./configure.in.orig
++++ ./configure.in
+@@ -52,7 +52,7 @@
+ [ --enable-ssl support for secure connection to mail server])
+ if test x$enableval = xyes ; then
+ AC_DEFINE(HAVE_SSL)
+- LIBS="$LIBS -lssl"
++ LIBS="$LIBS -lssl -lcrypto"
+ fi
+ enableval=""
+
diff --git a/harmony/strace/APKBUILD b/harmony/strace/APKBUILD
new file mode 100644
index 000000000..3dc9c3443
--- /dev/null
+++ b/harmony/strace/APKBUILD
@@ -0,0 +1,64 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=strace
+pkgver=4.19
+pkgrel=0
+pkgdesc="A useful diagnositic, instructional, and debugging tool"
+url="https://strace.io/"
+arch="all"
+license="BSD"
+depends=""
+makedepends="linux-headers autoconf automake"
+subpackages="$pkgname-doc"
+options="!checkroot"
+source="$pkgname-$pkgver.tar.gz::https://github.com/strace/$pkgname/archive/v$pkgver.tar.gz
+ disable-fortify.patch
+ fix-ppc-pt-regs-collision.patch
+ nlattr-fix.patch
+ "
+
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ case "$CLIBC" in
+ musl) export CFLAGS="$CFLAGS -Dsigcontext_struct=sigcontext" ;;
+ esac
+
+ case "$CARCH" in
+ s390x)
+ # __SIGNAL_FRAMESIZE is defined in asm/sigcontext.h
+ # but including it would make conflict with struct sigcontext
+ # since we compile with it in musl.
+ # Temporarily add this until musl upstream has a proper fix
+ # for struct sigcontext.
+ export CFLAGS="$CFLAGS -D__SIGNAL_FRAMESIZE=160"
+ ;;
+ esac
+
+ ./bootstrap
+
+ ac_cv_have_long_long_off_t=yes \
+ ./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 -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="fbf953d64b43785648e2df0eb6beee409c6b6f6c6a4d227b54c02a049031c5ff3a3a6af52a68a2980d89eb06dcafc36be5f8784728e9a28348145cdb4a7764f9 strace-4.19.tar.gz
+273b92ebf0069f19bef7ec26c7860e2af7ef01e782255c70ded1ae5e967f8f6bf031ecba96612c6083bf58f46278ba4ab3ec0fb35b08c8c8d668191f97adee52 disable-fortify.patch
+b70cee89dd49a2b5a69dc2a56c3a11169d3306e1a73981155188b574486965c034aa52b4ac1c6edff5ef55c9d52f27750acb242fac095a8a9f69689b51b3fad1 fix-ppc-pt-regs-collision.patch
+44b1872cf996caa4970fa6c2875a3a2cffe4a38455e328d968bd7855ef9a05cf41190794dc137bc8667576635f5271057cf0e6cde9a6c7aee66afd1dba9bdba0 nlattr-fix.patch"
diff --git a/harmony/strace/disable-fortify.patch b/harmony/strace/disable-fortify.patch
new file mode 100644
index 000000000..26b2978c5
--- /dev/null
+++ b/harmony/strace/disable-fortify.patch
@@ -0,0 +1,39 @@
+Subject: [PATCH] don't use fortify-headers on netlink test sources
+From: A. Wilcox <AWilcox@Wilcox-Tech.com>
+
+We can't use fortify-headers on netlink tests because it tests what happens
+when a buffer overrun occurs.
+
+--- strace-4.18/tests/netlink_protocol.c.old 2017-07-05 07:08:09.000000000 +0000
++++ strace-4.18/tests/netlink_protocol.c 2017-08-17 01:09:45.822502012 +0000
+@@ -28,6 +28,8 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++#define _FORTIFY_SOURCE 0
++
+ #include "tests.h"
+
+ #ifdef HAVE_SYS_XATTR_H
+--- strace-4.18/tests/netlink_sock_diag.c.old 2017-07-05 07:08:09.000000000 +0000
++++ strace-4.18/tests/netlink_sock_diag.c 2017-08-17 01:10:00.935807300 +0000
+@@ -27,6 +27,8 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++#define _FORTIFY_SOURCE 0
++
+ #include "tests.h"
+ #include <stdio.h>
+ #include <string.h>
+--- strace-4.18/tests/nlattr.c.old 2017-07-05 07:08:09.000000000 +0000
++++ strace-4.18/tests/nlattr.c 2017-08-17 01:10:11.862453682 +0000
+@@ -28,6 +28,8 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++#define _FORTIFY_SOURCE 0
++
+ #include "tests.h"
+
+ #include <stdio.h>
diff --git a/harmony/strace/fix-ppc-pt-regs-collision.patch b/harmony/strace/fix-ppc-pt-regs-collision.patch
new file mode 100644
index 000000000..6de0fcdd6
--- /dev/null
+++ b/harmony/strace/fix-ppc-pt-regs-collision.patch
@@ -0,0 +1,19 @@
+--- a/ptrace.h
++++ b/ptrace.h
+@@ -48,7 +48,15 @@
+ # define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
+ #endif
+
+-#include <linux/ptrace.h>
++#if defined(__powerpc__) || defined(__powerpc64__)
++# include <linux/types.h>
++# define __ASSEMBLY__
++# include <linux/ptrace.h>
++# undef __ASSEMBLY__
++#else
++# include <linux/ptrace.h>
++#endif
++
+
+ #ifdef HAVE_STRUCT_IA64_FPREG
+ # undef ia64_fpreg
diff --git a/harmony/strace/nlattr-fix.patch b/harmony/strace/nlattr-fix.patch
new file mode 100644
index 000000000..6d480fabb
--- /dev/null
+++ b/harmony/strace/nlattr-fix.patch
@@ -0,0 +1,21 @@
+--- strace-4.18/tests/nlattr.c.old 2017-07-05 07:08:09.000000000 +0000
++++ strace-4.18/tests/nlattr.c 2017-08-17 00:25:26.734218699 +0000
+@@ -61,7 +61,7 @@
+ };
+ struct msg *msg;
+ struct nlattr *nla;
+- unsigned int msg_len;
++ uint32_t msg_len;
+ long rc;
+
+ /* fetch fail: len < sizeof(struct nlattr) */
+@@ -259,7 +259,7 @@
+ };
+ struct msg *msg;
+ struct nlattr *nla;
+- unsigned int msg_len;
++ uint32_t msg_len;
+ long rc;
+
+ msg_len = NLMSG_SPACE(sizeof(msg->udm)) + sizeof(*nla);
+
diff --git a/harmony/tzdata/0001-posixtz-fix-up-lseek.patch b/harmony/tzdata/0001-posixtz-fix-up-lseek.patch
new file mode 100644
index 000000000..4bf164fec
--- /dev/null
+++ b/harmony/tzdata/0001-posixtz-fix-up-lseek.patch
@@ -0,0 +1,27 @@
+From 5c4cd3cee03428636e8d7cc4ed644389a4d598b3 Mon Sep 17 00:00:00 2001
+From: William Pitcock <nenolod@dereferenced.org>
+Date: Thu, 28 Apr 2011 02:56:42 -0500
+Subject: [PATCH] posixtz: ensure the file offset we pass to lseek is off_t
+
+on 32-bit systems, sizeof(off_t) is 4, on 64-bit sizeof(off_t) is 8
+causing a word masking issue.
+---
+ posixtz.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/posixtz.c b/posixtz.c
+index cddcb3e..972ca31 100644
+--- a/posixtz-0.5/posixtz.c
++++ b/posixtz-0.5/posixtz.c
+@@ -36,7 +36,7 @@ char *posix_tz(const char *filename)
+ if (r != TZ_BUFLEN
+ || strncmp(buf, "TZif", 4) != 0
+ || (unsigned char)buf[4] < 2
+- || lseek(fd, -TZ_BUFLEN, SEEK_END) < 0
++ || lseek(fd, (off_t) -TZ_BUFLEN, SEEK_END) < 0
+ )
+ goto ERROR;
+
+--
+1.7.4.5
+
diff --git a/harmony/tzdata/APKBUILD b/harmony/tzdata/APKBUILD
new file mode 100644
index 000000000..e4ff75efd
--- /dev/null
+++ b/harmony/tzdata/APKBUILD
@@ -0,0 +1,66 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=tzdata
+pkgver=2017c
+_tzcodever=2017c
+_ptzver=0.5
+pkgrel=1
+pkgdesc="Timezone data"
+url="https://www.iana.org/time-zones"
+arch="all"
+license="Public Domain"
+depends=""
+depends_dev=""
+makedepends=""
+checkdepends="sp"
+install=""
+subpackages="$pkgname-doc"
+source="http://www.iana.org/time-zones/repository/releases/tzcode$_tzcodever.tar.gz
+ http://www.iana.org/time-zones/repository/releases/tzdata$pkgver.tar.gz
+ http://dev.alpinelinux.org/archive/posixtz/posixtz-$_ptzver.tar.xz
+ 0001-posixtz-fix-up-lseek.patch"
+
+builddir="$srcdir"
+_timezones="africa antarctica asia australasia europe northamerica \
+ southamerica pacificnew etcetera backward systemv factory"
+
+build() {
+ cd "$builddir"
+ make cc="${CC:-gcc}" CFLAGS="$CFLAGS -DHAVE_STDINT_H=1"
+ TZDIR="/usr/share/zoneinfo"
+
+ cd "$builddir"/posixtz-$_ptzver
+ make posixtz
+}
+
+check() {
+ cd "$builddir"
+ make -j1 check
+}
+
+package() {
+ cd "$builddir"
+
+ ./zic -y ./yearistype -d "$pkgdir"/usr/share/zoneinfo ${_timezones}
+ ./zic -y ./yearistype -d "$pkgdir"/usr/share/zoneinfo/right -L leapseconds ${_timezones}
+ #./zic -y ./yearistype -d "$pkgdir"/usr/share/zoneinfo/posix ${_timezones}
+
+ ./zic -y ./yearistype -d "$pkgdir"/usr/share/zoneinfo -p America/New_York
+ install -m444 -t "$pkgdir"/usr/share/zoneinfo iso3166.tab zone1970.tab zone.tab
+
+ mkdir -p "$pkgdir"/usr/sbin
+ install -m755 zic zdump "$pkgdir"/usr/sbin
+
+ mkdir -p "$pkgdir"/usr/share/man/man8
+ install -m644 zic.8 zdump.8 "$pkgdir"/usr/share/man/man8
+
+ rm -f "$pkgdir"/usr/share/zoneinfo/localtime
+ install -Dm755 "$srcdir"/posixtz-$_ptzver/posixtz \
+ "$pkgdir"/usr/bin/posixtz
+}
+
+sha512sums="0d8c3e07b0de9015a137602450468ceb6358312a50eeda2a860882367107b8ba9ef275880b292570a671b9910afc54e6209e1e642387d246bc9c08c4ff660ffb tzcode2017c.tar.gz
+feb5c544e617b30c73a397e5a1c51f9847d0fddf1dfa0f9ace2e6f686786f09b666937b2048e07075c84593fc584bd5a25d639fce70eca9735267df28621ab4c tzdata2017c.tar.gz
+68dbaab9f4aef166ac2f2d40b49366527b840bebe17a47599fe38345835e4adb8a767910745ece9c384b57af815a871243c3e261a29f41d71f8054df3061b3fd posixtz-0.5.tar.xz
+f54ce213d74c5a8387e1a7c56299bc6eee65a035772288222128abc249a112067b8791b88b45c342b2d4d8d12e9e4f1f2f5c92c5de67f8b6413b1ebf1d7de467 0001-posixtz-fix-up-lseek.patch"
diff --git a/harmony/upower/APKBUILD b/harmony/upower/APKBUILD
new file mode 100644
index 000000000..9c596f3e0
--- /dev/null
+++ b/harmony/upower/APKBUILD
@@ -0,0 +1,40 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=upower
+pkgver=0.99.6
+pkgrel=0
+pkgdesc="Power Management Services"
+url="http://upower.freedesktop.org"
+arch="all"
+license="GPL2+"
+depends=""
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+makedepends="linux-headers gtk+-dev libgudev-dev libusb-dev polkit-dev
+ dbus-glib-dev libxslt gobject-introspection-dev docbook-xsl"
+source="http://upower.freedesktop.org/releases/upower-$pkgver.tar.xz
+ "
+
+builddir="$srcdir"/$pkgname-$pkgver
+build() {
+ cd "$builddir"
+ DATADIRNAME=share ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/upower \
+ --disable-static
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7e7256491ecb5d3f04abf41f05a761b79761c8868a1aedadfc5085c3b9cf15f6099c1494596e6a24b0951511bc7cac074e93ebb2b84abb9fb7a4374483052d3f upower-0.99.6.tar.xz"
diff --git a/harmony/upower/daemon-fix-get_critical_action.patch b/harmony/upower/daemon-fix-get_critical_action.patch
new file mode 100644
index 000000000..6afe9b7a9
--- /dev/null
+++ b/harmony/upower/daemon-fix-get_critical_action.patch
@@ -0,0 +1,28 @@
+From 28cee8e2845b094488c337c4ecfa84ada0b6be60 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue, 23 Feb 2016 09:51:07 +0100
+Subject: daemon: fix get_critical_action()
+
+Fix copy&paste error from e7e9156f that called the wrong _complete_ function
+for up_daemon_get_critical_action().
+
+https://bugs.freedesktop.org/show_bug.cgi?id=94262
+
+diff --git a/src/up-daemon.c b/src/up-daemon.c
+index be14cbe..e95f904 100644
+--- a/src/up-daemon.c
++++ b/src/up-daemon.c
+@@ -435,8 +435,8 @@ up_daemon_get_critical_action (UpExportedDaemon *skeleton,
+ GDBusMethodInvocation *invocation,
+ UpDaemon *daemon)
+ {
+- up_exported_daemon_complete_get_display_device (skeleton, invocation,
+- up_backend_get_critical_action (daemon->priv->backend));
++ up_exported_daemon_complete_get_critical_action (skeleton, invocation,
++ up_backend_get_critical_action (daemon->priv->backend));
+ return TRUE;
+ }
+
+--
+cgit v0.10.2
+
diff --git a/harmony/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch b/harmony/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch
new file mode 100644
index 000000000..47e2f4799
--- /dev/null
+++ b/harmony/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch
@@ -0,0 +1,184 @@
+From 932a6a39e35754be571e1274aec4730fd42dba13 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed, 18 May 2016 09:22:43 +0200
+Subject: lib: Add proper error and cancellable handling to UpClient
+ constructor
+
+A GObject's _init() should never fail or block, but this is currently the case
+as up_client_init() connects to upowerd on D-Bus. Convert this to the GInitable
+interface and provide a new constructor up_client_new_full() which accepts a
+GCancellable and GError, so that clients can do proper error handling
+and reporting.
+
+This changes up_client_new() to return NULL when connecting to upowerd fails.
+This provides a more well-defined behaviour in this case as clients can check
+for this and our methods stop segfaulting as they have checks like
+
+ g_return_val_if_fail (UP_IS_CLIENT (client), ...)
+
+Previously we returned a valid object, but trying to call any method on it
+segfaulted due to the NULL D-Bus proxy, so client code had no chance to check
+whether the UpClient object was really valid.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=95350
+
+diff --git a/libupower-glib/up-client.c b/libupower-glib/up-client.c
+index 5b2218f..adc0b9b 100644
+--- a/libupower-glib/up-client.c
++++ b/libupower-glib/up-client.c
+@@ -39,9 +39,10 @@
+ #include "up-daemon-generated.h"
+ #include "up-device.h"
+
+-static void up_client_class_init (UpClientClass *klass);
+-static void up_client_init (UpClient *client);
+-static void up_client_finalize (GObject *object);
++static void up_client_class_init (UpClientClass *klass);
++static void up_client_initable_iface_init (GInitableIface *iface);
++static void up_client_init (UpClient *client);
++static void up_client_finalize (GObject *object);
+
+ #define UP_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UP_TYPE_CLIENT, UpClientPrivate))
+
+@@ -73,7 +74,8 @@ enum {
+ static guint signals [UP_CLIENT_LAST_SIGNAL] = { 0 };
+ static gpointer up_client_object = NULL;
+
+-G_DEFINE_TYPE (UpClient, up_client, G_TYPE_OBJECT)
++G_DEFINE_TYPE_WITH_CODE (UpClient, up_client, G_TYPE_OBJECT,
++ G_IMPLEMENT_INTERFACE(G_TYPE_INITABLE, up_client_initable_iface_init))
+
+ /**
+ * up_client_get_devices:
+@@ -434,11 +436,10 @@ up_client_class_init (UpClientClass *klass)
+ * up_client_init:
+ * @client: This class instance
+ */
+-static void
+-up_client_init (UpClient *client)
++static gboolean
++up_client_initable_init (GInitable *initable, GCancellable *cancellable, GError **error)
+ {
+- GError *error = NULL;
+-
++ UpClient *client = UP_CLIENT (initable);
+ client->priv = UP_CLIENT_GET_PRIVATE (client);
+
+ /* connect to main interface */
+@@ -446,13 +447,10 @@ up_client_init (UpClient *client)
+ G_DBUS_PROXY_FLAGS_NONE,
+ "org.freedesktop.UPower",
+ "/org/freedesktop/UPower",
+- NULL,
+- &error);
+- if (client->priv->proxy == NULL) {
+- g_warning ("Couldn't connect to proxy: %s", error->message);
+- g_error_free (error);
+- return;
+- }
++ cancellable,
++ error);
++ if (client->priv->proxy == NULL)
++ return FALSE;
+
+ /* all callbacks */
+ g_signal_connect (client->priv->proxy, "device-added",
+@@ -461,6 +459,23 @@ up_client_init (UpClient *client)
+ G_CALLBACK (up_device_removed_cb), client);
+ g_signal_connect (client->priv->proxy, "notify",
+ G_CALLBACK (up_client_notify_cb), client);
++
++ return TRUE;
++}
++
++static void
++up_client_initable_iface_init (GInitableIface *iface)
++{
++ iface->init = up_client_initable_init;
++}
++
++/*
++ * up_client_init:
++ * @client: This class instance
++ */
++static void
++up_client_init (UpClient *client)
++{
+ }
+
+ /*
+@@ -482,23 +497,52 @@ up_client_finalize (GObject *object)
+ }
+
+ /**
+- * up_client_new:
++ * up_client_new_full:
++ * @cancellable: (allow-none): A #GCancellable or %NULL.
++ * @error: Return location for error or %NULL.
+ *
+- * Creates a new #UpClient object.
++ * Creates a new #UpClient object. If connecting to upowerd on D-Bus fails,
++ % this returns %NULL and sets @error.
+ *
+- * Return value: a new UpClient object.
++ * Return value: a new UpClient object, or %NULL on failure.
+ *
+- * Since: 0.9.0
++ * Since: 0.99.5
+ **/
+ UpClient *
+-up_client_new (void)
++up_client_new_full (GCancellable *cancellable, GError **error)
+ {
+ if (up_client_object != NULL) {
+ g_object_ref (up_client_object);
+ } else {
+- up_client_object = g_object_new (UP_TYPE_CLIENT, NULL);
+- g_object_add_weak_pointer (up_client_object, &up_client_object);
++ up_client_object = g_initable_new (UP_TYPE_CLIENT, cancellable, error, NULL);
++ if (up_client_object)
++ g_object_add_weak_pointer (up_client_object, &up_client_object);
+ }
+ return UP_CLIENT (up_client_object);
+ }
+
++/**
++ * up_client_new:
++ *
++ * Creates a new #UpClient object. If connecting to upowerd on D-Bus fails,
++ * this returns %NULL and prints out a warning with the error message.
++ * Consider using up_client_new_full() instead which allows you to handle errors
++ * and cancelling long operations yourself.
++ *
++ * Return value: a new UpClient object, or %NULL on failure.
++ *
++ * Since: 0.9.0
++ **/
++UpClient *
++up_client_new (void)
++{
++ GError *error = NULL;
++ UpClient *client;
++ client = up_client_new_full (NULL, &error);
++ if (client == NULL) {
++ g_warning ("Couldn't connect to proxy: %s", error->message);
++ g_error_free (error);
++ }
++ return client;
++}
++
+diff --git a/libupower-glib/up-client.h b/libupower-glib/up-client.h
+index 79c2d9e..5b9af3c 100644
+--- a/libupower-glib/up-client.h
++++ b/libupower-glib/up-client.h
+@@ -72,6 +72,7 @@ typedef struct
+ /* general */
+ GType up_client_get_type (void);
+ UpClient *up_client_new (void);
++UpClient *up_client_new_full (GCancellable *cancellable, GError **error);
+
+ /* sync versions */
+ UpDevice * up_client_get_display_device (UpClient *client);
+--
+cgit v0.10.2
+
diff --git a/harmony/wayland/APKBUILD b/harmony/wayland/APKBUILD
new file mode 100644
index 000000000..a25cc87a1
--- /dev/null
+++ b/harmony/wayland/APKBUILD
@@ -0,0 +1,59 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org>
+# Maintainer: Valery Kartel <valery.kartel@gmail.com>
+pkgname=wayland
+pkgver=1.14.0
+pkgrel=2
+pkgdesc="A computer display server protocol"
+url="http://wayland.freedesktop.org"
+arch=all
+license="MIT"
+depends="$pkgname-libs-client $pkgname-libs-cursor $pkgname-libs-server"
+depends_dev="libffi-dev expat-dev"
+makedepends="$depends_dev doxygen xmlto graphviz grep libxml2-dev bash"
+subpackages="$pkgname-dev $pkgname-libs-client:_libs
+ $pkgname-libs-cursor:_libs $pkgname-libs-server:_libs"
+source="http://wayland.freedesktop.org/releases/$pkgname-$pkgver.tar.xz"
+
+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 \
+ --disable-documentation \
+ --disable-static
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+dev() {
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/bin "$pkgdir"/usr/share \
+ "$subpkgdir"/usr
+ default_dev
+}
+
+_libs() {
+ local name=${subpkgname#$pkgname-libs-}
+ pkgdesc="$pkgdesc ($name library)"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/*-$name.so.* "$subpkgdir"/usr/lib
+}
+
+sha512sums="bd38b2b8963d4d98d42c270e5d7dbff6323789a173b19b67a18258424fd8adee5021b282c9d7f6dad0bd25aa0160e76aecd8ed803d4eb25d911ef0a81cd713a5 wayland-1.14.0.tar.xz"
diff --git a/harmony/weechat/APKBUILD b/harmony/weechat/APKBUILD
new file mode 100644
index 000000000..2fe4eb629
--- /dev/null
+++ b/harmony/weechat/APKBUILD
@@ -0,0 +1,66 @@
+# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
+pkgname=weechat
+pkgver=1.9.1
+pkgrel=1
+pkgdesc="A fast, light, extensible ncurses-based chat client"
+url="http://www.weechat.org"
+arch="all"
+license="GPL-3.0+"
+options="!check" # Requires itself until 2.0.
+depends_dev="cmake gettext-dev ncurses-dev gnutls-dev libgcrypt-dev curl-dev
+ aspell-dev guile-dev lua5.3-dev perl-dev python3-dev zlib-dev"
+makedepends="$depends_dev"
+checkdepends="cpputest"
+subpackages="$pkgname-dev $pkgname-aspell:_plugin $pkgname-lua:_plugin
+ $pkgname-perl:_plugin $pkgname-python:_plugin
+ $pkgname-guile:_plugin $pkgname-lang"
+source="http://www.weechat.org/files/src/$pkgname-$pkgver.tar.gz
+ fix-python-linking.patch
+ libintl-fix.patch"
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 1.7.1-r0:
+# - CVE-2017-8073
+# 1.9.1-r0:
+# - CVE-2017-14727
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ mkdir -p build
+ cd build
+ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_MAN=ON -DENABLE_TESTS=ON -DENABLE_PYTHON3=ON
+ make
+}
+
+package() {
+ cd "$builddir"/build
+ make DESTDIR="$pkgdir/" install
+}
+
+_plugin() {
+ local _name=${subpkgname#*-}
+ local _dir=usr/lib/weechat/plugins
+ pkgdesc="WeeChat $_name plugin"
+ depends="weechat"
+ if [ "$_name" = python ]; then
+ depends="$depends python3"
+ fi
+
+ mkdir -p "$subpkgdir"/$_dir
+ mv "$pkgdir"/$_dir/${_name}.so "$subpkgdir"/$_dir
+}
+
+check() {
+ cd "$builddir"/build
+ ctest -V
+}
+
+sha512sums="e52bb5239e24477ec38f2ad71cb2274e0ffc4226fc36ec00beeb7cf7e754a8c58d9bbc424cb0900e7c803ed47b0956e8f420eaa4cc9cf407ab6dd4769ec94326 weechat-1.9.1.tar.gz
+23b1e3fa9fcade74738d9013b533a0be01dbadabe8a7d82c97d338cdf3e4efe0943b9671f6ec47ac4838d3ad29ab4fd2ce0e6b3c74b4c7280abfd7b040407678 fix-python-linking.patch
+59841bc343b1d10a542631eb01380789f96cac896380dbb3b159444c4806bd6367952e457b9ffd42fb87c1e19fc77eba78c38fd2178ef202ab9f7f1a543417ca libintl-fix.patch"
diff --git a/harmony/weechat/fix-python-linking.patch b/harmony/weechat/fix-python-linking.patch
new file mode 100644
index 000000000..c94be8026
--- /dev/null
+++ b/harmony/weechat/fix-python-linking.patch
@@ -0,0 +1,11 @@
+--- weechat-1.9/cmake/FindPython.cmake.old 2017-06-25 03:20:52.000000000 -0500
++++ weechat-1.9/cmake/FindPython.cmake 2017-09-24 18:04:48.181662013 -0500
+@@ -67,7 +67,7 @@
+ )
+ if(ENABLE_PYTHON3)
+ find_library(PYTHON_LIBRARY
+- NAMES python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python3 python2.7 python2.6 python2.5 python
++ NAMES python3.6m python3.6 python3.5m python3.5 python3.4m python3.4 python3.3 python3.2 python3.1 python3.0 python3 python2.7 python2.6 python2.5 python
+ HINTS ${PYTHON_POSSIBLE_LIB_PATH}
+ )
+ else()
diff --git a/harmony/weechat/libintl-fix.patch b/harmony/weechat/libintl-fix.patch
new file mode 100644
index 000000000..a67cb37b6
--- /dev/null
+++ b/harmony/weechat/libintl-fix.patch
@@ -0,0 +1,12 @@
+libc gettext is never sufficient on musl
+
+--- weechat-1.9/CMakeLists.txt.old 2017-06-25 03:20:52.000000000 -0500
++++ weechat-1.9/CMakeLists.txt 2017-09-13 02:30:43.577284569 -0500
+@@ -162,6 +162,7 @@
+ find_package(Gettext)
+ if(GETTEXT_FOUND)
+ add_definitions(-DENABLE_NLS)
++ list(APPEND EXTRA_LIBS intl)
+ endif()
+ endif()
+
diff --git a/harmony/wget/APKBUILD b/harmony/wget/APKBUILD
new file mode 100644
index 000000000..5f7093ea5
--- /dev/null
+++ b/harmony/wget/APKBUILD
@@ -0,0 +1,50 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=wget
+pkgver=1.19.2
+pkgrel=1
+pkgdesc="A network utility to retrieve files from the Web"
+url="http://www.gnu.org/software/wget/wget.html"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="openssl-dev perl gettext-dev"
+checkdepends="perl-http-daemon"
+subpackages="$pkgname-doc $pkgname-lang"
+install=""
+source="ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz "
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 1.19.1-r1:
+# - CVE-2017-6508
+# 1.19.2-r0:
+# - CVE-2017-13090
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --with-ssl=openssl
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/usr/lib
+}
+
+sha512sums="a0f8afcc0767a8fd1acd64b1b1b27d177bc938e70cc3709c1b3faa6c1426ec926642cd8e49d292cec0268ee507683539b5152072110106de5a728a03efd8cedd wget-1.19.2.tar.gz"
diff --git a/harmony/wpa_supplicant/APKBUILD b/harmony/wpa_supplicant/APKBUILD
new file mode 100644
index 000000000..7aebbef1f
--- /dev/null
+++ b/harmony/wpa_supplicant/APKBUILD
@@ -0,0 +1,104 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=wpa_supplicant
+pkgver=2.6
+pkgrel=7
+pkgdesc="A utility providing key negotiation for WPA wireless networks"
+url="https://w1.fi/wpa_supplicant/"
+arch="all"
+license="BSD"
+subpackages="$pkgname-doc $pkgname-openrc"
+depends="dbus"
+makedepends="linux-headers openssl-dev dbus-dev libnl3-dev pcsc-lite-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
+ rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch
+ rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch
+ rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch
+ rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch
+ rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch
+ rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch
+
+ wpa_supplicant.initd
+ wpa_supplicant.confd
+ eloop.patch
+
+ config
+ wpa_cli.sh"
+
+# secfixes:
+# 2.6-r7:
+# - CVE-2017-13077
+# - CVE-2017-13078
+# - CVE-2017-13079
+# - CVE-2017-13080
+# - CVE-2017-13081
+# - CVE-2017-13082
+# - CVE-2017-13086
+# - CVE-2017-13087
+# - CVE-2017-13088
+
+builddir="$srcdir"/$pkgname-$pkgver
+prepare() {
+ cd "$builddir"
+ default_prepare
+
+ # Copy our configuration file to the build directory
+ cp "$srcdir"/config "$builddir"/wpa_supplicant/.config
+}
+
+build() {
+ cd "$builddir"/wpa_supplicant
+ make LIBDIR=/lib BINDIR=/sbin
+}
+
+check() {
+ cd "$builddir"/wpa_supplicant
+ make eapol_test
+}
+
+package() {
+ cd "$builddir"/wpa_supplicant
+ make DESTDIR="$pkgdir" LIBDIR=/lib BINDIR=/sbin install
+ install -Dm644 wpa_supplicant.conf \
+ "$pkgdir"/usr/share/doc/wpa_supplicant/examples/wpa_supplicant.conf
+ install -Dm755 "$srcdir"/wpa_cli.sh \
+ "$pkgdir"/etc/wpa_supplicant/wpa_cli.sh
+
+ local man=
+ for man in doc/docbook/*.?; do
+ install -Dm644 "$man" \
+ "$pkgdir"/usr/share/man/man${man##*.}/${man##*/}
+ done
+ install -Dm755 eapol_test "$pkgdir"/sbin/eapol_test
+
+ # dbus
+ cd dbus
+ install -d "$pkgdir"/etc/dbus-1/system.d
+ install -m644 dbus-wpa_supplicant.conf \
+ "$pkgdir"/etc/dbus-1/system.d/wpa_supplicant.conf
+ install -d "$pkgdir"/usr/share/dbus-1/system-services
+ install fi.epitest.hostap.WPASupplicant.service \
+ "$pkgdir"/usr/share/dbus-1/system-services
+ install -d "$pkgdir"/var/run/wpa_supplicant
+ install -Dm755 "$srcdir"/wpa_supplicant.initd \
+ "$pkgdir"/etc/init.d/wpa_supplicant
+ install -Dm644 "$srcdir"/wpa_supplicant.confd \
+ "$pkgdir"/etc/conf.d/wpa_supplicant
+}
+
+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
+a6382d8e84b4829be33c46bf2f4c6f3232c9d924a4547a21dfe023bf5be8ee1c635920295f52be285359efaae95bcc1f12b512659cfd1653b871dd0bea7e5ace rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch
+51ed806f0d5b3f588e26d4db4dcfc6be2cfb12002e26893a6cedd62c7cad0d0de75aed4a666223c4877fc1854b08dce6ddf6f6c4cfd752a5d8d58ad4a968b553 rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch
+8707a123cd78149dfee9f5bd791761ee1eca605ef96580167044c2339c896920cf0e030b184a5afa9e310f5755afb30bef8ebd4522fc52753f3fbd6acead2cdf rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch
+37d050b2e4a3598484912667d8b2705fbe84c5c562267f900d42b0c7b606fb1fed09ddca8b80e2131768baa8f3690aab6ba7a232dee6ff1e66150fdb8816c927 rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch
+111e655cfbb3a86e3792040e0ea375490d31c42c9d43cbe911290d54df5f4db437e4c8ad0e937c51729dcefeb0db0989b8ab55b9523398683abd08ebfec18076 rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch
+fc84edd8b30305cc42053c872554098f3f077292ec980ed6a442f37884087ff2f055738fd55977ed792bef1887dcc8c4626586465d78dd0258edb83dcd50a65a rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch
+11eed22f6e793f40c788d586c715deecae03c421d11761b7b4a376660bce812c54cc6f353c7d4d5da9c455aeffd778baefb9e76d380027a729574a756e54ddcc wpa_supplicant.initd
+29103161ec2b9631fca9e8d9a97fafd60ffac3fe78cf613b834395ddcaf8be1e253c22e060d7d9f9b974b2d7ce794caa932a2125e29f6494b75bce475f7b30e1 wpa_supplicant.confd
+2be055dd1f7da5a3d8e79c2f2c0220ddd31df309452da18f290144d2112d6dbde0fc633bb2ad02c386a39d7785323acaf5f70e5969995a1e8303a094eb5fe232 eloop.patch
+6707991f9a071f2fcb09d164d31d12b1f52b91fbb5574b70b8d6f9727f72bbe42b03dd66d10fcc2126f5b7e49ac785657dec90e88b4bf54a9aa5638582f6e505 config
+44d33cfe419cdb65cc14f2ac05aa9f8a1b9f2f432181e498071e41ef835662db1e4c5142adf4cfab2475e7b606696169936bd159d1d711f803322db93f242361 wpa_cli.sh"
diff --git a/harmony/wpa_supplicant/config b/harmony/wpa_supplicant/config
new file mode 100644
index 000000000..f35daa0d1
--- /dev/null
+++ b/harmony/wpa_supplicant/config
@@ -0,0 +1,550 @@
+# Example wpa_supplicant build time configuration
+#
+# This file lists the configuration options that are used when building the
+# hostapd binary. All lines starting with # are ignored. Configuration option
+# lines must be commented out complete, if they are not to be included, i.e.,
+# just setting VARIABLE=n is not disabling that variable.
+#
+# This file is included in Makefile, so variables like CFLAGS and LIBS can also
+# be modified from here. In most cases, these lines should use += in order not
+# to override previous values of the variables.
+
+
+# Uncomment following two lines and fix the paths if you have installed OpenSSL
+# or GnuTLS in non-default location
+#CFLAGS += -I/usr/local/openssl/include
+#LIBS += -L/usr/local/openssl/lib
+
+# Some Red Hat versions seem to include kerberos header files from OpenSSL, but
+# the kerberos files are not in the default include path. Following line can be
+# used to fix build issues on such systems (krb5.h not found).
+#CFLAGS += -I/usr/include/kerberos
+
+# Driver interface for generic Linux wireless extensions
+# Note: WEXT is deprecated in the current Linux kernel version and no new
+# functionality is added to it. nl80211-based interface is the new
+# replacement for WEXT and its use allows wpa_supplicant to properly control
+# the driver to improve existing functionality like roaming and to support new
+# functionality.
+CONFIG_DRIVER_WEXT=y
+
+# Driver interface for Linux drivers using the nl80211 kernel interface
+CONFIG_DRIVER_NL80211=y
+
+# QCA vendor extensions to nl80211
+#CONFIG_DRIVER_NL80211_QCA=y
+
+# driver_nl80211.c requires libnl. If you are compiling it yourself
+# you may need to point hostapd to your version of libnl.
+#
+#CFLAGS += -I$<path to libnl include files>
+#LIBS += -L$<path to libnl library files>
+
+# Use libnl v2.0 (or 3.0) libraries.
+#CONFIG_LIBNL20=y
+
+# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
+CONFIG_LIBNL32=y
+
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+#LIBS_p += -L/usr/local/lib
+#LIBS_c += -L/usr/local/lib
+
+# Driver interface for Windows NDIS
+#CONFIG_DRIVER_NDIS=y
+#CFLAGS += -I/usr/include/w32api/ddk
+#LIBS += -L/usr/local/lib
+# For native build using mingw
+#CONFIG_NATIVE_WINDOWS=y
+# Additional directories for cross-compilation on Linux host for mingw target
+#CFLAGS += -I/opt/mingw/mingw32/include/ddk
+#LIBS += -L/opt/mingw/mingw32/lib
+#CC=mingw32-gcc
+# By default, driver_ndis uses WinPcap for low-level operations. This can be
+# replaced with the following option which replaces WinPcap calls with NDISUIO.
+# However, this requires that WZC is disabled (net stop wzcsvc) before starting
+# wpa_supplicant.
+# CONFIG_USE_NDISUIO=y
+
+# Driver interface for wired Ethernet drivers
+CONFIG_DRIVER_WIRED=y
+
+# Driver interface for the Broadcom RoboSwitch family
+#CONFIG_DRIVER_ROBOSWITCH=y
+
+# Driver interface for no driver (e.g., WPS ER only)
+#CONFIG_DRIVER_NONE=y
+
+# Solaris libraries
+#LIBS += -lsocket -ldlpi -lnsl
+#LIBS_c += -lsocket
+
+# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
+# included)
+CONFIG_IEEE8021X_EAPOL=y
+
+# EAP-MD5
+CONFIG_EAP_MD5=y
+
+# EAP-MSCHAPv2
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-TLS
+CONFIG_EAP_TLS=y
+
+# EAL-PEAP
+CONFIG_EAP_PEAP=y
+
+# EAP-TTLS
+CONFIG_EAP_TTLS=y
+
+# EAP-FAST
+# Note: If OpenSSL is used as the TLS library, OpenSSL 1.0 or newer is needed
+# for EAP-FAST support. Older OpenSSL releases would need to be patched, e.g.,
+# with openssl-0.9.8x-tls-extensions.patch, to add the needed functions.
+CONFIG_EAP_FAST=y
+
+# EAP-GTC
+CONFIG_EAP_GTC=y
+
+# EAP-OTP
+CONFIG_EAP_OTP=y
+
+# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used)
+CONFIG_EAP_SIM=y
+
+# EAP-PSK (experimental; this is _not_ needed for WPA-PSK)
+CONFIG_EAP_PSK=y
+
+# EAP-pwd (secure authentication using only a password)
+#CONFIG_EAP_PWD=y
+
+# EAP-PAX
+CONFIG_EAP_PAX=y
+
+# LEAP
+CONFIG_EAP_LEAP=y
+
+# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used)
+CONFIG_EAP_AKA=y
+
+# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used).
+# This requires CONFIG_EAP_AKA to be enabled, too.
+CONFIG_EAP_AKA_PRIME=y
+
+# Enable USIM simulator (Milenage) for EAP-AKA
+#CONFIG_USIM_SIMULATOR=y
+
+# EAP-SAKE
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-TNC and related Trusted Network Connect support (experimental)
+#CONFIG_EAP_TNC=y
+
+# Wi-Fi Protected Setup (WPS)
+CONFIG_WPS=y
+# Enable WPS external registrar functionality
+#CONFIG_WPS_ER=y
+# Disable credentials for an open network by default when acting as a WPS
+# registrar.
+#CONFIG_WPS_REG_DISABLE_OPEN=y
+# Enable WPS support with NFC config method
+#CONFIG_WPS_NFC=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# EAP-EKE
+#CONFIG_EAP_EKE=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# Smartcard support (i.e., private key on a smartcard), e.g., with openssl
+# engine.
+CONFIG_SMARTCARD=y
+
+# PC/SC interface for smartcards (USIM, GSM SIM)
+# Enable this if EAP-SIM or EAP-AKA is included
+CONFIG_PCSC=y
+
+# Support HT overrides (disable HT/HT40, mask MCS rates, etc.)
+#CONFIG_HT_OVERRIDES=y
+
+# Support VHT overrides (disable VHT, mask MCS rates, etc.)
+#CONFIG_VHT_OVERRIDES=y
+
+# Development testing
+#CONFIG_EAPOL_TEST=y
+
+# Select control interface backend for external programs, e.g, wpa_cli:
+# unix = UNIX domain sockets (default for Linux/*BSD)
+# udp = UDP sockets using localhost (127.0.0.1)
+# udp6 = UDP IPv6 sockets using localhost (::1)
+# named_pipe = Windows Named Pipe (default for Windows)
+# udp-remote = UDP sockets with remote access (only for tests systems/purpose)
+# udp6-remote = UDP IPv6 sockets with remote access (only for tests purpose)
+# y = use default (backwards compatibility)
+# If this option is commented out, control interface is not included in the
+# build.
+CONFIG_CTRL_IFACE=y
+
+# Include support for GNU Readline and History Libraries in wpa_cli.
+# When building a wpa_cli binary for distribution, please note that these
+# libraries are licensed under GPL and as such, BSD license may not apply for
+# the resulting binary.
+#CONFIG_READLINE=y
+
+# Include internal line edit mode in wpa_cli. This can be used as a replacement
+# for GNU Readline to provide limited command line editing and history support.
+CONFIG_WPA_CLI_EDIT=y
+
+# Remove debugging code that is printing out debug message to stdout.
+# This can be used to reduce the size of the wpa_supplicant considerably
+# if debugging code is not needed. The size reduction can be around 35%
+# (e.g., 90 kB).
+#CONFIG_NO_STDOUT_DEBUG=y
+
+# Remove WPA support, e.g., for wired-only IEEE 802.1X supplicant, to save
+# 35-50 kB in code size.
+#CONFIG_NO_WPA=y
+
+# Remove IEEE 802.11i/WPA-Personal ASCII passphrase support
+# This option can be used to reduce code size by removing support for
+# converting ASCII passphrases into PSK. If this functionality is removed, the
+# PSK can only be configured as the 64-octet hexstring (e.g., from
+# wpa_passphrase). This saves about 0.5 kB in code size.
+#CONFIG_NO_WPA_PASSPHRASE=y
+
+# Disable scan result processing (ap_mode=1) to save code size by about 1 kB.
+# This can be used if ap_scan=1 mode is never enabled.
+#CONFIG_NO_SCAN_PROCESSING=y
+
+# Select configuration backend:
+# file = text file (e.g., wpa_supplicant.conf; note: the configuration file
+# path is given on command line, not here; this option is just used to
+# select the backend that allows configuration files to be used)
+# winreg = Windows registry (see win_example.reg for an example)
+CONFIG_BACKEND=file
+
+# Remove configuration write functionality (i.e., to allow the configuration
+# file to be updated based on runtime configuration changes). The runtime
+# configuration can still be changed, the changes are just not going to be
+# persistent over restarts. This option can be used to reduce code size by
+# about 3.5 kB.
+#CONFIG_NO_CONFIG_WRITE=y
+
+# Remove support for configuration blobs to reduce code size by about 1.5 kB.
+#CONFIG_NO_CONFIG_BLOBS=y
+
+# Select program entry point implementation:
+# main = UNIX/POSIX like main() function (default)
+# main_winsvc = Windows service (read parameters from registry)
+# main_none = Very basic example (development use only)
+#CONFIG_MAIN=main
+
+# Select wrapper for operating system and C library specific functions
+# unix = UNIX/POSIX like systems (default)
+# win32 = Windows systems
+# none = Empty template
+#CONFIG_OS=unix
+
+# Select event loop implementation
+# eloop = select() loop (default)
+# eloop_win = Windows events and WaitForMultipleObject() loop
+#CONFIG_ELOOP=eloop
+
+# Should we use poll instead of select? Select is used by default.
+#CONFIG_ELOOP_POLL=y
+
+# Should we use epoll instead of select? Select is used by default.
+#CONFIG_ELOOP_EPOLL=y
+
+# Should we use kqueue instead of select? Select is used by default.
+#CONFIG_ELOOP_KQUEUE=y
+
+# Select layer 2 packet implementation
+# linux = Linux packet socket (default)
+# pcap = libpcap/libdnet/WinPcap
+# freebsd = FreeBSD libpcap
+# winpcap = WinPcap with receive thread
+# ndis = Windows NDISUIO (note: requires CONFIG_USE_NDISUIO=y)
+# none = Empty template
+#CONFIG_L2_PACKET=linux
+
+# Disable Linux packet socket workaround applicable for station interface
+# in a bridge for EAPOL frames. This should be uncommented only if the kernel
+# is known to not have the regression issue in packet socket behavior with
+# bridge interfaces (commit 'bridge: respect RFC2863 operational state')').
+#CONFIG_NO_LINUX_PACKET_SOCKET_WAR=y
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection), also known as PMF
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Select TLS implementation
+# openssl = OpenSSL (default)
+# gnutls = GnuTLS
+# internal = Internal TLSv1 implementation (experimental)
+# none = Empty template
+CONFIG_TLS=openssl
+
+# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.1)
+# can be enabled to get a stronger construction of messages when block ciphers
+# are used. It should be noted that some existing TLS v1.0 -based
+# implementation may not be compatible with TLS v1.1 message (ClientHello is
+# sent prior to negotiating which version will be used)
+#CONFIG_TLSV11=y
+
+# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.2)
+# can be enabled to enable use of stronger crypto algorithms. It should be
+# noted that some existing TLS v1.0 -based implementation may not be compatible
+# with TLS v1.2 message (ClientHello is sent prior to negotiating which version
+# will be used)
+#CONFIG_TLSV12=y
+
+# If CONFIG_TLS=internal is used, additional library and include paths are
+# needed for LibTomMath. Alternatively, an integrated, minimal version of
+# LibTomMath can be used. See beginning of libtommath.c for details on benefits
+# and drawbacks of this option.
+#CONFIG_INTERNAL_LIBTOMMATH=y
+#ifndef CONFIG_INTERNAL_LIBTOMMATH
+#LTM_PATH=/usr/src/libtommath-0.39
+#CFLAGS += -I$(LTM_PATH)
+#LIBS += -L$(LTM_PATH)
+#LIBS_p += -L$(LTM_PATH)
+#endif
+# At the cost of about 4 kB of additional binary size, the internal LibTomMath
+# can be configured to include faster routines for exptmod, sqr, and div to
+# speed up DH and RSA calculation considerably
+#CONFIG_INTERNAL_LIBTOMMATH_FAST=y
+
+# Include NDIS event processing through WMI into wpa_supplicant/wpasvc.
+# This is only for Windows builds and requires WMI-related header files and
+# WbemUuid.Lib from Platform SDK even when building with MinGW.
+#CONFIG_NDIS_EVENTS_INTEGRATED=y
+#PLATFORMSDKLIB="/opt/Program Files/Microsoft Platform SDK/Lib"
+
+# Add support for old DBus control interface
+# (fi.epitest.hostap.WPASupplicant)
+#CONFIG_CTRL_IFACE_DBUS=y
+
+# Add support for new DBus control interface
+# (fi.w1.hostap.wpa_supplicant1)
+CONFIG_CTRL_IFACE_DBUS_NEW=y
+
+# Add introspection support for new DBus control interface
+CONFIG_CTRL_IFACE_DBUS_INTRO=y
+
+# Add support for loading EAP methods dynamically as shared libraries.
+# When this option is enabled, each EAP method can be either included
+# statically (CONFIG_EAP_<method>=y) or dynamically (CONFIG_EAP_<method>=dyn).
+# Dynamic EAP methods are build as shared objects (eap_*.so) and they need to
+# be loaded in the beginning of the wpa_supplicant configuration file
+# (see load_dynamic_eap parameter in the example file) before being used in
+# the network blocks.
+#
+# Note that some shared parts of EAP methods are included in the main program
+# and in order to be able to use dynamic EAP methods using these parts, the
+# main program must have been build with the EAP method enabled (=y or =dyn).
+# This means that EAP-TLS/PEAP/TTLS/FAST cannot be added as dynamic libraries
+# unless at least one of them was included in the main build to force inclusion
+# of the shared code. Similarly, at least one of EAP-SIM/AKA must be included
+# in the main build to be able to load these methods dynamically.
+#
+# Please also note that using dynamic libraries will increase the total binary
+# size. Thus, it may not be the best option for targets that have limited
+# amount of memory/flash.
+#CONFIG_DYNAMIC_EAP_METHODS=y
+
+# IEEE Std 802.11r-2008 (Fast BSS Transition)
+#CONFIG_IEEE80211R=y
+
+# Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt)
+#CONFIG_DEBUG_FILE=y
+
+# Send debug messages to syslog instead of stdout
+#CONFIG_DEBUG_SYSLOG=y
+# Set syslog facility for debug messages
+#CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
+
+# Add support for sending all debug messages (regardless of debug verbosity)
+# to the Linux kernel tracing facility. This helps debug the entire stack by
+# making it easy to record everything happening from the driver up into the
+# same file, e.g., using trace-cmd.
+#CONFIG_DEBUG_LINUX_TRACING=y
+
+# Add support for writing debug log to Android logcat instead of standard
+# output
+#CONFIG_ANDROID_LOG=y
+
+# Enable privilege separation (see README 'Privilege separation' for details)
+#CONFIG_PRIVSEP=y
+
+# Enable mitigation against certain attacks against TKIP by delaying Michael
+# MIC error reports by a random amount of time between 0 and 60 seconds
+CONFIG_DELAYED_MIC_ERROR_REPORT=y
+
+# Enable tracing code for developer debugging
+# This tracks use of memory allocations and other registrations and reports
+# incorrect use with a backtrace of call (or allocation) location.
+#CONFIG_WPA_TRACE=y
+# For BSD, uncomment these.
+#LIBS += -lexecinfo
+#LIBS_p += -lexecinfo
+#LIBS_c += -lexecinfo
+
+# Use libbfd to get more details for developer debugging
+# This enables use of libbfd to get more detailed symbols for the backtraces
+# generated by CONFIG_WPA_TRACE=y.
+#CONFIG_WPA_TRACE_BFD=y
+# For BSD, uncomment these.
+#LIBS += -lbfd -liberty -lz
+#LIBS_p += -lbfd -liberty -lz
+#LIBS_c += -lbfd -liberty -lz
+
+# wpa_supplicant depends on strong random number generation being available
+# from the operating system. os_get_random() function is used to fetch random
+# data when needed, e.g., for key generation. On Linux and BSD systems, this
+# works by reading /dev/urandom. It should be noted that the OS entropy pool
+# needs to be properly initialized before wpa_supplicant is started. This is
+# important especially on embedded devices that do not have a hardware random
+# number generator and may by default start up with minimal entropy available
+# for random number generation.
+#
+# As a safety net, wpa_supplicant is by default trying to internally collect
+# additional entropy for generating random data to mix in with the data fetched
+# from the OS. This by itself is not considered to be very strong, but it may
+# help in cases where the system pool is not initialized properly. However, it
+# is very strongly recommended that the system pool is initialized with enough
+# entropy either by using hardware assisted random number generator or by
+# storing state over device reboots.
+#
+# wpa_supplicant can be configured to maintain its own entropy store over
+# restarts to enhance random number generation. This is not perfect, but it is
+# much more secure than using the same sequence of random numbers after every
+# reboot. This can be enabled with -e<entropy file> command line option. The
+# specified file needs to be readable and writable by wpa_supplicant.
+#
+# If the os_get_random() is known to provide strong random data (e.g., on
+# Linux/BSD, the board in question is known to have reliable source of random
+# data from /dev/urandom), the internal wpa_supplicant random pool can be
+# disabled. This will save some in binary size and CPU use. However, this
+# should only be considered for builds that are known to be used on devices
+# that meet the requirements described above.
+#CONFIG_NO_RANDOM_POOL=y
+
+# IEEE 802.11n (High Throughput) support (mainly for AP mode)
+#CONFIG_IEEE80211N=y
+
+# IEEE 802.11ac (Very High Throughput) support (mainly for AP mode)
+# (depends on CONFIG_IEEE80211N)
+#CONFIG_IEEE80211AC=y
+
+# Wireless Network Management (IEEE Std 802.11v-2011)
+# Note: This is experimental and not complete implementation.
+#CONFIG_WNM=y
+
+# Interworking (IEEE 802.11u)
+# This can be used to enable functionality to improve interworking with
+# external networks (GAS/ANQP to learn more about the networks and network
+# selection based on available credentials).
+#CONFIG_INTERWORKING=y
+
+# Hotspot 2.0
+#CONFIG_HS20=y
+
+# Enable interface matching in wpa_supplicant
+#CONFIG_MATCH_IFACE=y
+
+# Disable roaming in wpa_supplicant
+#CONFIG_NO_ROAMING=y
+
+# AP mode operations with wpa_supplicant
+# This can be used for controlling AP mode operations with wpa_supplicant. It
+# should be noted that this is mainly aimed at simple cases like
+# WPA2-Personal while more complex configurations like WPA2-Enterprise with an
+# external RADIUS server can be supported with hostapd.
+CONFIG_AP=y
+
+# P2P (Wi-Fi Direct)
+# This can be used to enable P2P support in wpa_supplicant. See README-P2P for
+# more information on P2P operations.
+CONFIG_P2P=y
+
+# Enable TDLS support
+#CONFIG_TDLS=y
+
+# Wi-Fi Direct
+# This can be used to enable Wi-Fi Direct extensions for P2P using an external
+# program to control the additional information exchanges in the messages.
+#CONFIG_WIFI_DISPLAY=y
+
+# Autoscan
+# This can be used to enable automatic scan support in wpa_supplicant.
+# See wpa_supplicant.conf for more information on autoscan usage.
+#
+# Enabling directly a module will enable autoscan support.
+# For exponential module:
+#CONFIG_AUTOSCAN_EXPONENTIAL=y
+# For periodic module:
+#CONFIG_AUTOSCAN_PERIODIC=y
+
+# Password (and passphrase, etc.) backend for external storage
+# These optional mechanisms can be used to add support for storing passwords
+# and other secrets in external (to wpa_supplicant) location. This allows, for
+# example, operating system specific key storage to be used
+#
+# External password backend for testing purposes (developer use)
+#CONFIG_EXT_PASSWORD_TEST=y
+
+# Enable Fast Session Transfer (FST)
+#CONFIG_FST=y
+
+# Enable CLI commands for FST testing
+#CONFIG_FST_TEST=y
+
+# OS X builds. This is only for building eapol_test.
+#CONFIG_OSX=y
+
+# Automatic Channel Selection
+# This will allow wpa_supplicant to pick the channel automatically when channel
+# is set to "0".
+#
+# TODO: Extend parser to be able to parse "channel=acs_survey" as an alternative
+# to "channel=0". This would enable us to eventually add other ACS algorithms in
+# similar way.
+#
+# Automatic selection is currently only done through initialization, later on
+# we hope to do background checks to keep us moving to more ideal channels as
+# time goes by. ACS is currently only supported through the nl80211 driver and
+# your driver must have survey dump capability that is filled by the driver
+# during scanning.
+#
+# TODO: In analogy to hostapd be able to customize the ACS survey algorithm with
+# a newly to create wpa_supplicant.conf variable acs_num_scans.
+#
+# Supported ACS drivers:
+# * ath9k
+# * ath5k
+# * ath10k
+#
+# For more details refer to:
+# http://wireless.kernel.org/en/users/Documentation/acs
+#CONFIG_ACS=y
+
+# Support Multi Band Operation
+#CONFIG_MBO=y
diff --git a/harmony/wpa_supplicant/eloop.patch b/harmony/wpa_supplicant/eloop.patch
new file mode 100644
index 000000000..bab2cee4e
--- /dev/null
+++ b/harmony/wpa_supplicant/eloop.patch
@@ -0,0 +1,16 @@
+$OpenBSD: patch-src_utils_eloop_c,v 1.5 2015/09/29 11:57:54 dcoppa Exp $
+
+don't try to access list members to free them unless already initialised
+
+--- a/src/utils/eloop.c.orig Sun Sep 27 21:02:05 2015
++++ b/src/utils/eloop.c Mon Sep 28 09:35:05 2015
+@@ -1064,6 +1064,9 @@ void eloop_destroy(void)
+ struct eloop_timeout *timeout, *prev;
+ struct os_reltime now;
+
++ if (eloop.timeout.prev == NULL)
++ return;
++
+ os_get_reltime(&now);
+ dl_list_for_each_safe(timeout, prev, &eloop.timeout,
+ struct eloop_timeout, list) {
diff --git a/harmony/wpa_supplicant/libressl.patch b/harmony/wpa_supplicant/libressl.patch
new file mode 100644
index 000000000..56146eab5
--- /dev/null
+++ b/harmony/wpa_supplicant/libressl.patch
@@ -0,0 +1,49 @@
+--- a/src/crypto/crypto_openssl.c.orig
++++ b/src/crypto/crypto_openssl.c
+@@ -611,7 +611,7 @@
+
+ void * dh5_init(struct wpabuf **priv, struct wpabuf **publ)
+ {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ DH *dh;
+ struct wpabuf *pubkey = NULL, *privkey = NULL;
+ size_t publen, privlen;
+@@ -712,7 +712,7 @@
+
+ void * dh5_init_fixed(const struct wpabuf *priv, const struct wpabuf *publ)
+ {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ DH *dh;
+
+ dh = DH_new();
+--- a/src/crypto/tls_openssl.c.orig
++++ b/src/crypto/tls_openssl.c
+@@ -919,7 +919,7 @@
+ }
+ #endif /* OPENSSL_FIPS */
+ #endif /* CONFIG_FIPS */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ SSL_load_error_strings();
+ SSL_library_init();
+ #ifndef OPENSSL_NO_SHA256
+@@ -1043,7 +1043,7 @@
+
+ tls_openssl_ref_count--;
+ if (tls_openssl_ref_count == 0) {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #ifndef OPENSSL_NO_ENGINE
+ ENGINE_cleanup();
+ #endif /* OPENSSL_NO_ENGINE */
+@@ -2334,7 +2334,7 @@
+ return 0;
+
+ #ifdef PKCS12_FUNCS
+-#if OPENSSL_VERSION_NUMBER < 0x10002000L
++#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined(LIBRESSL_VERSION_NUMBER)
+ /*
+ * Clear previously set extra chain certificates, if any, from PKCS#12
+ * processing in tls_parse_pkcs12() to allow OpenSSL to build a new
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch b/harmony/wpa_supplicant/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch
new file mode 100644
index 000000000..727684865
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch
@@ -0,0 +1,174 @@
+From cf4cab804c7afd5c45505528a8d16e46163243a2 Mon Sep 17 00:00:00 2001
+From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+Date: Fri, 14 Jul 2017 15:15:35 +0200
+Subject: [PATCH 1/8] hostapd: Avoid key reinstallation in FT handshake
+
+Do not reinstall TK to the driver during Reassociation Response frame
+processing if the first attempt of setting the TK succeeded. This avoids
+issues related to clearing the TX/RX PN that could result in reusing
+same PN values for transmitted frames (e.g., due to CCM nonce reuse and
+also hitting replay protection on the receiver) and accepting replayed
+frames on RX side.
+
+This issue was introduced by the commit
+0e84c25434e6a1f283c7b4e62e483729085b78d2 ('FT: Fix PTK configuration in
+authenticator') which allowed wpa_ft_install_ptk() to be called multiple
+times with the same PTK. While the second configuration attempt is
+needed with some drivers, it must be done only if the first attempt
+failed.
+
+Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+---
+ src/ap/ieee802_11.c | 16 +++++++++++++---
+ src/ap/wpa_auth.c | 11 +++++++++++
+ src/ap/wpa_auth.h | 3 ++-
+ src/ap/wpa_auth_ft.c | 10 ++++++++++
+ src/ap/wpa_auth_i.h | 1 +
+ 5 files changed, 37 insertions(+), 4 deletions(-)
+
+diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
+index 4e04169..333035f 100644
+--- a/src/ap/ieee802_11.c
++++ b/src/ap/ieee802_11.c
+@@ -1841,6 +1841,7 @@ static int add_associated_sta(struct hostapd_data *hapd,
+ {
+ struct ieee80211_ht_capabilities ht_cap;
+ struct ieee80211_vht_capabilities vht_cap;
++ int set = 1;
+
+ /*
+ * Remove the STA entry to ensure the STA PS state gets cleared and
+@@ -1848,9 +1849,18 @@ static int add_associated_sta(struct hostapd_data *hapd,
+ * FT-over-the-DS, where a station re-associates back to the same AP but
+ * skips the authentication flow, or if working with a driver that
+ * does not support full AP client state.
++ *
++ * Skip this if the STA has already completed FT reassociation and the
++ * TK has been configured since the TX/RX PN must not be reset to 0 for
++ * the same key.
+ */
+- if (!sta->added_unassoc)
++ if (!sta->added_unassoc &&
++ (!(sta->flags & WLAN_STA_AUTHORIZED) ||
++ !wpa_auth_sta_ft_tk_already_set(sta->wpa_sm))) {
+ hostapd_drv_sta_remove(hapd, sta->addr);
++ wpa_auth_sm_event(sta->wpa_sm, WPA_DRV_STA_REMOVED);
++ set = 0;
++ }
+
+ #ifdef CONFIG_IEEE80211N
+ if (sta->flags & WLAN_STA_HT)
+@@ -1873,11 +1883,11 @@ static int add_associated_sta(struct hostapd_data *hapd,
+ sta->flags & WLAN_STA_VHT ? &vht_cap : NULL,
+ sta->flags | WLAN_STA_ASSOC, sta->qosinfo,
+ sta->vht_opmode, sta->p2p_ie ? 1 : 0,
+- sta->added_unassoc)) {
++ set)) {
+ hostapd_logger(hapd, sta->addr,
+ HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_NOTICE,
+ "Could not %s STA to kernel driver",
+- sta->added_unassoc ? "set" : "add");
++ set ? "set" : "add");
+
+ if (sta->added_unassoc) {
+ hostapd_drv_sta_remove(hapd, sta->addr);
+diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
+index 3587086..707971d 100644
+--- a/src/ap/wpa_auth.c
++++ b/src/ap/wpa_auth.c
+@@ -1745,6 +1745,9 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event)
+ #else /* CONFIG_IEEE80211R */
+ break;
+ #endif /* CONFIG_IEEE80211R */
++ case WPA_DRV_STA_REMOVED:
++ sm->tk_already_set = FALSE;
++ return 0;
+ }
+
+ #ifdef CONFIG_IEEE80211R
+@@ -3250,6 +3253,14 @@ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm)
+ }
+
+
++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm)
++{
++ if (!sm || !wpa_key_mgmt_ft(sm->wpa_key_mgmt))
++ return 0;
++ return sm->tk_already_set;
++}
++
++
+ int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
+ struct rsn_pmksa_cache_entry *entry)
+ {
+diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h
+index 0de8d97..97461b0 100644
+--- a/src/ap/wpa_auth.h
++++ b/src/ap/wpa_auth.h
+@@ -267,7 +267,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth,
+ u8 *data, size_t data_len);
+ enum wpa_event {
+ WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH,
+- WPA_REAUTH_EAPOL, WPA_ASSOC_FT
++ WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_DRV_STA_REMOVED
+ };
+ void wpa_remove_ptk(struct wpa_state_machine *sm);
+ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event);
+@@ -280,6 +280,7 @@ int wpa_auth_pairwise_set(struct wpa_state_machine *sm);
+ int wpa_auth_get_pairwise(struct wpa_state_machine *sm);
+ int wpa_auth_sta_key_mgmt(struct wpa_state_machine *sm);
+ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm);
++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm);
+ int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
+ struct rsn_pmksa_cache_entry *entry);
+ struct rsn_pmksa_cache_entry *
+diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c
+index 42242a5..e63b99a 100644
+--- a/src/ap/wpa_auth_ft.c
++++ b/src/ap/wpa_auth_ft.c
+@@ -780,6 +780,14 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
+ return;
+ }
+
++ if (sm->tk_already_set) {
++ /* Must avoid TK reconfiguration to prevent clearing of TX/RX
++ * PN in the driver */
++ wpa_printf(MSG_DEBUG,
++ "FT: Do not re-install same PTK to the driver");
++ return;
++ }
++
+ /* FIX: add STA entry to kernel/driver here? The set_key will fail
+ * most likely without this.. At the moment, STA entry is added only
+ * after association has been completed. This function will be called
+@@ -792,6 +800,7 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
+
+ /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */
+ sm->pairwise_set = TRUE;
++ sm->tk_already_set = TRUE;
+ }
+
+
+@@ -898,6 +907,7 @@ static int wpa_ft_process_auth_req(struct wpa_state_machine *sm,
+
+ sm->pairwise = pairwise;
+ sm->PTK_valid = TRUE;
++ sm->tk_already_set = FALSE;
+ wpa_ft_install_ptk(sm);
+
+ buflen = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
+diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h
+index 72b7eb3..7fd8f05 100644
+--- a/src/ap/wpa_auth_i.h
++++ b/src/ap/wpa_auth_i.h
+@@ -65,6 +65,7 @@ struct wpa_state_machine {
+ struct wpa_ptk PTK;
+ Boolean PTK_valid;
+ Boolean pairwise_set;
++ Boolean tk_already_set;
+ int keycount;
+ Boolean Pair;
+ struct wpa_key_replay_counter {
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch b/harmony/wpa_supplicant/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch
new file mode 100644
index 000000000..1802d664a
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch
@@ -0,0 +1,250 @@
+From 927f891007c402fefd1ff384645b3f07597c3ede Mon Sep 17 00:00:00 2001
+From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+Date: Wed, 12 Jul 2017 16:03:24 +0200
+Subject: [PATCH 2/8] Prevent reinstallation of an already in-use group key
+
+Track the current GTK and IGTK that is in use and when receiving a
+(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do
+not install the given key if it is already in use. This prevents an
+attacker from trying to trick the client into resetting or lowering the
+sequence counter associated to the group key.
+
+Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+---
+ src/common/wpa_common.h | 11 +++++
+ src/rsn_supp/wpa.c | 116 ++++++++++++++++++++++++++++++------------------
+ src/rsn_supp/wpa_i.h | 4 ++
+ 3 files changed, 87 insertions(+), 44 deletions(-)
+
+diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
+index af1d0f0..d200285 100644
+--- a/src/common/wpa_common.h
++++ b/src/common/wpa_common.h
+@@ -217,6 +217,17 @@ struct wpa_ptk {
+ size_t tk_len;
+ };
+
++struct wpa_gtk {
++ u8 gtk[WPA_GTK_MAX_LEN];
++ size_t gtk_len;
++};
++
++#ifdef CONFIG_IEEE80211W
++struct wpa_igtk {
++ u8 igtk[WPA_IGTK_MAX_LEN];
++ size_t igtk_len;
++};
++#endif /* CONFIG_IEEE80211W */
+
+ /* WPA IE version 1
+ * 00-50-f2:1 (OUI:OUI type)
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 3c47879..95bd7be 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -714,6 +714,15 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ const u8 *_gtk = gd->gtk;
+ u8 gtk_buf[32];
+
++ /* Detect possible key reinstallation */
++ if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
++ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
++ gd->keyidx, gd->tx, gd->gtk_len);
++ return 0;
++ }
++
+ wpa_hexdump_key(MSG_DEBUG, "WPA: Group Key", gd->gtk, gd->gtk_len);
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Installing GTK to the driver (keyidx=%d tx=%d len=%d)",
+@@ -748,6 +757,9 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ }
+ os_memset(gtk_buf, 0, sizeof(gtk_buf));
+
++ sm->gtk.gtk_len = gd->gtk_len;
++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
++
+ return 0;
+ }
+
+@@ -854,6 +866,48 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
+ }
+
+
++#ifdef CONFIG_IEEE80211W
++static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
++ const struct wpa_igtk_kde *igtk)
++{
++ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
++ u16 keyidx = WPA_GET_LE16(igtk->keyid);
++
++ /* Detect possible key reinstallation */
++ if (sm->igtk.igtk_len == len &&
++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
++ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
++ keyidx);
++ return 0;
++ }
++
++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
++ "WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x",
++ keyidx, MAC2STR(igtk->pn));
++ wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len);
++ if (keyidx > 4095) {
++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
++ "WPA: Invalid IGTK KeyID %d", keyidx);
++ return -1;
++ }
++ if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
++ broadcast_ether_addr,
++ keyidx, 0, igtk->pn, sizeof(igtk->pn),
++ igtk->igtk, len) < 0) {
++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
++ "WPA: Failed to configure IGTK to the driver");
++ return -1;
++ }
++
++ sm->igtk.igtk_len = len;
++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
++
++ return 0;
++}
++#endif /* CONFIG_IEEE80211W */
++
++
+ static int ieee80211w_set_keys(struct wpa_sm *sm,
+ struct wpa_eapol_ie_parse *ie)
+ {
+@@ -864,30 +918,14 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
+ if (ie->igtk) {
+ size_t len;
+ const struct wpa_igtk_kde *igtk;
+- u16 keyidx;
++
+ len = wpa_cipher_key_len(sm->mgmt_group_cipher);
+ if (ie->igtk_len != WPA_IGTK_KDE_PREFIX_LEN + len)
+ return -1;
++
+ igtk = (const struct wpa_igtk_kde *) ie->igtk;
+- keyidx = WPA_GET_LE16(igtk->keyid);
+- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, "WPA: IGTK keyid %d "
+- "pn %02x%02x%02x%02x%02x%02x",
+- keyidx, MAC2STR(igtk->pn));
+- wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK",
+- igtk->igtk, len);
+- if (keyidx > 4095) {
+- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
+- "WPA: Invalid IGTK KeyID %d", keyidx);
+- return -1;
+- }
+- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
+- broadcast_ether_addr,
+- keyidx, 0, igtk->pn, sizeof(igtk->pn),
+- igtk->igtk, len) < 0) {
+- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
+- "WPA: Failed to configure IGTK to the driver");
++ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
+ return -1;
+- }
+ }
+
+ return 0;
+@@ -2307,7 +2345,7 @@ void wpa_sm_deinit(struct wpa_sm *sm)
+ */
+ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ {
+- int clear_ptk = 1;
++ int clear_keys = 1;
+
+ if (sm == NULL)
+ return;
+@@ -2333,11 +2371,11 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ /* Prepare for the next transition */
+ wpa_ft_prepare_auth_request(sm, NULL);
+
+- clear_ptk = 0;
++ clear_keys = 0;
+ }
+ #endif /* CONFIG_IEEE80211R */
+
+- if (clear_ptk) {
++ if (clear_keys) {
+ /*
+ * IEEE 802.11, 8.4.10: Delete PTK SA on (re)association if
+ * this is not part of a Fast BSS Transition.
+@@ -2347,6 +2385,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ os_memset(&sm->ptk, 0, sizeof(sm->ptk));
+ sm->tptk_set = 0;
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
++ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++#ifdef CONFIG_IEEE80211W
++ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++#endif /* CONFIG_IEEE80211W */
+ }
+
+ #ifdef CONFIG_TDLS
+@@ -2877,6 +2919,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
+ os_memset(sm->pmk, 0, sizeof(sm->pmk));
+ os_memset(&sm->ptk, 0, sizeof(sm->ptk));
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
++ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++#ifdef CONFIG_IEEE80211W
++ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++#endif /* CONFIG_IEEE80211W */
+ #ifdef CONFIG_IEEE80211R
+ os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
+ os_memset(sm->pmk_r0, 0, sizeof(sm->pmk_r0));
+@@ -2949,29 +2995,11 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
+ os_memset(&gd, 0, sizeof(gd));
+ #ifdef CONFIG_IEEE80211W
+ } else if (subelem_id == WNM_SLEEP_SUBELEM_IGTK) {
+- struct wpa_igtk_kde igd;
+- u16 keyidx;
+-
+- os_memset(&igd, 0, sizeof(igd));
+- keylen = wpa_cipher_key_len(sm->mgmt_group_cipher);
+- os_memcpy(igd.keyid, buf + 2, 2);
+- os_memcpy(igd.pn, buf + 4, 6);
+-
+- keyidx = WPA_GET_LE16(igd.keyid);
+- os_memcpy(igd.igtk, buf + 10, keylen);
+-
+- wpa_hexdump_key(MSG_DEBUG, "Install IGTK (WNM SLEEP)",
+- igd.igtk, keylen);
+- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
+- broadcast_ether_addr,
+- keyidx, 0, igd.pn, sizeof(igd.pn),
+- igd.igtk, keylen) < 0) {
+- wpa_printf(MSG_DEBUG, "Failed to install the IGTK in "
+- "WNM mode");
+- os_memset(&igd, 0, sizeof(igd));
++ const struct wpa_igtk_kde *igtk;
++
++ igtk = (const struct wpa_igtk_kde *) (buf + 2);
++ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
+ return -1;
+- }
+- os_memset(&igd, 0, sizeof(igd));
+ #endif /* CONFIG_IEEE80211W */
+ } else {
+ wpa_printf(MSG_DEBUG, "Unknown element id");
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index f653ba6..afc9e37 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -31,6 +31,10 @@ struct wpa_sm {
+ u8 rx_replay_counter[WPA_REPLAY_COUNTER_LEN];
+ int rx_replay_counter_set;
+ u8 request_counter[WPA_REPLAY_COUNTER_LEN];
++ struct wpa_gtk gtk;
++#ifdef CONFIG_IEEE80211W
++ struct wpa_igtk igtk;
++#endif /* CONFIG_IEEE80211W */
+
+ struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
+
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch b/harmony/wpa_supplicant/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch
new file mode 100644
index 000000000..e2937b851
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch
@@ -0,0 +1,184 @@
+From 8280294e74846ea342389a0cd17215050fa5afe8 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sun, 1 Oct 2017 12:12:24 +0300
+Subject: [PATCH 3/8] Extend protection of GTK/IGTK reinstallation of WNM-Sleep
+ Mode cases
+
+This extends the protection to track last configured GTK/IGTK value
+separately from EAPOL-Key frames and WNM-Sleep Mode frames to cover a
+corner case where these two different mechanisms may get used when the
+GTK/IGTK has changed and tracking a single value is not sufficient to
+detect a possible key reconfiguration.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/rsn_supp/wpa.c | 53 +++++++++++++++++++++++++++++++++++++---------------
+ src/rsn_supp/wpa_i.h | 2 ++
+ 2 files changed, 40 insertions(+), 15 deletions(-)
+
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 95bd7be..7a2c68d 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -709,14 +709,17 @@ struct wpa_gtk_data {
+
+ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ const struct wpa_gtk_data *gd,
+- const u8 *key_rsc)
++ const u8 *key_rsc, int wnm_sleep)
+ {
+ const u8 *_gtk = gd->gtk;
+ u8 gtk_buf[32];
+
+ /* Detect possible key reinstallation */
+- if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
+- os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
++ if ((sm->gtk.gtk_len == (size_t) gd->gtk_len &&
++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) ||
++ (sm->gtk_wnm_sleep.gtk_len == (size_t) gd->gtk_len &&
++ os_memcmp(sm->gtk_wnm_sleep.gtk, gd->gtk,
++ sm->gtk_wnm_sleep.gtk_len) == 0)) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
+ gd->keyidx, gd->tx, gd->gtk_len);
+@@ -757,8 +760,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ }
+ os_memset(gtk_buf, 0, sizeof(gtk_buf));
+
+- sm->gtk.gtk_len = gd->gtk_len;
+- os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
++ if (wnm_sleep) {
++ sm->gtk_wnm_sleep.gtk_len = gd->gtk_len;
++ os_memcpy(sm->gtk_wnm_sleep.gtk, gd->gtk,
++ sm->gtk_wnm_sleep.gtk_len);
++ } else {
++ sm->gtk.gtk_len = gd->gtk_len;
++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
++ }
+
+ return 0;
+ }
+@@ -852,7 +861,7 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
+ (wpa_supplicant_check_group_cipher(sm, sm->group_cipher,
+ gtk_len, gtk_len,
+ &gd.key_rsc_len, &gd.alg) ||
+- wpa_supplicant_install_gtk(sm, &gd, key_rsc))) {
++ wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0))) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "RSN: Failed to install GTK");
+ os_memset(&gd, 0, sizeof(gd));
+@@ -868,14 +877,18 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
+
+ #ifdef CONFIG_IEEE80211W
+ static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
+- const struct wpa_igtk_kde *igtk)
++ const struct wpa_igtk_kde *igtk,
++ int wnm_sleep)
+ {
+ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
+ u16 keyidx = WPA_GET_LE16(igtk->keyid);
+
+ /* Detect possible key reinstallation */
+- if (sm->igtk.igtk_len == len &&
+- os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
++ if ((sm->igtk.igtk_len == len &&
++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) ||
++ (sm->igtk_wnm_sleep.igtk_len == len &&
++ os_memcmp(sm->igtk_wnm_sleep.igtk, igtk->igtk,
++ sm->igtk_wnm_sleep.igtk_len) == 0)) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
+ keyidx);
+@@ -900,8 +913,14 @@ static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
+ return -1;
+ }
+
+- sm->igtk.igtk_len = len;
+- os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
++ if (wnm_sleep) {
++ sm->igtk_wnm_sleep.igtk_len = len;
++ os_memcpy(sm->igtk_wnm_sleep.igtk, igtk->igtk,
++ sm->igtk_wnm_sleep.igtk_len);
++ } else {
++ sm->igtk.igtk_len = len;
++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
++ }
+
+ return 0;
+ }
+@@ -924,7 +943,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
+ return -1;
+
+ igtk = (const struct wpa_igtk_kde *) ie->igtk;
+- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
++ if (wpa_supplicant_install_igtk(sm, igtk, 0) < 0)
+ return -1;
+ }
+
+@@ -1574,7 +1593,7 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm,
+ if (wpa_supplicant_rsc_relaxation(sm, key->key_rsc))
+ key_rsc = null_rsc;
+
+- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc) ||
++ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0) ||
+ wpa_supplicant_send_2_of_2(sm, key, ver, key_info) < 0)
+ goto failed;
+ os_memset(&gd, 0, sizeof(gd));
+@@ -2386,8 +2405,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ sm->tptk_set = 0;
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
+ #ifdef CONFIG_IEEE80211W
+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
+ #endif /* CONFIG_IEEE80211W */
+ }
+
+@@ -2920,8 +2941,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
+ os_memset(&sm->ptk, 0, sizeof(sm->ptk));
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
+ #ifdef CONFIG_IEEE80211W
+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
+ #endif /* CONFIG_IEEE80211W */
+ #ifdef CONFIG_IEEE80211R
+ os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
+@@ -2986,7 +3009,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
+
+ wpa_hexdump_key(MSG_DEBUG, "Install GTK (WNM SLEEP)",
+ gd.gtk, gd.gtk_len);
+- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc)) {
++ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 1)) {
+ os_memset(&gd, 0, sizeof(gd));
+ wpa_printf(MSG_DEBUG, "Failed to install the GTK in "
+ "WNM mode");
+@@ -2998,7 +3021,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
+ const struct wpa_igtk_kde *igtk;
+
+ igtk = (const struct wpa_igtk_kde *) (buf + 2);
+- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
++ if (wpa_supplicant_install_igtk(sm, igtk, 1) < 0)
+ return -1;
+ #endif /* CONFIG_IEEE80211W */
+ } else {
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index afc9e37..9a54631 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -32,8 +32,10 @@ struct wpa_sm {
+ int rx_replay_counter_set;
+ u8 request_counter[WPA_REPLAY_COUNTER_LEN];
+ struct wpa_gtk gtk;
++ struct wpa_gtk gtk_wnm_sleep;
+ #ifdef CONFIG_IEEE80211W
+ struct wpa_igtk igtk;
++ struct wpa_igtk igtk_wnm_sleep;
+ #endif /* CONFIG_IEEE80211W */
+
+ struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch b/harmony/wpa_supplicant/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch
new file mode 100644
index 000000000..22ee21794
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch
@@ -0,0 +1,79 @@
+From 8f82bc94e8697a9d47fa8774dfdaaede1084912c Mon Sep 17 00:00:00 2001
+From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+Date: Fri, 29 Sep 2017 04:22:51 +0200
+Subject: [PATCH 4/8] Prevent installation of an all-zero TK
+
+Properly track whether a PTK has already been installed to the driver
+and the TK part cleared from memory. This prevents an attacker from
+trying to trick the client into installing an all-zero TK.
+
+This fixes the earlier fix in commit
+ad00d64e7d8827b3cebd665a0ceb08adabf15e1e ('Fix TK configuration to the
+driver in EAPOL-Key 3/4 retry case') which did not take into account
+possibility of an extra message 1/4 showing up between retries of
+message 3/4.
+
+Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+---
+ src/common/wpa_common.h | 1 +
+ src/rsn_supp/wpa.c | 5 ++---
+ src/rsn_supp/wpa_i.h | 1 -
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
+index d200285..1021ccb 100644
+--- a/src/common/wpa_common.h
++++ b/src/common/wpa_common.h
+@@ -215,6 +215,7 @@ struct wpa_ptk {
+ size_t kck_len;
+ size_t kek_len;
+ size_t tk_len;
++ int installed; /* 1 if key has already been installed to driver */
+ };
+
+ struct wpa_gtk {
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 7a2c68d..0550a41 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -510,7 +510,6 @@ static void wpa_supplicant_process_1_of_4(struct wpa_sm *sm,
+ os_memset(buf, 0, sizeof(buf));
+ }
+ sm->tptk_set = 1;
+- sm->tk_to_set = 1;
+
+ kde = sm->assoc_wpa_ie;
+ kde_len = sm->assoc_wpa_ie_len;
+@@ -615,7 +614,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
+ enum wpa_alg alg;
+ const u8 *key_rsc;
+
+- if (!sm->tk_to_set) {
++ if (sm->ptk.installed) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Do not re-install same PTK to the driver");
+ return 0;
+@@ -659,7 +658,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
+
+ /* TK is not needed anymore in supplicant */
+ os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN);
+- sm->tk_to_set = 0;
++ sm->ptk.installed = 1;
+
+ if (sm->wpa_ptk_rekey) {
+ eloop_cancel_timeout(wpa_sm_rekey_ptk, sm, NULL);
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index 9a54631..41f371f 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -24,7 +24,6 @@ struct wpa_sm {
+ struct wpa_ptk ptk, tptk;
+ int ptk_set, tptk_set;
+ unsigned int msg_3_of_4_ok:1;
+- unsigned int tk_to_set:1;
+ u8 snonce[WPA_NONCE_LEN];
+ u8 anonce[WPA_NONCE_LEN]; /* ANonce from the last 1/4 msg */
+ int renew_snonce;
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch b/harmony/wpa_supplicant/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch
new file mode 100644
index 000000000..c19c4c710
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch
@@ -0,0 +1,64 @@
+From 12fac09b437a1dc8a0f253e265934a8aaf4d2f8b Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sun, 1 Oct 2017 12:32:57 +0300
+Subject: [PATCH 5/8] Fix PTK rekeying to generate a new ANonce
+
+The Authenticator state machine path for PTK rekeying ended up bypassing
+the AUTHENTICATION2 state where a new ANonce is generated when going
+directly to the PTKSTART state since there is no need to try to
+determine the PMK again in such a case. This is far from ideal since the
+new PTK would depend on a new nonce only from the supplicant.
+
+Fix this by generating a new ANonce when moving to the PTKSTART state
+for the purpose of starting new 4-way handshake to rekey PTK.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/ap/wpa_auth.c | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
+index 707971d..bf10cc1 100644
+--- a/src/ap/wpa_auth.c
++++ b/src/ap/wpa_auth.c
+@@ -1901,6 +1901,21 @@ SM_STATE(WPA_PTK, AUTHENTICATION2)
+ }
+
+
++static int wpa_auth_sm_ptk_update(struct wpa_state_machine *sm)
++{
++ if (random_get_bytes(sm->ANonce, WPA_NONCE_LEN)) {
++ wpa_printf(MSG_ERROR,
++ "WPA: Failed to get random data for ANonce");
++ sm->Disconnect = TRUE;
++ return -1;
++ }
++ wpa_hexdump(MSG_DEBUG, "WPA: Assign new ANonce", sm->ANonce,
++ WPA_NONCE_LEN);
++ sm->TimeoutCtr = 0;
++ return 0;
++}
++
++
+ SM_STATE(WPA_PTK, INITPMK)
+ {
+ u8 msk[2 * PMK_LEN];
+@@ -2458,9 +2473,12 @@ SM_STEP(WPA_PTK)
+ SM_ENTER(WPA_PTK, AUTHENTICATION);
+ else if (sm->ReAuthenticationRequest)
+ SM_ENTER(WPA_PTK, AUTHENTICATION2);
+- else if (sm->PTKRequest)
+- SM_ENTER(WPA_PTK, PTKSTART);
+- else switch (sm->wpa_ptk_state) {
++ else if (sm->PTKRequest) {
++ if (wpa_auth_sm_ptk_update(sm) < 0)
++ SM_ENTER(WPA_PTK, DISCONNECTED);
++ else
++ SM_ENTER(WPA_PTK, PTKSTART);
++ } else switch (sm->wpa_ptk_state) {
+ case WPA_PTK_INITIALIZE:
+ break;
+ case WPA_PTK_DISCONNECT:
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch b/harmony/wpa_supplicant/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch
new file mode 100644
index 000000000..e1bd5a572
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch
@@ -0,0 +1,132 @@
+From 6c4bed4f47d1960ec04981a9d50e5076aea5223d Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 22 Sep 2017 11:03:15 +0300
+Subject: [PATCH 6/8] TDLS: Reject TPK-TK reconfiguration
+
+Do not try to reconfigure the same TPK-TK to the driver after it has
+been successfully configured. This is an explicit check to avoid issues
+related to resetting the TX/RX packet number. There was already a check
+for this for TPK M2 (retries of that message are ignored completely), so
+that behavior does not get modified.
+
+For TPK M3, the TPK-TK could have been reconfigured, but that was
+followed by immediate teardown of the link due to an issue in updating
+the STA entry. Furthermore, for TDLS with any real security (i.e.,
+ignoring open/WEP), the TPK message exchange is protected on the AP path
+and simple replay attacks are not feasible.
+
+As an additional corner case, make sure the local nonce gets updated if
+the peer uses a very unlikely "random nonce" of all zeros.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/rsn_supp/tdls.c | 38 ++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 36 insertions(+), 2 deletions(-)
+
+diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c
+index e424168..9eb9738 100644
+--- a/src/rsn_supp/tdls.c
++++ b/src/rsn_supp/tdls.c
+@@ -112,6 +112,7 @@ struct wpa_tdls_peer {
+ u8 tk[16]; /* TPK-TK; assuming only CCMP will be used */
+ } tpk;
+ int tpk_set;
++ int tk_set; /* TPK-TK configured to the driver */
+ int tpk_success;
+ int tpk_in_progress;
+
+@@ -192,6 +193,20 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
+ u8 rsc[6];
+ enum wpa_alg alg;
+
++ if (peer->tk_set) {
++ /*
++ * This same TPK-TK has already been configured to the driver
++ * and this new configuration attempt (likely due to an
++ * unexpected retransmitted frame) would result in clearing
++ * the TX/RX sequence number which can break security, so must
++ * not allow that to happen.
++ */
++ wpa_printf(MSG_INFO, "TDLS: TPK-TK for the peer " MACSTR
++ " has already been configured to the driver - do not reconfigure",
++ MAC2STR(peer->addr));
++ return -1;
++ }
++
+ os_memset(rsc, 0, 6);
+
+ switch (peer->cipher) {
+@@ -209,12 +224,15 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
+ return -1;
+ }
+
++ wpa_printf(MSG_DEBUG, "TDLS: Configure pairwise key for peer " MACSTR,
++ MAC2STR(peer->addr));
+ if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1,
+ rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) {
+ wpa_printf(MSG_WARNING, "TDLS: Failed to set TPK to the "
+ "driver");
+ return -1;
+ }
++ peer->tk_set = 1;
+ return 0;
+ }
+
+@@ -696,7 +714,7 @@ static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
+ peer->cipher = 0;
+ peer->qos_info = 0;
+ peer->wmm_capable = 0;
+- peer->tpk_set = peer->tpk_success = 0;
++ peer->tk_set = peer->tpk_set = peer->tpk_success = 0;
+ peer->chan_switch_enabled = 0;
+ os_memset(&peer->tpk, 0, sizeof(peer->tpk));
+ os_memset(peer->inonce, 0, WPA_NONCE_LEN);
+@@ -1159,6 +1177,7 @@ skip_rsnie:
+ wpa_tdls_peer_free(sm, peer);
+ return -1;
+ }
++ peer->tk_set = 0; /* A new nonce results in a new TK */
+ wpa_hexdump(MSG_DEBUG, "TDLS: Initiator Nonce for TPK handshake",
+ peer->inonce, WPA_NONCE_LEN);
+ os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
+@@ -1751,6 +1770,19 @@ static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer,
+ }
+
+
++static int tdls_nonce_set(const u8 *nonce)
++{
++ int i;
++
++ for (i = 0; i < WPA_NONCE_LEN; i++) {
++ if (nonce[i])
++ return 1;
++ }
++
++ return 0;
++}
++
++
+ static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr,
+ const u8 *buf, size_t len)
+ {
+@@ -2004,7 +2036,8 @@ skip_rsn:
+ peer->rsnie_i_len = kde.rsn_ie_len;
+ peer->cipher = cipher;
+
+- if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) {
++ if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0 ||
++ !tdls_nonce_set(peer->inonce)) {
+ /*
+ * There is no point in updating the RNonce for every obtained
+ * TPK M1 frame (e.g., retransmission due to timeout) with the
+@@ -2020,6 +2053,7 @@ skip_rsn:
+ "TDLS: Failed to get random data for responder nonce");
+ goto error;
+ }
++ peer->tk_set = 0; /* A new nonce results in a new TK */
+ }
+
+ #if 0
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch b/harmony/wpa_supplicant/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch
new file mode 100644
index 000000000..85ea1d62b
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch
@@ -0,0 +1,43 @@
+From 53c5eb58e95004f86e65ee9fbfccbc291b139057 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 22 Sep 2017 11:25:02 +0300
+Subject: [PATCH 7/8] WNM: Ignore WNM-Sleep Mode Response without pending
+ request
+
+Commit 03ed0a52393710be6bdae657d1b36efa146520e5 ('WNM: Ignore WNM-Sleep
+Mode Response if WNM-Sleep Mode has not been used') started ignoring the
+response when no WNM-Sleep Mode Request had been used during the
+association. This can be made tighter by clearing the used flag when
+successfully processing a response. This adds an additional layer of
+protection against unexpected retransmissions of the response frame.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ wpa_supplicant/wnm_sta.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/wpa_supplicant/wnm_sta.c b/wpa_supplicant/wnm_sta.c
+index 1b3409c..67a07ff 100644
+--- a/wpa_supplicant/wnm_sta.c
++++ b/wpa_supplicant/wnm_sta.c
+@@ -260,7 +260,7 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s,
+
+ if (!wpa_s->wnmsleep_used) {
+ wpa_printf(MSG_DEBUG,
+- "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode has not been used in this association");
++ "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode operation has not been requested");
+ return;
+ }
+
+@@ -299,6 +299,8 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s,
+ return;
+ }
+
++ wpa_s->wnmsleep_used = 0;
++
+ if (wnmsleep_ie->status == WNM_STATUS_SLEEP_ACCEPT ||
+ wnmsleep_ie->status == WNM_STATUS_SLEEP_EXIT_ACCEPT_GTK_UPDATE) {
+ wpa_printf(MSG_DEBUG, "Successfully recv WNM-Sleep Response "
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch b/harmony/wpa_supplicant/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch
new file mode 100644
index 000000000..b9678f681
--- /dev/null
+++ b/harmony/wpa_supplicant/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch
@@ -0,0 +1,82 @@
+From b372ab0b7daea719749194dc554b26e6367603f2 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 22 Sep 2017 12:06:37 +0300
+Subject: [PATCH 8/8] FT: Do not allow multiple Reassociation Response frames
+
+The driver is expected to not report a second association event without
+the station having explicitly request a new association. As such, this
+case should not be reachable. However, since reconfiguring the same
+pairwise or group keys to the driver could result in nonce reuse issues,
+be extra careful here and do an additional state check to avoid this
+even if the local driver ends up somehow accepting an unexpected
+Reassociation Response frame.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/rsn_supp/wpa.c | 3 +++
+ src/rsn_supp/wpa_ft.c | 8 ++++++++
+ src/rsn_supp/wpa_i.h | 1 +
+ 3 files changed, 12 insertions(+)
+
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 0550a41..2a53c6f 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -2440,6 +2440,9 @@ void wpa_sm_notify_disassoc(struct wpa_sm *sm)
+ #ifdef CONFIG_TDLS
+ wpa_tdls_disassoc(sm);
+ #endif /* CONFIG_TDLS */
++#ifdef CONFIG_IEEE80211R
++ sm->ft_reassoc_completed = 0;
++#endif /* CONFIG_IEEE80211R */
+
+ /* Keys are not needed in the WPA state machine anymore */
+ wpa_sm_drop_sa(sm);
+diff --git a/src/rsn_supp/wpa_ft.c b/src/rsn_supp/wpa_ft.c
+index 205793e..d45bb45 100644
+--- a/src/rsn_supp/wpa_ft.c
++++ b/src/rsn_supp/wpa_ft.c
+@@ -153,6 +153,7 @@ static u8 * wpa_ft_gen_req_ies(struct wpa_sm *sm, size_t *len,
+ u16 capab;
+
+ sm->ft_completed = 0;
++ sm->ft_reassoc_completed = 0;
+
+ buf_len = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
+ 2 + sm->r0kh_id_len + ric_ies_len + 100;
+@@ -681,6 +682,11 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
+ return -1;
+ }
+
++ if (sm->ft_reassoc_completed) {
++ wpa_printf(MSG_DEBUG, "FT: Reassociation has already been completed for this FT protocol instance - ignore unexpected retransmission");
++ return 0;
++ }
++
+ if (wpa_ft_parse_ies(ies, ies_len, &parse) < 0) {
+ wpa_printf(MSG_DEBUG, "FT: Failed to parse IEs");
+ return -1;
+@@ -781,6 +787,8 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
+ return -1;
+ }
+
++ sm->ft_reassoc_completed = 1;
++
+ if (wpa_ft_process_gtk_subelem(sm, parse.gtk, parse.gtk_len) < 0)
+ return -1;
+
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index 41f371f..56f88dc 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -128,6 +128,7 @@ struct wpa_sm {
+ size_t r0kh_id_len;
+ u8 r1kh_id[FT_R1KH_ID_LEN];
+ int ft_completed;
++ int ft_reassoc_completed;
+ int over_the_ds_in_progress;
+ u8 target_ap[ETH_ALEN]; /* over-the-DS target AP */
+ int set_ptk_after_assoc;
+--
+2.7.4
+
diff --git a/harmony/wpa_supplicant/wpa_cli.sh b/harmony/wpa_supplicant/wpa_cli.sh
new file mode 100644
index 000000000..0a5a6cc03
--- /dev/null
+++ b/harmony/wpa_supplicant/wpa_cli.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Distributed under the terms of the BSD License.
+# Copyright (c) 2015 Sören Tempel <soeren+alpine@soeren-tempel.net>
+
+IFUP="/sbin/ifup"
+IFDOWN="/sbin/ifdown"
+
+if [ -z "${1}" -o -z "${2}" ]; then
+ logger -t wpa_cli "this script should be called from wpa_cli(8)"
+ exit 1
+elif ! [ -x "${IFUP}" -a -x "${IFDOWN}" ]; then
+ logger -t wpa_cli "${IFUP} or ${IFDOWN} doesn't exist"
+ exit 1
+fi
+
+IFNAME="${1}"
+ACTION="${2}"
+
+EXEC=""
+case "${ACTION}" in
+ CONNECTED)
+ EXEC="${IFUP}"
+ ;;
+ DISCONNECTED)
+ EXEC="${IFDOWN}"
+ ;;
+ *)
+ logger -t wpa_cli "unknown action '${ACTION}'"
+ exit 1
+esac
+
+logger -t wpa_cli "interface ${IFNAME} ${ACTION}"
+${EXEC} "${IFNAME}" || logger -t wpa_cli "executing '${EXEC}' failed"
diff --git a/harmony/wpa_supplicant/wpa_supplicant.confd b/harmony/wpa_supplicant/wpa_supplicant.confd
new file mode 100644
index 000000000..104b9dc5d
--- /dev/null
+++ b/harmony/wpa_supplicant/wpa_supplicant.confd
@@ -0,0 +1,6 @@
+# conf.d file for wpa_supplicant
+#
+# Please check man 8 wpa_supplicant for more information about the options
+# wpa_supplicant accepts.
+#
+wpa_supplicant_args=""
diff --git a/harmony/wpa_supplicant/wpa_supplicant.initd b/harmony/wpa_supplicant/wpa_supplicant.initd
new file mode 100644
index 000000000..988b267d1
--- /dev/null
+++ b/harmony/wpa_supplicant/wpa_supplicant.initd
@@ -0,0 +1,53 @@
+#!/sbin/openrc-run
+# Copyright (c) 2009 Roy Marples <roy@marples.name>
+# All rights reserved. Released under the 2-clause BSD license.
+
+command=/sbin/wpa_supplicant
+: ${wpa_supplicant_conf:=/etc/wpa_supplicant/wpa_supplicant.conf}
+wpa_supplicant_if=${wpa_supplicant_if:+-i}$wpa_supplicant_if
+command_args="$wpa_supplicant_args -B -c$wpa_supplicant_conf $wpa_supplicant_if"
+name="WPA Supplicant Daemon"
+
+depend()
+{
+ need localmount
+ use logger dbus
+ after bootmisc modules
+ before dns dhcpcd net
+ keyword -shutdown
+}
+
+find_wireless()
+{
+ local iface=
+ for iface in /sys/class/net/*; do
+ if [ -e "$iface"/wireless -o -e "$iface"/phy80211 ]; then
+ echo "${iface##*/}"
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+append_wireless()
+{
+ local iface= i=
+
+ iface=$(find_wireless)
+ if [ -n "$iface" ]; then
+ for i in $iface; do
+ command_args="$command_args -i$i"
+ done
+ else
+ eerror "Could not find a wireless interface"
+ fi
+}
+
+start_pre()
+{
+ case " $command_args" in
+ *" -i"*) ;;
+ *) append_wireless;;
+ esac
+}
diff --git a/harmony/zsh/APKBUILD b/harmony/zsh/APKBUILD
new file mode 100644
index 000000000..0405b6ba6
--- /dev/null
+++ b/harmony/zsh/APKBUILD
@@ -0,0 +1,159 @@
+# Contributor: <kalonji@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=zsh
+pkgver=5.4.1
+pkgrel=1
+pkgdesc="A very advanced and programmable command interpreter (shell)"
+url="http://www.zsh.org/"
+arch="all"
+license="BSD"
+depends="debianutils" # add-shell
+makedepends="ncurses-dev pcre-dev"
+install="zsh.post-install zsh.post-upgrade zsh.pre-deinstall"
+source="http://www.zsh.org/pub/$pkgname-$pkgver.tar.gz
+ zprofile
+ "
+subpackages="$pkgname-doc $pkgname-calendar::noarch $pkgname-vcs::noarch $pkgname-zftp"
+builddir="$srcdir/$pkgname-$pkgver"
+
+_libdir="usr/lib/zsh/$pkgver"
+_sharedir="usr/share/zsh/$pkgver"
+
+# Move some bigger completion files to subpackages.
+_comps="android-tools:Unix/_adb
+ bzr:Unix/_bzr
+ cvs:Unix/_cvs
+ gcc:Unix/_gcc
+ git:Unix/_git
+ graphicsmagick:Unix/_graphicsmagick
+ imagemagick:Unix/_imagemagick
+ lynx:Unix/_lynx
+ mercurial:Unix/_hg
+ rsync:Unix/_rsync
+ subversion:Unix/_subversion
+ tmux:Unix/_tmux
+ zfs:Unix/_zfs*:Unix/_zpool"
+for _i in $_comps; do
+ subpackages="$subpackages ${_i%%:*}-zsh-completion:_completion:noarch"
+done
+
+prepare() {
+ cd "$builddir"
+
+ default_prepare
+ update_config_sub
+
+ # Remove completions for other systems.
+ cd Completion
+ rm -Rf AIX BSD Cygwin Darwin Debian Mandriva Redhat Solaris openSUSE
+
+ # Remove completions for programs that are not available on Alpine
+ # (just to decrease size of the package).
+ cd Unix/Command
+ rm -f _aap _apm _baz _bittorrent _bpython _ccal _cdcd _chkconfig _clay \
+ _cowsay _cplay _cssh _darcs _devtodo _dict _dsh _elfdump _elm \
+ _enscript _finger _flasher _fsh _gnupod _guilt _initctl _lzop \
+ _mencal _module _monotone _moosic _mysqldiff _nkf \
+ _pack _perforce _pine _pkgadd _pkginfo _pkgrm _prcs \
+ _quilt _raggle _rcs _rlogin _rubber _sablotron _sisu _socket \
+ _stgit _surfraw _tardy _tin _tla _topgit _totd _twidge \
+ _unace _unison _units _uzbl _vcsh _vux _wiggle _xmms2 _yodl
+ cd ../../Linux/Command
+ rm -f _mondo _tpb _tpconfig _uml _vserver
+ cd ../../X/Command
+ rm -f _acroread _dcop _gnome-gv _gqview _gv _kfmclient _matlab \
+ _nautilus _netscape _qiv _vnc _xfig _xloadimage \
+ _xournal _xv _xwit
+}
+
+build() {
+ cd "$builddir"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --bindir=/bin \
+ --enable-etcdir=/etc/zsh \
+ --enable-multibyte \
+ --enable-pcre \
+ --enable-function-subdirs \
+ --enable-zsh-secure-free \
+ --sysconfdir=/etc \
+ --with-tcsetpgrp \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+check() {
+ cd "$builddir"
+ # Does not work with musl due to UTF-8
+ rm "$builddir"/Test/A03quoting.ztst
+ # Does not work with musl due to locale
+ rm "$builddir"/Test/B03print.ztst
+ # Not guaranteed to work portably (requires atime)
+ rm "$builddir"/Test/C02cond.ztst
+ # PPC?
+ rm "$builddir"/Test/V09datetime.ztst
+ make test
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install
+ install -Dm644 "$srcdir"/zprofile "$pkgdir"/etc/zsh/zprofile
+}
+
+doc() {
+ default_doc
+ _submv $_sharedir/help
+}
+
+calendar() {
+ pkgdesc="Calendar Function System for ZSH"
+ depends="$pkgname"
+
+ _submv $_sharedir/functions/Calendar
+}
+
+vcs() {
+ pkgdesc="Version Control Information module for ZSH (vcs_info)"
+ depends="$pkgname"
+
+ _submv $_sharedir/functions/VCS_Info
+}
+
+zftp() {
+ pkgdesc="Zftp Function System for ZSH"
+ depends="$pkgname"
+
+ _submv $_libdir/zsh/zftp.so
+ _submv $_sharedir/functions/Zftp
+}
+
+_completion() {
+ local name="${subpkgname%-zsh-completion}"
+ pkgdesc="Zsh completions for $name"
+ depends="$pkgname"
+ install_if="$pkgname=$pkgver-r$pkgrel $name"
+
+ local files="$(printf '%s\n' $_comps \
+ | sed -En "s|^$name:(.*)|\1|p" | tr : ' ')"
+ test -n "$files" || { echo "$name not found in \$_comps" >&2; return 1; }
+
+ local f; for f in $files; do
+ _submv $_sharedir/functions/Completion/$f
+ done
+}
+
+_submv() {
+ local path="$1"
+ mkdir -p "$subpkgdir"/${path%/*}
+ mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
+}
+
+sha512sums="56a83b4a8ae97656ea5a2d7b15632a288017552c276ab306be6d242d83dc92ce871330aeb46a0e8a49e9f30f6bff32e3c956c62e5ce19361e52ea0799cb59f50 zsh-5.4.1.tar.gz
+cbc184f0c4af1441eaad2a3f7255be9941c64bd5a05977aea5ca3a0a11a3d121c34c1fc9e633465eda087cd196dabf9591082117bbb42cc6e6bc9352ec2c207d zprofile"
diff --git a/harmony/zsh/zprofile b/harmony/zsh/zprofile
new file mode 100644
index 000000000..363d4863c
--- /dev/null
+++ b/harmony/zsh/zprofile
@@ -0,0 +1,24 @@
+#
+# /etc/zprofile and ~/.zprofile are run for login shells
+#
+
+export PATH="$PATH:$HOME/bin"
+
+_src_etc_profile()
+{
+ # Make /etc/profile happier, and have possible ~/.zshenv options like
+ # NOMATCH ignored.
+ #
+ emulate -L ksh
+
+ # source profile
+ if [ -f /etc/profile ]; then
+ source /etc/profile
+ fi
+}
+_src_etc_profile
+
+export EDITOR=${EDITOR:-/usr/bin/vim}
+export PAGER=${PAGER:-/usr/bin/less}
+
+unset -f _src_etc_profile
diff --git a/harmony/zsh/zsh.post-install b/harmony/zsh/zsh.post-install
new file mode 100644
index 000000000..d2399cd8b
--- /dev/null
+++ b/harmony/zsh/zsh.post-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+add-shell '/bin/zsh'
+exit 0
diff --git a/harmony/zsh/zsh.post-upgrade b/harmony/zsh/zsh.post-upgrade
new file mode 100644
index 000000000..1b42f8258
--- /dev/null
+++ b/harmony/zsh/zsh.post-upgrade
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+add-shell '/bin/zsh'
+
+ver_new="$1"
+ver_old="$2"
+
+if [ "$(apk version -t "$ver_old" "5.2-r2")" = "<" ]; then
+ cat <<-EOF
+ *
+ * Some modules has been moved into subpackages:
+ * zsh-calendar calendar function system
+ * zsh-vcs version control information (vcs_info)
+ * zsh-zftp zftp function system
+ *
+ EOF
+fi
+
+exit 0
diff --git a/harmony/zsh/zsh.pre-deinstall b/harmony/zsh/zsh.pre-deinstall
new file mode 100644
index 000000000..215f9a2e8
--- /dev/null
+++ b/harmony/zsh/zsh.pre-deinstall
@@ -0,0 +1,3 @@
+#!/bin/sh
+remove-shell '/bin/zsh'
+exit 0
diff --git a/system/abuild/0001-abuild-add-env-option-to-require-tests.patch b/system/abuild/0001-abuild-add-env-option-to-require-tests.patch
new file mode 100644
index 000000000..49497421b
--- /dev/null
+++ b/system/abuild/0001-abuild-add-env-option-to-require-tests.patch
@@ -0,0 +1,33 @@
+From d85a92478fc8a95bdcb4bf84c30c20ca935abc08 Mon Sep 17 00:00:00 2001
+From: Carlo Landmeter <clandmeter@gmail.com>
+Date: Tue, 24 Oct 2017 14:48:52 +0200
+Subject: [PATCH] abuild: add env option to require tests
+
+This adds an env option REQUIRE_CHECK to require testsuites to
+be run. This does not clutter getopts so it can be safely removed
+afterwards when we enforce tests globally. This will allow our CI
+infrastructure to enforce testsuites where possible.
+---
+ abuild.in | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/abuild.in b/abuild.in
+index 41b465d..7e3c818 100644
+--- a/abuild.in
++++ b/abuild.in
+@@ -226,6 +226,12 @@ default_sanitycheck() {
+ check_secfixes_comment || return 1
+
+ makedepends_has 'g++' && ! options_has toolchain && warning "g++ should not be in makedepends"
++
++ if ! options_has "!check" && [ -n "$REQUIRE_CHECK" ]; then
++ (unset check; . "$APKBUILD"; type check >/dev/null 2>&1) || \
++ die "Testsuites (abuild check) are required or needs to be explicitly disabled!"
++ fi
++
+ return 0
+ }
+
+--
+2.14.2
+
diff --git a/system/abuild/APKBUILD b/system/abuild/APKBUILD
new file mode 100644
index 000000000..8dd1c12b6
--- /dev/null
+++ b/system/abuild/APKBUILD
@@ -0,0 +1,78 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=abuild
+pkgver=3.1.0
+_ver=${pkgver%_git*}
+pkgrel=2
+pkgdesc="Script to build Alpine Packages"
+url="http://git.alpinelinux.org/cgit/abuild/"
+arch="all"
+license="GPL-2.0"
+depends="fakeroot sudo pax-utils openssl apk-tools>=2.0.7-r1 libc-utils
+ attr libarchive-tools pkgconf patch lzip"
+if [ "$CBUILD" = "$CHOST" ]; then
+ depends="$depends curl"
+fi
+makedepends_build="pkgconfig"
+makedepends_host="openssl-dev zlib-dev"
+makedepends="$makedepends_host $makedepends_build"
+install="$pkgname.pre-install $pkgname.pre-upgrade"
+subpackages="apkbuild-cpan:cpan:noarch apkbuild-gem-resolver:gems:noarch
+ abuild-rootbld:_rootbld:noarch"
+options="suid !check"
+pkggroups="abuild"
+source="http://dev.alpinelinux.org/archive/abuild/abuild-$_ver.tar.xz
+ posix-abuild.patch
+ newapkbuild-cmake.patch
+ adelie-customisations.patch
+ 0001-abuild-add-env-option-to-require-tests.patch
+ "
+builddir="$srcdir/$pkgname-$_ver"
+
+prepare() {
+ default_prepare
+
+ cd "$builddir"
+ sed -i -e "/^CHOST=/s/=.*/=$CHOST/" abuild.conf
+}
+
+build() {
+ cd "$builddir"
+ make VERSION="$pkgver-r$pkgrel"
+}
+
+package() {
+ cd "$builddir"
+
+ make install VERSION="$pkgver-r$pkgrel" DESTDIR="$pkgdir"
+
+ install -m 644 abuild.conf "$pkgdir"/etc/abuild.conf
+ install -d -m 775 -g abuild "$pkgdir"/var/cache/distfiles
+}
+
+cpan() {
+ pkgdesc="Script to generate perl APKBUILD from CPAN"
+ depends="perl perl-libwww perl-json perl-module-build-tiny"
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/apkbuild-cpan "$subpkgdir"/usr/bin/
+}
+
+gems() {
+ pkgdesc="APKBUILD dependency resolver for RubyGems"
+ depends="ruby ruby-augeas"
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/apkbuild-gem-resolver "$subpkgdir"/usr/bin/
+}
+
+_rootbld() {
+ pkgdesc="Build packages in chroot"
+ depends="abuild bubblewrap gettext git"
+ mkdir -p "$subpkgdir"
+}
+
+sha512sums="bb9093d67942e3a63e4e053692c0bca30940cae05955518206cd9f7029211a188b7f442456ae126e61cbdca224eddb31e967d5cf0637e16893163cc963871a52 abuild-3.1.0.tar.xz
+86194084e95cdb42d4b1bc3d4ff2b8144125aa4e7f74f8c97023c55f2304d27d8c377baf5075666c9b43323506357b962d83d4a30a3f41cde7b53542889adf2d posix-abuild.patch
+705c393b37c37a364473590190122a43a2962946290a873e6685cd4eb43c4874bfdf7489e7b655f870b332dee38edca5dcf2d3906461001875a55b9e6549b824 newapkbuild-cmake.patch
+e27f29b94fe55fe59ab9dc28986cd1755a41221ad6b4457c7c0b268e561f7c6946ea6fcb8b7ace897acfde2e4660ec7150ef43fb0c71c6c20dfd38aa1d062140 adelie-customisations.patch
+e02cc44c8ad9dd61c9b80684b8cf5b64477a6fd6221cde9efea2a7594c6e7ce01a51f8bd4b80d72f82f7caf93217979fb0b354c420983891fa93f34c4252a035 0001-abuild-add-env-option-to-require-tests.patch"
diff --git a/system/abuild/abuild.pre-install b/system/abuild/abuild.pre-install
new file mode 100644
index 000000000..fd3d39a36
--- /dev/null
+++ b/system/abuild/abuild.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+addgroup -S abuild 2>/dev/null
+
+exit 0
diff --git a/system/abuild/abuild.pre-upgrade b/system/abuild/abuild.pre-upgrade
new file mode 120000
index 000000000..99e4a2144
--- /dev/null
+++ b/system/abuild/abuild.pre-upgrade
@@ -0,0 +1 @@
+abuild.pre-install \ No newline at end of file
diff --git a/system/abuild/adelie-customisations.patch b/system/abuild/adelie-customisations.patch
new file mode 100644
index 000000000..db7280abc
--- /dev/null
+++ b/system/abuild/adelie-customisations.patch
@@ -0,0 +1,48 @@
+diff --git a/functions.sh.in b/functions.sh.in
+index 4f2c023..a4de25c 100644
+--- a/functions.sh.in
++++ b/functions.sh.in
+@@ -5,16 +5,20 @@ program=${0##*/}
+
+ arch_to_hostspec() {
+ case "$1" in
+- aarch64) echo "aarch64-alpine-linux-musl" ;;
+- armel) echo "armv5-alpine-linux-musleabi" ;;
+- armhf) echo "armv6-alpine-linux-muslgnueabihf" ;;
+- armv7) echo "armv7-alpine-linux-musleabihf" ;;
+- ppc) echo "powerpc-alpine-linux-musl" ;;
+- ppc64) echo "powerpc64-alpine-linux-musl" ;;
+- ppc64le) echo "powerpc64le-alpine-linux-musl" ;;
+- s390x) echo "s390x-alpine-linux-musl" ;;
+- x86) echo "i586-alpine-linux-musl" ;;
+- x86_64) echo "x86_64-alpine-linux-musl" ;;
++ aarch64) echo "aarch64-foxkit-linux-musl" ;;
++ armel) echo "armv5-foxkit-linux-musleabi" ;;
++ armhf) echo "armv6-foxkit-linux-muslgnueabihf" ;;
++ armv7) echo "armv7-foxkit-linux-musleabihf" ;;
++ i528) echo "pentium4-foxkit-linux-musl" ;;
++ mips) echo "mips-foxkit-linux-musl" ;;
++ mips32) echo "mips32el-foxkit-linux-musl" ;;
++ pmmx) echo "i586-foxkit-linux-musl" ;;
++ ppc) echo "powerpc-foxkit-linux-musl" ;;
++ ppc64) echo "powerpc64-foxkit-linux-musl" ;;
++ ppc64le) echo "powerpc64le-foxkit-linux-musl" ;;
++ s390x) echo "s390x-foxkit-linux-musl" ;;
++ x86) echo "i486-foxkit-linux-musl" ;;
++ x86_64) echo "x86_64-foxkit-linux-musl" ;;
+ *) echo "unknown" ;;
+ esac
+ }
+@@ -25,7 +29,11 @@ hostspec_to_arch() {
+ arm*-*-*-*eabi) echo "armel" ;;
+ armv6*-*-*-*eabihf) echo "armhf" ;;
+ armv7*-*-*-*eabihf) echo "armv7" ;;
+- i[0-9]86-*-*-*) echo "x86" ;;
++ i486-*-*-*) echo "x86" ;;
++ i586-*-*-*) echo "pmmx" ;;
++ mips32*-*-*-*) echo "mips32" ;;
++ mips*-*-*-*) echo "mips" ;;
++ pentium4-*-*-*) echo "i528" ;;
+ powerpc-*-*-*) echo "ppc" ;;
+ powerpc64-*-*-*) echo "ppc64" ;;
+ powerpc64le-*-*-*) echo "ppc64le" ;;
diff --git a/system/abuild/newapkbuild-cmake.patch b/system/abuild/newapkbuild-cmake.patch
new file mode 100644
index 000000000..e83ba753a
--- /dev/null
+++ b/system/abuild/newapkbuild-cmake.patch
@@ -0,0 +1,35 @@
+From 4e0fb906bb3c77f307763a9565295e7d23a3b5e7 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Wed, 11 Oct 2017 17:47:23 -0500
+Subject: [PATCH] newapkbuild: add default check to CMake and RelWithDebugInfo
+ type
+
+---
+ newapkbuild.in | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/newapkbuild.in b/newapkbuild.in
+index c11aa39..d1cf2b9 100644
+--- a/newapkbuild.in
++++ b/newapkbuild.in
+@@ -66,11 +66,16 @@ build_cmake() {
+ -DCMAKE_INSTALL_PREFIX=/usr \\
+ -DCMAKE_INSTALL_LIBDIR=lib \\
+ -DBUILD_SHARED_LIBS=True \\
+- -DCMAKE_BUILD_TYPE=Release \\
++ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \\
+ -DCMAKE_CXX_FLAGS="\$CXXFLAGS" \\
+ -DCMAKE_C_FLAGS="\$CFLAGS" \\
+ \${CMAKE_CROSSOPTS}
+ make
++}
++
++check() {
++ cd "\$builddir"
++ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ __EOF__
+ }
+
+--
+2.14.1
+
diff --git a/system/abuild/posix-abuild.patch b/system/abuild/posix-abuild.patch
new file mode 100644
index 000000000..ae95bec72
--- /dev/null
+++ b/system/abuild/posix-abuild.patch
@@ -0,0 +1,68 @@
+--- src/abuild.in 2017-09-19 07:02:57.000000000 -0500
++++ src/abuild.in 2017-09-23 22:34:32.534221312 -0500
+@@ -1,4 +1,4 @@
+-#!/bin/ash -e
++#!/bin/sh -e
+
+ # abuild - build apk packages (light version of makepkg)
+ # Copyright (c) 2008-2015 Natanael Copa <ncopa@alpinelinux.org>
+@@ -425,11 +425,11 @@
+ tar -C "$srcdir" --lzip -xf "$s" || return 1;;
+ *.tar.lzma)
+ msg "Unpacking $s..."
+- unlzma -c "$s" | tar -C "$srcdir" -x \
++ unlzma -c "$s" | tar -C "$srcdir" -f - -x \
+ || return 1;;
+ *.tar.xz)
+ msg "Unpacking $s..."
+- unxz -c "$s" | tar -C "$srcdir" -x || return 1;;
++ unxz -c "$s" | tar -C "$srcdir" -f - -x || return 1;;
+ *.zip)
+ msg "Unpacking $s..."
+ unzip -n -q "$s" -d "$srcdir" || return 1;;
+@@ -476,7 +476,7 @@
+ subpkgarch=${_splitarch#*:}
+ if [ "$subpkgarch" = "$_splitarch" -o -z "$subpkgarch" ]; then
+ case "$subpkgname" in
+- *-doc | *-lang | *-lang-*) subpkgarch="noarch" ;;
++ *-doc | *-lang | *-lang-* | *-openrc) subpkgarch="noarch" ;;
+ *) subpkgarch="$pkgarch" ;;
+ esac
+ fi
+@@ -1395,7 +1395,7 @@
+ touch .dummy
+ set -- .dummy
+ fi
+- tar --xattrs -f - -c "$@" | abuild-tar --hash | gzip -9 >"$dir"/data.tar.gz
++ tar --format pax --xattrs -f - -c "$@" | abuild-tar --hash | gzip -9 >"$dir"/data.tar.gz
+
+ msg "Create checksum..."
+ # append the hash for data.tar.gz
+@@ -1404,7 +1404,7 @@
+
+ # control.tar.gz
+ cd "$dir"
+- tar -f - -c $(cat "$dir"/.metafiles) | abuild-tar --cut \
++ tar --format pax -f - -c $(cat "$dir"/.metafiles) | abuild-tar --cut \
+ | gzip -9 > control.tar.gz
+ abuild-sign -q control.tar.gz || exit 1
+
+@@ -1483,9 +1483,7 @@
+
+ # predefined function check
+ default_check() {
+- warning "APKBUILD does not run any tests!"
+- msg2 "Alpine policy will soon require that packages have any relevant testsuites run during the build process."
+- msg2 "To fix, either define a check() function, or declare !check in \$options to indicate the package does not have a testsuite."
++ die "APKBUILD does not run any tests!"
+ }
+
+ check() {
+@@ -2337,6 +2335,7 @@
+ }
+
+ usage() {
++ echo "$program $program_version"
+ cat <<-EOF
+ usage: $program [options] [-P REPODEST] [-s SRCDEST] [-D DESCRIPTION] [cmd] ...
+ $program [-c] -n PKGNAME[-PKGVER]
diff --git a/system/adelie-base/APKBUILD b/system/adelie-base/APKBUILD
index 7598e83a4..3f522a67d 100644
--- a/system/adelie-base/APKBUILD
+++ b/system/adelie-base/APKBUILD
@@ -1,13 +1,13 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=adelie-base
-pkgver=0.4.0
-pkgrel=0
+pkgver=0.5.0
+pkgrel=1
pkgdesc="The Adélie Linux Base System"
url="http://adelielinux.org/"
arch="noarch"
license="NCSA"
-depends="apk-tools shadow debianutils
+depends="apk-tools ca-certificates shadow debianutils
libarchive-tools file shimmy grep procps
zsh bash
binutils coreutils diffutils findutils sharutils
@@ -43,6 +43,7 @@ package() {
make install DESTDIR="$pkgdir"
install -m644 "$srcdir"/group "$pkgdir"/etc/group
install -m644 "$srcdir"/passwd "$pkgdir"/etc/passwd
+ install -m640 -g shadow "$builddir"/tree/etc/shadow "$pkgdir"/etc/shadow
# stupid inflatable stupid busybox
for i in adduser addgroup; do
@@ -59,7 +60,7 @@ doc() {
}
posix() {
- depends="at bc cflow cups ed m4 mailx ncompress pax"
+ depends="at bc cflow cups ed fcron heirloom-pax m4 mailx mawk"
pkgdesc="$pkgdesc - Additional POSIX tools"
mkdir -p "$subpkgdir"
return 0
@@ -79,8 +80,8 @@ devkit() {
return 0
}
-sha512sums="557cc53610c3fed8d570f0c0048370eb633f87b72df52fac73b3f3b4327cf76191419f5fbe12208f45dee15588514509bcda8efa2bb0a2dfa52f4f26dbce0f53 adelie-base-0.4.0.tar.xz
+sha512sums="1feef98b2e58ffec9ea19145be2daa84c42d1f4b13e08219e1eb3f11c5565bb5e3d1e23db7dc341e19bce7ee1ad9d8727f3e69f4b8bc2bedb253d56b4f88d79b adelie-base-0.5.0.tar.xz
e6775b9e1c6421338aaceee375b3b74aa100fd444e369b280ce45c9167119b76bebc11737d7f929e50e20a553a35e0e25f7d0f71deb0483d3bccc08e319dcf98 group
9eede0c1cd56a9ffb5227cc9446cdb1bbe73d5f17cd5ee99cf29acca3160f3a96d79e1420311a140f9d9f32950b9823b33ad84dadf7b85921d4f1a945dd5a252 passwd
a5035c18efc50be5d0c8dd452619d781da09c9441ed53462c99693170d1ae2b4306a81846e42b616c5ef8cd5b6fbbf047f93ae5ee9613126581cf701b3a6ade7 addgroup
-9e53246d7674279b64962eb45060f07a752f86e9b3cee49b4b05be4dd13113b03c18e62381c92546fae9b05b3dc6100f29cea48c716b3219d973444f71e1fd5a adduser"
+f50be377c781b1eefb1804ac9d96b4ebc64f80abe0d12b288413687a000e79ca30c531bbced2c63f9e4df59b1d8a71d0eda09ee82782eaafea453f2f1c2f7b8f adduser"
diff --git a/system/adelie-base/adduser b/system/adelie-base/adduser
index ba9d90a61..5c458045d 100755
--- a/system/adelie-base/adduser
+++ b/system/adelie-base/adduser
@@ -68,7 +68,7 @@ if [ -n "$MYGROUPS" ]; then
fi
if [ -n "$HOMEDIR" ]; then
- CMDLINE="$CMDLINE -m -d \"$HOMEDIR\" -k \"$SKEL\""
+ CMDLINE="$CMDLINE -m -d $HOMEDIR -k $SKEL"
fi
if [ $SYSTEM -ne 0 ]; then
diff --git a/system/bash/APKBUILD b/system/bash/APKBUILD
new file mode 100644
index 000000000..c5a476b1a
--- /dev/null
+++ b/system/bash/APKBUILD
@@ -0,0 +1,116 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: TBK <alpine@jjtc.eu>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=bash
+pkgver=4.4.12
+_patchlevel=${pkgver##*.}
+_myver=${pkgver%.*}
+_patchbase=${_myver/./}
+pkgrel=2
+pkgdesc="The GNU Bourne Again shell"
+url="http://www.gnu.org/software/bash/bash.html"
+arch="all"
+license="GPL3+"
+makedepends_build="bison flex"
+makedepends_host="readline-dev ncurses-dev"
+depends=""
+options="!checkroot"
+install="$pkgname.post-upgrade $pkgname.pre-deinstall"
+subpackages="$pkgname-doc $pkgname-binsh:binsh:noarch"
+source="http://ftp.gnu.org/gnu/bash/bash-${_myver}.tar.gz
+ bash-noinfo.patch
+ bash44-sensible-defaults.patch
+ bashrc
+ "
+# generate url's to patches. note: no forks allowed!
+_i=1
+_pad="00"
+while [ $_i -le $_patchlevel ]; do
+ [ $_i -ge 10 ] && _pad="0"
+ [ $_i -ge 100 ] && _pad=
+ source="$source http://ftp.gnu.org/gnu/bash/bash-$_myver-patches/bash$_patchbase-$_pad$_i"
+ _i=$(( $_i + 1))
+done
+
+# secfixes:
+# 4.4.12-r1:
+# - CVE-2016-0634
+
+builddir="$srcdir"/$pkgname-$_myver
+
+prepare() {
+ cd "$builddir"
+
+ # NOTE: This section is for applying the vendor patches, which are required to fix
+ # security holes. `default_prepare` does *not* apply vendor patches in the format
+ # shipped with bash. We also need to make sure vendor patches are applied before
+ # our own.
+ # If you disagree, please request an experimental rebuild with bash as /bin/sh,
+ # before removing this section.
+ for p in $source; do
+ case $p in
+ */bash[0-9][0-9]-[0-9]*)
+ msg "$p (vendor)"
+ patch -p0 -i "$srcdir"/${p##*/} || return 1
+ ;;
+ esac
+ done
+
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --bindir=/bin \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --with-curses \
+ --disable-nls \
+ --enable-readline \
+ --without-bash-malloc \
+ --with-installed-readline
+ # parallel build workarounds
+ make y.tab.c && make builtins/libbuiltins.a && make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd ${startdir}/src/${pkgname}-${_myver}
+ make DESTDIR=${pkgdir} install
+
+ rm -rf "$pkgdir"/usr/share/locale
+ install -D -m755 "$srcdir"/bashrc "$pkgdir"/etc/bash/bashrc
+}
+
+binsh() {
+ pkgdesc="Use bash as /bin/sh"
+ provides="/bin/sh"
+ mkdir -p "$subpkgdir"/bin
+ ln -s /bin/bash "$subpkgdir"/bin/sh
+}
+
+sha512sums="73de3b425faaac55e45456b0f6f6d8077b5dfa7bb76e0d1894a19361b4a2b6bd4fbbe182117ddbfe9b07b4d898fba03537c261badc9533dd3c0da891764c7f29 bash-4.4.tar.gz
+9d8845491d0fe335bdd8e9a2bd98bda54bfed2ae3c35b2196c6d5a38bdf96c4d97572ba7d6b19ab605ef4e8f001f64cf3312f87dedebb9e37a95ad2c44e33cdb bash-noinfo.patch
+388433e9ab25948747adfa7c2b98021799d5d396e8771d09b5b079054380af3f299f78abef144fe93908f6eff252658137c95ebba9418fe385f0cecbb5795f24 bash44-sensible-defaults.patch
+2b6e2e34328f091cbe0882833eab99c6fddbe19a5942382c4c1fbe5b1d20158cfcfcaaaea1f941b9a481be0507b7ea55e6048f79246657019713f0b201318e45 bashrc
+fa7a1b277eb3bad6ae7d2c7a2887cbf2c0eb75b7fee8ed03ec1e9d45879a2fb4b8c7cb16d6b029987493b01a461214bd9a24454a6837e7cfe180b1bc56f61caa bash44-001
+526f986057810f89080e283ff95b3a8fd24d37e4ad2f18c39f36d3a2d57956a6441d16220082157735e3c5ccf770d5016e761aa5f309129898e39277d576e6b5 bash44-002
+e61db89bdd1a7ae15013fe258046a343c9ea41e5a1c6d2c810947500a617fce7536b8d51194e14bb42499fe0de6d70cc9b2c81da0afdcb5a2278459f4f76d748 bash44-003
+7570cf15518f79230cfe91b3e58c795c16c7fb6ba6418d967355b36fb7982e7919a9eaaef9177fb605c7fb7d7efb8a8335e725c1bacffff69a098433f5adc9c7 bash44-004
+7546a6c90c8e8508567dde713722291477ca87c1116905b46432514a4fc632840a855b84f102591914cd4c44d5bf2eb7400866e26366fc94525fb401ea844a8f bash44-005
+5edcd76cf97bfe289f71924ba279ff48a1167eb3cc36f811cbcc23732746f5c821d1d39d4b137b7d99d57809a4b7270a54f4a41176fcfde0708bf92ddc68b77f bash44-006
+386c019debee414697abc648d9a77894e842bb0b7a2a71709e8b3398582f25065e68963405fa22fb77439c6b431ee94a2ecbb16734c2436af3dfb4d1b5f06fcf bash44-007
+d9a8924f1c9263deab89153bb688a87f211913ebd72c8077e607db6fdddc7e5af05042dd22a9a2df593e518ea74b54ca79d20afc796e47d871827a2556e233d0 bash44-008
+3b01c080cf4a54658679b36c282a69a9ac48b900b19ceb42dbaf084abd395d50e5ff14db90a7fdf0c9856dad150897dca561160686c931634765782447fc076e bash44-009
+54ff556b62fd88381e7a495db50957b016474973b3a566661c65b649a40960f2d3355221b3a71fb292128aad92a45d73d9816d63833bc416b4d15acdef391b98 bash44-010
+6b5b068b74978fc691749ccff5e094c768047f702430e97114f5bf342f078696f7d7616d0642d4061b062e9112dfe00a1c2309c65de4147e0e98fb52c593d844 bash44-011
+4661c4c132f2ea7c9a70368301041c482d5820d8389334a7e3ae44c36fc16c171b20db2f194b7663c84d6c3dcef81aa90f050a48e205218fc7bd3395d09c6a51 bash44-012"
diff --git a/system/bash/bash-noinfo.patch b/system/bash/bash-noinfo.patch
new file mode 100644
index 000000000..bf4f0956a
--- /dev/null
+++ b/system/bash/bash-noinfo.patch
@@ -0,0 +1,11 @@
+--- a/doc/Makefile.in
++++ b/doc/Makefile.in
+@@ -247,7 +247,7 @@
+ $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \
+ fi
+
+-install: info installdirs
++install: installdirs
+ -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext}
+ -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext}
+ -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir)
diff --git a/system/bash/bash.post-upgrade b/system/bash/bash.post-upgrade
new file mode 100644
index 000000000..92ea8d928
--- /dev/null
+++ b/system/bash/bash.post-upgrade
@@ -0,0 +1,3 @@
+#!/bin/sh
+add-shell '/bin/bash'
+exit 0
diff --git a/system/bash/bash.pre-deinstall b/system/bash/bash.pre-deinstall
new file mode 100644
index 000000000..d110afedd
--- /dev/null
+++ b/system/bash/bash.pre-deinstall
@@ -0,0 +1,3 @@
+#!/bin/sh
+remove-shell '/bin/bash'
+exit 0
diff --git a/system/bash/bash44-sensible-defaults.patch b/system/bash/bash44-sensible-defaults.patch
new file mode 100644
index 000000000..4d11afd2d
--- /dev/null
+++ b/system/bash/bash44-sensible-defaults.patch
@@ -0,0 +1,25 @@
+diff -Naur bash-4.4/config-top.h bash-4.4-adelieconf/config-top.h
+--- bash-4.4/config-top.h 2016-05-19 18:34:02.000000000 +0000
++++ bash-4.4-adelieconf/config-top.h 2018-02-06 01:07:33.736749439 +0000
+@@ -87,10 +87,10 @@
+ #define DEFAULT_BASHRC "~/.bashrc"
+
+ /* System-wide .bashrc file for interactive shells. */
+-/* #define SYS_BASHRC "/etc/bash.bashrc" */
++#define SYS_BASHRC "/etc/bash/bashrc"
+
+ /* System-wide .bash_logout for login shells. */
+-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
++#define SYS_BASH_LOGOUT "/etc/bash/bash_logout"
+
+ /* Define this to make non-interactive shells begun with argv[0][0] == '-'
+ run the startup files when not in posix mode. */
+@@ -100,7 +100,7 @@
+ sshd and source the .bashrc if so (like the rshd behavior). This checks
+ for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
+ which can be fooled under certain not-uncommon circumstances. */
+-/* #define SSH_SOURCE_BASHRC */
++#define SSH_SOURCE_BASHRC
+
+ /* Define if you want the case-capitalizing operators (~[~]) and the
+ `capcase' variable attribute (declare -c). */
diff --git a/system/bash/bashrc b/system/bash/bashrc
new file mode 100644
index 000000000..c4ae18bb9
--- /dev/null
+++ b/system/bash/bashrc
@@ -0,0 +1,71 @@
+# Welcome to Adélie Linux
+# /etc/bash/bashrc - run by bash on every startup
+
+# Prior to 1.0a3, we did a lot of heavy lifting here.
+# Massive cleanup for 1.0a3 makes things faster and more efficient.
+
+# No interactivity = no point
+if [[ $- != *i* ]]; then
+ return
+fi
+
+# Extra stat(3) call to invalidate hash cache. Better UX, but lots of waste.
+# shopt -s checkhash
+
+# Handle window resizing after a curses program quits
+shopt -s checkwinsize
+
+# Append instead of overwriting histfile.
+shopt -s histappend
+
+# Allow users to correct typos in history substs.
+shopt -s histreedit
+
+# Save commands as they were typed.
+shopt -s lithist
+
+# Don't show every command available if a user types \t on a bare line
+shopt -s no_empty_cmd_completion
+
+# Expand things like \n \r \t when using built-in echo(1).
+shopt -s xpg_echo
+
+
+do_colour() {
+ local colourise=false
+ LS_COLORS=
+ eval "$(dircolors -b)"
+ if [[ -n ${LS_COLORS:+set} ]]; then
+ colourise=true
+ else
+ unset LS_COLORS
+ fi
+
+ if ${colourise} ; then
+ if [[ ${EUID} == 0 ]] ; then
+ PS1='\[\e[01m\]\h\[\e[22m\] \[\e[01;36m\]\w\[\e[00m\] \[\e[01;31m\]\$\[\e[00m\] '
+ else
+ PS1='\u on \[\e[01m\]\h\[\e[22m\] \w \[\e[01;32m\$\[\e[00m\] '
+ fi
+
+ alias ls='ls --color=auto'
+ alias grep='grep --colour=auto'
+ alias egrep='egrep --colour=auto'
+ alias fgrep='fgrep --colour=auto'
+ else
+ if [[ ${EUID} == 0 ]] ; then
+ # show root@ when we don't have colors
+ PS1='! \u on \h \w \$ '
+ else
+ PS1='\u on \h \w \$ '
+ fi
+ fi
+}
+
+do_colour
+
+for sh in /etc/bash/bashrc.d/* ; do
+ [[ -r ${sh} ]] && source "${sh}"
+done
+
+unset do_colour
diff --git a/system/binutils/APKBUILD b/system/binutils/APKBUILD
new file mode 100644
index 000000000..5fa5c7d6e
--- /dev/null
+++ b/system/binutils/APKBUILD
@@ -0,0 +1,140 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=binutils
+pkgver=2.30
+pkgrel=0
+pkgdesc="Tools necessary to build programs"
+url="http://www.gnu.org/software/binutils/"
+depends=""
+makedepends_build="bison flex texinfo"
+makedepends_host="zlib-dev"
+makedepends="$makedepends_build $makedepends_host"
+checkdepends="dejagnu"
+arch="all"
+license="GPL2 GPL3+ LGPL2 BSD"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
+[ "${CARCH}" != "mips" ] && subpackages="$subpackages $pkgname-gold"
+# non-PIC is unsupported by musl/ppc
+[ "${CARCH}" == "ppc" ] && options='!check'
+source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz
+ binutils-ld-fix-static-linking.patch
+ disable-gnu-mbind.patch
+ disable-ifunc-tests.patch
+ disable-preinit-array-tests.patch
+ mips-illegal-memcpy.patch
+ remove-no-static-plt-test.patch
+ remove-pr2404-tests.patch
+ remove-pr19553c-test.patch
+ gold-mips.patch
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+if [ "$CHOST" != "$CTARGET" ]; then
+ pkgname="$pkgname-$CTARGET_ARCH"
+ subpackages=""
+ options="!check"
+ sonameprefix="$pkgname:"
+fi
+
+# secfixes:
+# 2.28-r1:
+# - CVE-2017-7614
+
+build() {
+ local _sysroot=/
+ local _cross_configure="--enable-install-libiberty"
+ local _arch_configure=""
+
+ if [ "$CHOST" != "$CTARGET" ]; then
+ _sysroot="$CBUILDROOT"
+ _cross_configure="--disable-install-libiberty"
+ fi
+
+ if [ "$CTARGET_ARCH" = "x86_64" ]; then
+ _arch_configure="--enable-targets=x86_64-pep"
+ fi
+
+ case "$CTARGET_ARCH" in
+ mips*) _hash_style_configure="--enable-default-hash-style=sysv" ;;
+ *) _hash_style_configure="--enable-default-hash-style=gnu" ;;
+ esac
+
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --target=$CTARGET \
+ --with-build-sysroot="$CBUILDROOT" \
+ --with-sysroot=$_sysroot \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-multilib \
+ --enable-shared \
+ --enable-ld=default \
+ --enable-64-bit-bfd \
+ --enable-plugins \
+ --enable-relro \
+ --enable-gold \
+ --enable-deterministic-archives \
+ $_cross_configure \
+ $_arch_configure \
+ $_hash_style_configure \
+ --disable-werror \
+ --disable-nls \
+ --with-system-zlib \
+ || return 1
+ make || return 1
+}
+
+package() {
+ cd "$builddir"
+ make install DESTDIR="$pkgdir" || return 1
+ if [ -d "$pkgdir"/usr/lib64 ]; then
+ mv "$pkgdir"/usr/lib64/* "$pkgdir"/usr/lib/
+ rmdir "$pkgdir"/usr/lib64
+ fi
+ if [ "$CHOST" != "$CTARGET" ]; then
+ # creating cross tools: remove any files that would conflict
+ # with the native tools, or other cross tools
+ rm -r "$pkgdir"/usr/share
+ rm -f "$pkgdir"/usr/lib/libiberty.a
+ fi
+}
+
+check() {
+ cd "$builddir"
+ # We can't run the gold test suite, because it cannot be used
+ # on a system with default PIE/PIC.
+ make -C binutils check
+ make -C gas check
+ make -C ld check
+}
+
+libs() {
+ pkgdesc="Runtime libraries from binutils - libbfd and libopcodes"
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/lib*.so "$subpkgdir"/usr/lib/ || return 1
+}
+
+gold() {
+ pkgdesc="GNU binutils - gold linker"
+
+ if [ -e "$pkgdir"/usr/bin/ld.gold ]; then
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/ld.gold "$subpkgdir"/usr/bin
+ fi
+ mkdir -p "$subpkgdir"/usr/$CTARGET/bin
+ mv "$pkgdir"/usr/$CTARGET/bin/ld.gold "$subpkgdir"/usr/$CTARGET/bin/ld.gold
+}
+
+sha512sums="e747ea20d8d79fcd21b9d9f6695059caa7189d60f19256da398e34b789fea9a133c32b192e9693b5828d27683739b0198431bf8b3e39fb3b04884cf89d9aa839 binutils-2.30.tar.xz
+ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
+d378fdf1964f8f2bd0b1e62827ac5884bdf943aa435ec89c29fc84bb045d406b733fffaff8fdd8bd1cba8ddea7701c4cf6ccf3ed76a8a3df9c72b447737575a6 disable-gnu-mbind.patch
+ba2b5c8cdfa95db7a1f05da8a2c1ffc3bcb35300abf7061e52249d9b29037e3fdef1aed830686bca2df74b9f5d48684e9c8e2f49715455bf90dca6e3bfc077eb disable-ifunc-tests.patch
+3537752e63cef0b5ef136d003ff7e814ba66b12624d817430112d0f291a792e8960fa69a78036f526af835441b3ee483d6a53d55c7b3dd8ee96f0399682dbcbe disable-preinit-array-tests.patch
+06422157349abf02e79a5ef8bd9f51100e7e996aab65250d518e0cf0d7ac8ed922d3bf1603c4f5b4fd8fb179266b7b4c41db32dcb241d60a7f1c21d1df0c36dd mips-illegal-memcpy.patch
+b40f9a3841a7af8fc12e8a4044cd672df5614bfda8461b0ca45efa57a42c3bc8490e491ea490c6c05d319a52d69993c4fca33a0aeb044090e7b7f4e4e30c6517 remove-no-static-plt-test.patch
+32ab4215669c728648179c124632467573a3d4675e79f0f0d221c22eb2ec1ca5488b79910bd09142f90a1e0d0b81d99ca4846297f4f9561f158db63745facb66 remove-pr2404-tests.patch
+39ef9c76dd5db6b15f11ffa8061f7ca844fb79c3fb9879c3b1466eef332a28b833597c87003ab9f260b1b85023fae264659088aee27cad7e5aa77b2d58b9a3f6 remove-pr19553c-test.patch
+f55cf2e0bf82f97583a1abe10710e4013ecf7d64f1da2ef8659a44a06d0dd8beaf58dab98a183488ea137f03e32d62efc878d95f018f836f8cec870bc448556f gold-mips.patch"
diff --git a/system/binutils/CVE-2017-7614.patch b/system/binutils/CVE-2017-7614.patch
new file mode 100644
index 000000000..5f3b550f2
--- /dev/null
+++ b/system/binutils/CVE-2017-7614.patch
@@ -0,0 +1,84 @@
+From ad32986fdf9da1c8748e47b8b45100398223dba8 Mon Sep 17 00:00:00 2001
+From: Nick Clifton <nickc@redhat.com>
+Date: Tue, 4 Apr 2017 11:23:36 +0100
+Subject: [PATCH] Fix null pointer dereferences when using a link built with
+ clang.
+
+ PR binutils/21342
+ * elflink.c (_bfd_elf_define_linkage_sym): Prevent null pointer
+ dereference.
+ (bfd_elf_final_link): Only initialize the extended symbol index
+ section if there are extended symbol tables to list.
+---
+ bfd/elflink.c | 35 +++++++++++++++++++++--------------
+ 2 files changed, 29 insertions(+), 14 deletions(-)
+
+diff --git a/bfd/elflink.c b/bfd/elflink.c
+index 776357f..9bf75c8 100644
+--- a/bfd/elflink.c
++++ b/bfd/elflink.c
+@@ -119,15 +119,18 @@ _bfd_elf_define_linkage_sym (bfd *abfd,
+ defined in shared libraries can't be overridden, because we
+ lose the link to the bfd which is via the symbol section. */
+ h->root.type = bfd_link_hash_new;
++ bh = &h->root;
+ }
++ else
++ bh = NULL;
+
+- bh = &h->root;
+ bed = get_elf_backend_data (abfd);
+ if (!_bfd_generic_link_add_one_symbol (info, abfd, name, BSF_GLOBAL,
+ sec, 0, NULL, FALSE, bed->collect,
+ &bh))
+ return NULL;
+ h = (struct elf_link_hash_entry *) bh;
++ BFD_ASSERT (h != NULL);
+ h->def_regular = 1;
+ h->non_elf = 0;
+ h->root.linker_def = 1;
+@@ -12038,24 +12041,28 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
+ {
+ /* Finish up and write out the symbol string table (.strtab)
+ section. */
+- Elf_Internal_Shdr *symstrtab_hdr;
++ Elf_Internal_Shdr *symstrtab_hdr = NULL;
+ file_ptr off = symtab_hdr->sh_offset + symtab_hdr->sh_size;
+
+- symtab_shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
+- if (symtab_shndx_hdr != NULL && symtab_shndx_hdr->sh_name != 0)
++ if (elf_symtab_shndx_list (abfd))
+ {
+- symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX;
+- symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx);
+- symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx);
+- amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx);
+- symtab_shndx_hdr->sh_size = amt;
++ symtab_shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
+
+- off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr,
+- off, TRUE);
++ if (symtab_shndx_hdr != NULL && symtab_shndx_hdr->sh_name != 0)
++ {
++ symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX;
++ symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx);
++ symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx);
++ amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx);
++ symtab_shndx_hdr->sh_size = amt;
+
+- if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0
+- || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt))
+- return FALSE;
++ off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr,
++ off, TRUE);
++
++ if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0
++ || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt))
++ return FALSE;
++ }
+ }
+
+ symstrtab_hdr = &elf_tdata (abfd)->strtab_hdr;
+--
+2.9.3
+
diff --git a/system/binutils/binutils-ld-fix-static-linking.patch b/system/binutils/binutils-ld-fix-static-linking.patch
new file mode 100644
index 000000000..bc5d76265
--- /dev/null
+++ b/system/binutils/binutils-ld-fix-static-linking.patch
@@ -0,0 +1,46 @@
+This fixes static linking for our hardened toolchain
+diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
+index e8126cb..9532bfb 100644
+--- a/ld/scripttempl/elf.sc
++++ b/ld/scripttempl/elf.sc
+@@ -235,8 +235,8 @@ test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS="
+ if test "${ENABLE_INITFINI_ARRAY}" = "yes"; then
+ SORT_INIT_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))"
+ SORT_FINI_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))"
+- CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors"
+- DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors"
++ CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .ctors"
++ DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .dtors"
+ else
+ SORT_INIT_ARRAY="KEEP (*(SORT(.init_array.*)))"
+ SORT_FINI_ARRAY="KEEP (*(SORT(.fini_array.*)))"
+@@ -270,15 +270,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+- KEEP (*crtbegin.o(.ctors))
+- KEEP (*crtbegin?.o(.ctors))
++ KEEP (*crtbegin*.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))
++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ ${CONSTRUCTING+${CTOR_END}}
+@@ -286,9 +285,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
+ DTOR=".dtors ${CONSTRUCTING-0} :
+ {
+ ${CONSTRUCTING+${DTOR_START}}
+- KEEP (*crtbegin.o(.dtors))
+- KEEP (*crtbegin?.o(.dtors))
+- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
++ KEEP (*crtbegin*.o(.dtors))
++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ ${CONSTRUCTING+${DTOR_END}}
diff --git a/system/binutils/disable-gnu-mbind.patch b/system/binutils/disable-gnu-mbind.patch
new file mode 100644
index 000000000..796e6d0fc
--- /dev/null
+++ b/system/binutils/disable-gnu-mbind.patch
@@ -0,0 +1,32 @@
+These tests do not work on PIE. Disable them.
+
+--- binutils-2.29/ld/testsuite/ld-elf/elf.exp.old 2017-08-19 22:39:31.236907813 +0000
++++ binutils-2.29/ld/testsuite/ld-elf/elf.exp 2017-08-20 00:12:04.735925829 +0000
+@@ -296,27 +296,6 @@
+ || [istarget *-*-nacl*]
+ || [istarget *-*-gnu*] } {
+ run_ld_link_exec_tests $array_tests_pie $xfails
+-
+- run_ld_link_exec_tests [list \
+- [list \
+- "Run mbind2a" \
+- "$NOPIE_LDFLAGS -Wl,-z,common-page-size=0x4000" \
+- "" \
+- { mbind2a.s mbind2b.c } \
+- "mbind2a" \
+- "pass.out" \
+- "-O2 -I../bfd" \
+- ] \
+- [list \
+- "Run mbind2b" \
+- "-static -Wl,-z,common-page-size=0x4000" \
+- "" \
+- { mbind2a.s mbind2b.c } \
+- "mbind2b" \
+- "pass.out" \
+- "-O2 -I../bfd" \
+- ] \
+- ]
+ }
+
+ # <http://www.gnu.org/software/hurd/open_issues/binutils.html#static>
diff --git a/system/binutils/disable-ifunc-tests.patch b/system/binutils/disable-ifunc-tests.patch
new file mode 100644
index 000000000..6fbc5c874
--- /dev/null
+++ b/system/binutils/disable-ifunc-tests.patch
@@ -0,0 +1,12 @@
+--- binutils-2.30/ld/testsuite/ld-ifunc/ifunc.exp.old 2018-01-13 07:31:16.000000000 -0600
++++ binutils-2.30/ld/testsuite/ld-ifunc/ifunc.exp 2018-02-27 14:46:07.596544780 -0600
+@@ -36,7 +36,8 @@
+ || (([istarget "*-*-linux*"]
+ || [istarget "*-*-gnu*"])
+ && ![istarget "*-*-*aout*"]
+- && ![istarget "*-*-*oldld*"]))) } {
++ && ![istarget "*-*-*oldld*"]
++ && ![istarget "*-*-*musl*"]))) } {
+ verbose "IFUNC tests not run - target does not support IFUNC"
+ return
+ }
diff --git a/system/binutils/disable-preinit-array-tests.patch b/system/binutils/disable-preinit-array-tests.patch
new file mode 100644
index 000000000..f3d36c1b3
--- /dev/null
+++ b/system/binutils/disable-preinit-array-tests.patch
@@ -0,0 +1,29 @@
+--- binutils-2.29/ld/testsuite/ld-elf/elf.exp.old 2017-07-04 08:43:21.000000000 +0000
++++ binutils-2.29/ld/testsuite/ld-elf/elf.exp 2017-08-19 04:46:32.214460537 +0000
+@@ -262,8 +262,6 @@
+ }
+
+ set array_tests {
+- {"preinit array" "" ""
+- {preinit.c} "preinit" "preinit.out"}
+ {"init array" "" ""
+ {init.c} "init" "init.out"}
+ {"fini array" "" ""
+@@ -272,8 +270,6 @@
+ {init-mixed.c} "init-mixed" "init-mixed.out" "-I."}
+ }
+ set array_tests_pie {
+- {"PIE preinit array" "-pie" ""
+- {preinit.c} "preinit" "preinit.out" "-fPIE"}
+ {"PIE init array" "-pie" ""
+ {init.c} "init" "init.out" "-fPIE"}
+ {"PIE fini array" "-pie" ""
+@@ -284,8 +280,6 @@
+ {pr14525.c} "pr14525" "pr14525.out" "-fPIE"}
+ }
+ set array_tests_static {
+- {"static preinit array" "-static" ""
+- {preinit.c} "preinit" "preinit.out"}
+ {"static init array" "-static" ""
+ {init.c} "init" "init.out"}
+ {"static fini array" "-static" ""
diff --git a/system/binutils/gold-mips.patch b/system/binutils/gold-mips.patch
new file mode 100644
index 000000000..291a2aae6
--- /dev/null
+++ b/system/binutils/gold-mips.patch
@@ -0,0 +1,39 @@
+# DP: Fix gold on mips64 targets.
+
+gold/
+
+2016-08-09 Aurelien Jarno <aurelien@aurel32.net>
+
+ * configure.tgt: Add mips64el*-*-*|mips64le*-*-* and mips64*-*-*.
+
+
+--- a/gold/configure.tgt
++++ b/gold/configure.tgt
+@@ -153,6 +153,13 @@ aarch64*-*)
+ targ_big_endian=false
+ targ_extra_big_endian=true
+ ;;
++mips*64*el*-*-*|mips*64*le*-*-*)
++ targ_obj=mips
++ targ_machine=EM_MIPS_RS3_LE
++ targ_size=64
++ targ_big_endian=false
++ targ_extra_big_endian=true
++ ;;
+ mips*el*-*-*|mips*le*-*-*)
+ targ_obj=mips
+ targ_machine=EM_MIPS_RS3_LE
+@@ -160,6 +167,13 @@ mips*el*-*-*|mips*le*-*-*)
+ targ_big_endian=false
+ targ_extra_big_endian=true
+ ;;
++mips*64*-*-*)
++ targ_obj=mips
++ targ_machine=EM_MIPS
++ targ_size=64
++ targ_big_endian=true
++ targ_extra_big_endian=false
++ ;;
+ mips*-*-*)
+ targ_obj=mips
+ targ_machine=EM_MIPS
diff --git a/system/binutils/hash-style-configure-flag.patch b/system/binutils/hash-style-configure-flag.patch
new file mode 100644
index 000000000..6d4db4bca
--- /dev/null
+++ b/system/binutils/hash-style-configure-flag.patch
@@ -0,0 +1,348 @@
+From 2760f24c4942853eac7b921e4b8843d57a602654 Mon Sep 17 00:00:00 2001
+From: Romain Geissler <romain.geissler@gmail.com>
+Date: Tue, 8 Aug 2017 07:25:39 +0930
+Subject: [PATCH] Add configure flag to enable gnu hash style by default.
+
+ld/
+ * configure.ac: Add --enable-default-hash-style option.
+ * ldmain.c (main): Set link_info.emit_hash to DEFAULT_EMIT_SYSV_HASH.
+ Set link_info.emit_gnu_hash to DEFAULT_EMIT_GNU_HASH.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+
+gold/
+ * configure.ac: Add --enable-default-hash-style option.
+ * options.h (hash_style): Use DEFAULT_HASH_STYLE as default value.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+---
+ gold/ChangeLog | 8 ++++++++
+ gold/config.in | 3 +++
+ gold/configure | 27 +++++++++++++++++++++++++++
+ gold/configure.ac | 20 ++++++++++++++++++++
+ gold/options.h | 2 +-
+ ld/ChangeLog | 9 +++++++++
+ ld/config.in | 6 ++++++
+ ld/configure | 42 ++++++++++++++++++++++++++++++++++++++----
+ ld/configure.ac | 34 ++++++++++++++++++++++++++++++++++
+ ld/ldmain.c | 3 ++-
+ 10 files changed, 148 insertions(+), 6 deletions(-)
+
+diff --git a/gold/ChangeLog b/gold/ChangeLog
+index d598386..93836dd 100644
+--- a/gold/ChangeLog
++++ b/gold/ChangeLog
+@@ -1,3 +1,11 @@
++2017-08-08 Romain Geissler <romain.geissler@gmail.com>
++ Alan Modra <amodra@gmail.com>
++
++ * configure.ac: Add --enable-default-hash-style option.
++ * options.h (hash_style): Use DEFAULT_HASH_STYLE as default value.
++ * configure: Regenerate.
++ * config.in: Regenerate.
++
+ 2017-02-22 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::make_iplt_section): Check that
+diff --git a/gold/config.in b/gold/config.in
+index d9f7b76..5855fca 100644
+--- a/gold/config.in
++++ b/gold/config.in
+@@ -10,6 +10,9 @@
+ /* Define if building universal (internal helper macro) */
+ #undef AC_APPLE_UNIVERSAL_BUILD
+
++/* Set the default --hash-style value */
++#undef DEFAULT_HASH_STYLE
++
+ /* Define to 1 if you want to enable -z relro in ELF linker by default. */
+ #undef DEFAULT_LD_Z_RELRO
+
+diff --git a/gold/configure b/gold/configure
+index cb020be..90a706d 100755
+--- a/gold/configure
++++ b/gold/configure
+@@ -797,6 +797,7 @@ enable_threads
+ enable_plugins
+ enable_relro
+ enable_targets
++enable_default_hash_style
+ with_lib_path
+ enable_dependency_tracking
+ enable_nls
+@@ -1447,6 +1448,8 @@ Optional Features:
+ --enable-plugins linker plugins
+ --enable-relro enable -z relro in ELF linker by default
+ --enable-targets alternative target configurations
++ --enable-default-hash-style={sysv,gnu,both}
++ use this default hash style
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-nls do not use Native Language Support
+@@ -3410,6 +3413,30 @@ if test -n "$enable_targets"; then
+ done
+ fi
+
++# Decide which "--hash-style" to use by default
++# Provide a configure time option to override our default.
++# Check whether --enable-default-hash-style was given.
++if test "${enable_default_hash_style+set}" = set; then :
++ enableval=$enable_default_hash_style; case "${enable_default_hash_style}" in
++ sysv | gnu | both) ;;
++ *) as_fn_error "bad value ${enable_default_hash_style} for enable-default-hash-style option" "$LINENO" 5 ;;
++esac
++else
++ case "${target}" in
++ # Enable gnu hash only on GNU targets, but not mips
++ mips*-*-*) enable_default_hash_style=sysv ;;
++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
++ *) enable_default_hash_style=sysv ;;
++esac
++fi
++
++
++
++cat >>confdefs.h <<_ACEOF
++#define DEFAULT_HASH_STYLE "${enable_default_hash_style}"
++_ACEOF
++
++
+ # See which specific instantiations we need.
+ targetobjs=
+ all_targets=
+diff --git a/gold/configure.ac b/gold/configure.ac
+index cbe3380..d7fa1f8 100644
+--- a/gold/configure.ac
++++ b/gold/configure.ac
+@@ -161,6 +161,26 @@ if test -n "$enable_targets"; then
+ done
+ fi
+
++# Decide which "--hash-style" to use by default
++# Provide a configure time option to override our default.
++AC_ARG_ENABLE([default-hash-style],
++AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
++ [use this default hash style]),
++[case "${enable_default_hash_style}" in
++ sysv | gnu | both) ;;
++ *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
++esac],
++[case "${target}" in
++ # Enable gnu hash only on GNU targets, but not mips
++ mips*-*-*) enable_default_hash_style=sysv ;;
++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
++ *) enable_default_hash_style=sysv ;;
++esac])
++
++AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE],
++ ["${enable_default_hash_style}"],
++ [Set the default --hash-style value])
++
+ # See which specific instantiations we need.
+ targetobjs=
+ all_targets=
+diff --git a/gold/options.h b/gold/options.h
+index a8b1d46..ce21a42 100644
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -921,7 +921,7 @@ class General_options
+ N_("Min fraction of empty buckets in dynamic hash"),
+ N_("FRACTION"));
+
+- DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
++ DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE,
+ N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
+ {"sysv", "gnu", "both"});
+
+diff --git a/ld/ChangeLog b/ld/ChangeLog
+index ba7d1d4..cf91d55 100644
+--- a/ld/ChangeLog
++++ b/ld/ChangeLog
+@@ -1,3 +1,12 @@
++2017-08-08 Romain Geissler <romain.geissler@gmail.com>
++ Alan Modra <amodra@gmail.com>
++
++ * configure.ac: Add --enable-default-hash-style option.
++ * ldmain.c (main): Set link_info.emit_hash to DEFAULT_EMIT_SYSV_HASH.
++ Set link_info.emit_gnu_hash to DEFAULT_EMIT_GNU_HASH.
++ * configure: Regenerate.
++ * config.in: Regenerate.
++
+ 2017-03-02 Tristan Gingold <gingold@adacore.com>
+
+ * configure: Regenerate.
+diff --git a/ld/config.in b/ld/config.in
+index 2c6d698..b2318e1 100644
+--- a/ld/config.in
++++ b/ld/config.in
+@@ -7,6 +7,12 @@
+ #endif
+ #define __CONFIG_H__ 1
+
++/* Define to 1 if you want to emit gnu hash in the ELF linker by default. */
++#undef DEFAULT_EMIT_GNU_HASH
++
++/* Define to 1 if you want to emit sysv hash in the ELF linker by default. */
++#undef DEFAULT_EMIT_SYSV_HASH
++
+ /* Define if you want compressed debug sections by default. */
+ #undef DEFAULT_FLAG_COMPRESS_DEBUG
+
+diff --git a/ld/configure b/ld/configure
+index 36af969..40c67fd 100755
+--- a/ld/configure
++++ b/ld/configure
+@@ -793,6 +793,7 @@ enable_gold
+ enable_got
+ enable_compressed_debug_sections
+ enable_relro
++enable_default_hash_style
+ enable_werror
+ enable_build_warnings
+ enable_nls
+@@ -1452,6 +1453,8 @@ Optional Features:
+ --enable-compressed-debug-sections={all,ld,none}
+ compress debug sections by default]
+ --enable-relro enable -z relro in ELF linker by default
++ --enable-default-hash-style={sysv,gnu,both}
++ use this default hash style
+ --enable-werror treat compile warnings as errors
+ --enable-build-warnings enable build-time compiler warnings
+ --disable-nls do not use Native Language Support
+@@ -11724,7 +11727,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11727 "configure"
++#line 11730 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11830,7 +11833,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11833 "configure"
++#line 11836 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -15555,6 +15558,33 @@ if test "${enable_relro+set}" = set; then :
+ esac
+ fi
+
++# Decide which "--hash-style" to use by default
++# Provide a configure time option to override our default.
++# Check whether --enable-default-hash-style was given.
++if test "${enable_default_hash_style+set}" = set; then :
++ enableval=$enable_default_hash_style; case "${enable_default_hash_style}" in
++ sysv | gnu | both) ;;
++ *) as_fn_error "bad value ${enable_default_hash_style} for enable-default-hash-style option" "$LINENO" 5 ;;
++esac
++else
++ case "${target}" in
++ # Enable gnu hash only on GNU targets, but not mips
++ mips*-*-*) enable_default_hash_style=sysv ;;
++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
++ *) enable_default_hash_style=sysv ;;
++esac
++fi
++
++
++case "${enable_default_hash_style}" in
++ sysv | both) ac_default_emit_sysv_hash=1 ;;
++ *) ac_default_emit_sysv_hash=0 ;;
++esac
++
++case "${enable_default_hash_style}" in
++ gnu | both) ac_default_emit_gnu_hash=1 ;;
++ *) ac_default_emit_gnu_hash=0 ;;
++esac
+
+ # Set the 'development' global.
+ . $srcdir/../bfd/development.sh
+@@ -17212,9 +17242,13 @@ cat >>confdefs.h <<_ACEOF
+ #define DEFAULT_LD_Z_RELRO $ac_default_ld_z_relro
+ _ACEOF
+
++cat >>confdefs.h <<_ACEOF
++#define DEFAULT_EMIT_SYSV_HASH $ac_default_emit_sysv_hash
++_ACEOF
+
+-
+-
++cat >>confdefs.h <<_ACEOF
++#define DEFAULT_EMIT_GNU_HASH $ac_default_emit_gnu_hash
++_ACEOF
+
+
+
+diff --git a/ld/configure.ac b/ld/configure.ac
+index 36a9f50..1876ad7 100644
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -166,6 +166,32 @@ AC_ARG_ENABLE(relro,
+ no) ac_default_ld_z_relro=0 ;;
+ esac])dnl
+
++# Decide which "--hash-style" to use by default
++# Provide a configure time option to override our default.
++AC_ARG_ENABLE([default-hash-style],
++AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
++ [use this default hash style]),
++[case "${enable_default_hash_style}" in
++ sysv | gnu | both) ;;
++ *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
++esac],
++[case "${target}" in
++ # Enable gnu hash only on GNU targets, but not mips
++ mips*-*-*) enable_default_hash_style=sysv ;;
++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
++ *) enable_default_hash_style=sysv ;;
++esac])
++
++case "${enable_default_hash_style}" in
++ sysv | both) ac_default_emit_sysv_hash=1 ;;
++ *) ac_default_emit_sysv_hash=0 ;;
++esac
++
++case "${enable_default_hash_style}" in
++ gnu | both) ac_default_emit_gnu_hash=1 ;;
++ *) ac_default_emit_gnu_hash=0 ;;
++esac
++
+ AM_BINUTILS_WARNINGS
+
+ AM_LC_MESSAGES
+@@ -394,6 +420,14 @@ AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
+ $ac_default_ld_z_relro,
+ [Define to 1 if you want to enable -z relro in ELF linker by default.])
+
++AC_DEFINE_UNQUOTED([DEFAULT_EMIT_SYSV_HASH],
++ [$ac_default_emit_sysv_hash],
++ [Define to 1 if you want to emit sysv hash in the ELF linker by default.])
++
++AC_DEFINE_UNQUOTED([DEFAULT_EMIT_GNU_HASH],
++ [$ac_default_emit_gnu_hash],
++ [Define to 1 if you want to emit gnu hash in the ELF linker by default.])
++
+ AC_SUBST(elf_list_options)
+ AC_SUBST(elf_shlib_list_options)
+ AC_SUBST(elf_plt_unwind_list_options)
+diff --git a/ld/ldmain.c b/ld/ldmain.c
+index 1e48b1a..579d961 100644
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -282,7 +282,8 @@ main (int argc, char **argv)
+ link_info.keep_memory = TRUE;
+ link_info.combreloc = TRUE;
+ link_info.strip_discarded = TRUE;
+- link_info.emit_hash = TRUE;
++ link_info.emit_hash = DEFAULT_EMIT_SYSV_HASH;
++ link_info.emit_gnu_hash = DEFAULT_EMIT_GNU_HASH;
+ link_info.callbacks = &link_callbacks;
+ link_info.input_bfds_tail = &link_info.input_bfds;
+ /* SVR4 linkers seem to set DT_INIT and DT_FINI based on magic _init
+--
+2.14.2
+
diff --git a/system/binutils/mips-illegal-memcpy.patch b/system/binutils/mips-illegal-memcpy.patch
new file mode 100644
index 000000000..d76af178a
--- /dev/null
+++ b/system/binutils/mips-illegal-memcpy.patch
@@ -0,0 +1,11 @@
+--- binutils-2.29/gas/config/tc-mips.c.old 2017-07-04 03:43:20.000000000 -0500
++++ binutils-2.29/gas/config/tc-mips.c 2017-08-25 17:21:51.449460074 -0500
+@@ -13956,7 +13956,7 @@
+ suffix = 0;
+ if (suffix)
+ {
+- memcpy (name + opend - 2, name + opend, length - opend + 1);
++ memmove (name + opend - 2, name + opend, length - opend + 1);
+ insn = (struct mips_opcode *) hash_find (hash, name);
+ if (insn)
+ {
diff --git a/system/binutils/remove-no-static-plt-test.patch b/system/binutils/remove-no-static-plt-test.patch
new file mode 100644
index 000000000..ab6bc02e6
--- /dev/null
+++ b/system/binutils/remove-no-static-plt-test.patch
@@ -0,0 +1,21 @@
+The compiler generates relative addresses instead of absolute, confusing the
+regex used. Disable this test since it would pass anyway.
+
+--- binutils-2.29/ld/testsuite/ld-x86-64/no-plt.exp.old 2017-07-04 08:43:21.000000000 +0000
++++ binutils-2.29/ld/testsuite/ld-x86-64/no-plt.exp 2017-08-19 18:13:48.566481023 +0000
+@@ -100,15 +100,6 @@
+ "no-plt-1c" \
+ ] \
+ [list \
+- "No PLT (static 1d)" \
+- "-static tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
+- tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
+- "" \
+- {dummy.s} \
+- {{readelf -Wr no-plt-1d.rd} {objdump -dwrj.text no-plt-1d.dd}} \
+- "no-plt-1d" \
+- ] \
+- [list \
+ "No PLT (PIE 1e)" \
+ "-pie tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
+ tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
diff --git a/system/binutils/remove-pr19553c-test.patch b/system/binutils/remove-pr19553c-test.patch
new file mode 100644
index 000000000..7e5b76ab0
--- /dev/null
+++ b/system/binutils/remove-pr19553c-test.patch
@@ -0,0 +1,14 @@
+This test requires symbol versioning which the musl libc does not support.
+
+--- binutils-2.29/ld/testsuite/ld-elf/indirect.exp.old 2017-07-04 08:43:21.000000000 +0000
++++ binutils-2.29/ld/testsuite/ld-elf/indirect.exp 2017-08-19 05:00:13.086002872 +0000
+@@ -186,9 +186,6 @@
+ {"Run with libpr19553b.so"
+ "-Wl,--no-as-needed tmpdir/libpr19553b.so tmpdir/libpr19553d.so -Wl,-rpath-link,." ""
+ {pr19553a.c} "pr19553b" "pr19553b.out"}
+- {"Run with libpr19553c.so"
+- "-Wl,--no-as-needed tmpdir/libpr19553c.so tmpdir/libpr19553b.so tmpdir/libpr19553d.so" ""
+- {pr19553a.c} "pr19553c" "pr19553c.out"}
+ {"Run with libpr19553d.so"
+ "-Wl,--no-as-needed tmpdir/libpr19553d.so tmpdir/libpr19553b.so -Wl,-rpath-link,." ""
+ {pr19553a.c} "pr19553d" "pr19553d.out"}
diff --git a/system/binutils/remove-pr2404-tests.patch b/system/binutils/remove-pr2404-tests.patch
new file mode 100644
index 000000000..9efdf5242
--- /dev/null
+++ b/system/binutils/remove-pr2404-tests.patch
@@ -0,0 +1,73 @@
+These tests fail to link correctly on musl.
+
+--- binutils-2.29/ld/testsuite/ld-elf/shared.exp.old 2017-07-04 08:43:21.000000000 +0000
++++ binutils-2.29/ld/testsuite/ld-elf/shared.exp 2017-08-19 04:59:05.319481464 +0000
+@@ -375,15 +375,6 @@
+ {"Build needed3"
+ "tmpdir/needed3.o -Wl,--as-needed -Ltmpdir -lneeded3a -lneeded3b -lneeded1b" ""
+ {dummy.c} {} "needed3"}
+- {"Build libpr2404a.so"
+- "-shared" "-fPIC"
+- {pr2404a.c} {} "libpr2404a.so"}
+- {"Build libpr2404n.so"
+- "-shared -Wl,-z,now" "-fPIC"
+- {pr2404a.c} {} "libpr2404n.so"}
+- {"Build libpr2404b.a"
+- "" ""
+- {pr2404b.c} {} "libpr2404b.a"}
+ {"Build rdynamic-1"
+ "-Wl,--no-dynamic-linker,-export-dynamic,--gc-sections" "-ffunction-sections"
+ {rdynamic-1.c} {{readelf {-s} rdynamic-1.rd}} "rdynamic-1"}
+@@ -531,12 +522,6 @@
+ [list "Run relmain" \
+ "-Wl,--no-as-needed,-rpath=tmpdir -Ltmpdir -lrel" "" \
+ {relmain.c} "relmain" "relmain.out" ] \
+- [list "Run pr2404" \
+- "-Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404a.so" "" \
+- {dummy.c} "pr2404" "pr2404.out" ] \
+- [list "Run pr2404n" \
+- "-Wl,-z,now -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404n.so" "" \
+- {dummy.c} "pr2404n" "pr2404.out" ] \
+ [list "Run pr18458" \
+ "-Wl,--no-as-needed,-z,now tmpdir/libpr18458a.so tmpdir/libpr18458b.so" "" \
+ {pr18458c.c} "pr18458" "pass.out" ] \
+@@ -675,14 +660,6 @@
+ || [istarget *-*-gnu*] } {
+ run_cc_link_tests [list \
+ [list \
+- "Build libpr2404b.a with PIE" \
+- "" \
+- "-fPIE" \
+- { pr2404b.c } \
+- {} \
+- "libpr2404b.a" \
+- ] \
+- [list \
+ "Build pr19579a.o" \
+ "" "-fPIE" \
+ {pr19579a.c} \
+@@ -717,24 +694,6 @@
+ "-fPIE" \
+ ] \
+ [list \
+- "Run pr2404 with PIE" \
+- "-pie -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404a.so" \
+- "" \
+- { dummy.c } \
+- "pr2404pie" \
+- "pr2404.out" \
+- "-fPIE" \
+- ] \
+- [list \
+- "Run pr2404 with PIE (-z now)" \
+- "-pie -Wl,-z,now -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404n.so" \
+- "" \
+- { dummy.c } \
+- "pr2404pien" \
+- "pr2404.out" \
+- "-fPIE" \
+- ] \
+- [list \
+ "Run pr18718" \
+ "" \
+ "" \
diff --git a/system/build-tools/APKBUILD b/system/build-tools/APKBUILD
index 2df7bf5a8..379f1a11b 100644
--- a/system/build-tools/APKBUILD
+++ b/system/build-tools/APKBUILD
@@ -3,7 +3,7 @@
pkgname=build-tools
pkgver=1.0
-pkgrel=3
+pkgrel=4
pkgdesc="Meta-package for user development utilities"
url="https://adelielinux.org/"
arch="noarch"
@@ -13,7 +13,7 @@ depends="bash
make
diffutils patch
fortify-headers linux-headers
- mawk bison flex sed
+ mawk sed
bzip2 gzip unzip xz
abuild"
[ "${CBUILD}" != "${CHOST}" ] || depends="$depends
diff --git a/system/clang/APKBUILD b/system/clang/APKBUILD
new file mode 100644
index 000000000..d23bb3675
--- /dev/null
+++ b/system/clang/APKBUILD
@@ -0,0 +1,103 @@
+# Contributor Travis Tilley <ttilley@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=clang
+# Note: Update together with llvm.
+pkgver=4.0.0
+pkgrel=0
+_llvmver=${pkgver%%.*}
+pkgdesc="A C language family front-end for LLVM"
+arch="all"
+url="http://llvm.org/"
+license="UOI-NCSA"
+makedepends="
+ cmake
+ isl-dev
+ libedit-dev
+ libxml2-dev
+ libxml2-utils
+ llvm-dev>=$_llvmver
+ llvm-static>=$_llvmver
+ llvm-test-utils>=$_llvmver
+ "
+depends_dev="$pkgname=$pkgver-r$pkgrel"
+subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs
+ $pkgname-analyzer::noarch"
+source="https://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.xz
+ clang-0001-Add-Alpine-Linux-distro.patch
+ clang-0002-Use-z-relro-on-Alpine-Linux.patch
+ clang-0003-Use-hash-style-gnu-for-Alpine-Linux.patch
+ clang-0004-Add-musl-targets.patch
+ clang-0005-Enable-PIE-by-default-for-alpine-linux.patch
+ clang-0006-Link-with-z-now-by-default-for-Alpine-Linux.patch
+ clang-0007-Enable-stack-protector-by-default-for-alpine-linux.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:-Alpine} \
+ -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
+ make
+}
+
+check() {
+ cd "$builddir"/build
+
+ make check-clang
+}
+
+package() {
+ cd "$builddir"/build
+
+ make DESTDIR="$pkgdir" install
+ install -m 644 lib/libclang.a "$pkgdir"/usr/lib
+ mkdir -p "$pkgdir"/etc
+ cat >"$pkgdir"/etc/alpine-release <<-EOF
+Adélie Linux 1.0 (like Alpine 3.8)
+EOF
+}
+
+static() {
+ pkgdesc="Static libraries for clang"
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
+}
+
+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="a0d9972ec337a5c105fcbe7abc4076ba1e580f28908a3318f43bbfe59143f446ed5b78dad210f624145d7e5a3d56c15bfead78826c068422b60120fa1cfa482a cfe-4.0.0.src.tar.xz
+4014984a187e4d0331d8315727d1b831e573843cd8d113df43424524cb348bc73ce3d12783351d9a14f9fd14111d75ce71d8f2a85d82b6437a61b11d85796cfb clang-0001-Add-Alpine-Linux-distro.patch
+53741890ec3805dd0d5a930ed526cb5bac5f75c459c6910c9461017719186383cf54638af4eea7a38eb7f9f423b18086bd5584b11f7e4babf6cd0edf8b4f4f48 clang-0002-Use-z-relro-on-Alpine-Linux.patch
+f06e351785d5755827459f17d3533415772ba84b4fbd4e49f418bafd20394e98d42b33a94aa34cff2a7b54c79cf06a6f5d382af5a55cba63a81116f0568d4b25 clang-0003-Use-hash-style-gnu-for-Alpine-Linux.patch
+2998ab2dfbc3d5629dd7e65e7e39dc0ab96f61e24733cb8d2d4faee50a89f0f159ad44d10182ed4c96f060180f4e22510881f4e9eb00ced01278bde99adf3389 clang-0004-Add-musl-targets.patch
+6215080a796fa1fc6f7634781ef77fc245037880dbf075a656823aae5f9f4911294dc6d61172db399b063adbe445c38b73cec12fc66dbe16bd9d84dc58035846 clang-0005-Enable-PIE-by-default-for-alpine-linux.patch
+d151a6ecca470abb1f4dbc06910155db0688322475655e28cdcb9c0b21930c8bcaf166e9df9fc9dca1be654cf497587961e461d91ee2871fdf454bbd33c5fffe clang-0006-Link-with-z-now-by-default-for-Alpine-Linux.patch
+f8c46bb64202c9233595362eb54288c30fbd28309308cbcafe1802dc50ffd676c7a70e6cbdbfd73464f872b40a90acd2eb736dcc9622fd434dbd44a5b0005027 clang-0007-Enable-stack-protector-by-default-for-alpine-linux.patch"
diff --git a/system/clang/clang-0001-Add-Alpine-Linux-distro.patch b/system/clang/clang-0001-Add-Alpine-Linux-distro.patch
new file mode 100644
index 000000000..f69baf5b8
--- /dev/null
+++ b/system/clang/clang-0001-Add-Alpine-Linux-distro.patch
@@ -0,0 +1,37 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Add Alpine Linux distro
+
+--- a/include/clang/Driver/Distro.h
++++ b/include/clang/Driver/Distro.h
+@@ -26,6 +26,7 @@
+ // 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().
++ AlpineLinux,
+ ArchLinux,
+ DebianLenny,
+ DebianSqueeze,
+@@ -97,6 +98,10 @@
+ /// @name Convenience Predicates
+ /// @{
+
++ bool IsAlpineLinux() const {
++ return DistroVal == AlpineLinux;
++ }
++
+ bool IsRedhat() const {
+ return DistroVal == Fedora || (DistroVal >= RHEL5 && DistroVal <= RHEL7);
+ }
+--- a/lib/Driver/Distro.cpp
++++ b/lib/Driver/Distro.cpp
+@@ -128,6 +128,9 @@
+ if (VFS.exists("/etc/arch-release"))
+ return Distro::ArchLinux;
+
++ if (VFS.exists("/etc/alpine-release"))
++ return Distro::AlpineLinux;
++
+ return Distro::UnknownDistro;
+ }
diff --git a/system/clang/clang-0002-Use-z-relro-on-Alpine-Linux.patch b/system/clang/clang-0002-Use-z-relro-on-Alpine-Linux.patch
new file mode 100644
index 000000000..45fce6e13
--- /dev/null
+++ b/system/clang/clang-0002-Use-z-relro-on-Alpine-Linux.patch
@@ -0,0 +1,16 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Use "-z relro" on Alpine Linux
+
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -4112,7 +4112,7 @@
+
+ Distro Distro(D.getVFS());
+
+- if (Distro.IsOpenSUSE() || Distro.IsUbuntu()) {
++ if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("relro");
+ }
diff --git a/system/clang/clang-0003-Use-hash-style-gnu-for-Alpine-Linux.patch b/system/clang/clang-0003-Use-hash-style-gnu-for-Alpine-Linux.patch
new file mode 100644
index 000000000..0b6632328
--- /dev/null
+++ b/system/clang/clang-0003-Use-hash-style-gnu-for-Alpine-Linux.patch
@@ -0,0 +1,16 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Use --hash-style=gnu for Alpine Linux
+
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -4132,7 +4132,7 @@
+ // ABI requires a mapping between the GOT and the symbol table.
+ // Android loader does not support .gnu.hash.
+ if (!IsMips && !IsAndroid) {
+- if (Distro.IsRedhat() || Distro.IsOpenSUSE() ||
++ if (Distro.IsRedhat() || Distro.IsOpenSUSE() || Distro.IsAlpineLinux() ||
+ (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick))
+ ExtraOpts.push_back("--hash-style=gnu");
+
diff --git a/system/clang/clang-0004-Add-musl-targets.patch b/system/clang/clang-0004-Add-musl-targets.patch
new file mode 100644
index 000000000..d77294980
--- /dev/null
+++ b/system/clang/clang-0004-Add-musl-targets.patch
@@ -0,0 +1,116 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Add musl targets
+
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -1644,7 +1644,8 @@
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
+- if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
++ if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF ||
++ TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF) {
+ TripleAliases.append(begin(ARMHFTriples), end(ARMHFTriples));
+ } else {
+ TripleAliases.append(begin(ARMTriples), end(ARMTriples));
+@@ -1653,7 +1654,8 @@
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ LibDirs.append(begin(ARMebLibDirs), end(ARMebLibDirs));
+- if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
++ if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF ||
++ TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF) {
+ TripleAliases.append(begin(ARMebHFTriples), end(ARMebHFTriples));
+ } else {
+ TripleAliases.append(begin(ARMebTriples), end(ARMebTriples));
+@@ -3956,7 +3958,8 @@
+ // regardless of what the actual target triple is.
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+- if (TargetEnvironment == llvm::Triple::GNUEABIHF) {
++ if (TargetEnvironment == llvm::Triple::GNUEABIHF ||
++ TargetEnvironment == llvm::Triple::MuslEABIHF) {
+ if (D.getVFS().exists(SysRoot + "/lib/arm-linux-gnueabihf"))
+ return "arm-linux-gnueabihf";
+ } else {
+@@ -3966,7 +3969,8 @@
+ break;
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+- if (TargetEnvironment == llvm::Triple::GNUEABIHF) {
++ if (TargetEnvironment == llvm::Triple::GNUEABIHF ||
++ TargetEnvironment == llvm::Triple::MuslEABIHF) {
+ if (D.getVFS().exists(SysRoot + "/lib/armeb-linux-gnueabihf"))
+ return "armeb-linux-gnueabihf";
+ } else {
+@@ -4334,6 +4338,12 @@
+ ArchName = "armeb";
+ IsArm = true;
+ break;
++ case llvm::Triple::ppc:
++ ArchName = "powerpc";
++ break;
++ case llvm::Triple::x86:
++ ArchName = "i386";
++ break;
+ default:
+ ArchName = Triple.getArchName().str();
+ }
+@@ -4544,7 +4554,8 @@
+ break;
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+- if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
++ if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF ||
++ getTriple().getEnvironment() == llvm::Triple::MuslEABIHF)
+ MultiarchIncludeDirs = ARMHFMultiarchIncludeDirs;
+ else
+ MultiarchIncludeDirs = ARMMultiarchIncludeDirs;
+
+--- a/lib/Driver/Tools.cpp
++++ b/lib/Driver/Tools.cpp
+@@ -953,6 +953,7 @@
+ case llvm::Triple::FreeBSD:
+ switch (Triple.getEnvironment()) {
+ case llvm::Triple::GNUEABIHF:
++ case llvm::Triple::MuslEABIHF:
+ ABI = FloatABI::Hard;
+ break;
+ default:
+@@ -9198,6 +9200,8 @@
+ switch (getToolChain().getTriple().getEnvironment()) {
+ case llvm::Triple::GNUEABIHF:
+ case llvm::Triple::GNUEABI:
++ case llvm::Triple::MuslEABIHF:
++ case llvm::Triple::MuslEABI:
+ case llvm::Triple::EABI:
+ CmdArgs.push_back("-meabi=5");
+ break;
+@@ -9541,10 +9545,12 @@
+ switch (getToolChain().getTriple().getEnvironment()) {
+ case llvm::Triple::EABI:
+ case llvm::Triple::GNUEABI:
++ case llvm::Triple::MuslEABI:
+ CmdArgs.push_back("armelf_nbsd_eabi");
+ break;
+ case llvm::Triple::EABIHF:
+ case llvm::Triple::GNUEABIHF:
++ case llvm::Triple::MuslEABIHF:
+ CmdArgs.push_back("armelf_nbsd_eabihf");
+ break;
+ default:
+@@ -9559,10 +9565,12 @@
+ switch (getToolChain().getTriple().getEnvironment()) {
+ case llvm::Triple::EABI:
+ case llvm::Triple::GNUEABI:
++ case llvm::Triple::MuslEABI:
+ CmdArgs.push_back("armelfb_nbsd_eabi");
+ break;
+ case llvm::Triple::EABIHF:
+ case llvm::Triple::GNUEABIHF:
++ case llvm::Triple::MuslEABIHF:
+ CmdArgs.push_back("armelfb_nbsd_eabihf");
+ break;
+ default:
diff --git a/system/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch b/system/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch
new file mode 100644
index 000000000..7cd79addc
--- /dev/null
+++ b/system/clang/clang-0005-Enable-PIE-by-default-for-alpine-linux.patch
@@ -0,0 +1,55 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Enable PIE by default for Alpine Linux
+
+Alpine Linux uses PIE by default.
+
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -4721,7 +4721,10 @@
+ }
+ }
+
+-bool Linux::isPIEDefault() const { return getSanitizerArgs().requiresPIE(); }
++bool Linux::isPIEDefault() const {
++ return getSanitizerArgs().requiresPIE() ||
++ Linux::getTriple().getVendorName().compare("alpine") == 0;
++}
+
+ SanitizerMask Linux::getSupportedSanitizers() const {
+ const bool IsX86 = getTriple().getArch() == llvm::Triple::x86;
+--- a/lib/Driver/Tools.cpp
++++ b/lib/Driver/Tools.cpp
+@@ -9258,7 +9258,9 @@
+ if (!D.SysRoot.empty())
+ CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
+
+- if (IsPIE)
++ if (Args.hasArg(options::OPT_nopie))
++ CmdArgs.push_back("-nopie");
++ else if (IsPIE)
+ CmdArgs.push_back("-pie");
+
+ CmdArgs.push_back("--eh-frame-hdr");
+--- a/test/Driver/pic.c
++++ b/test/Driver/pic.c
+@@ -244,6 +244,18 @@
+ // RUN: %clang %s -target i386-pc-openbsd -nopie -### 2>&1 \
+ // RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD
+ //
++// On Alpine Linux, we want similar PIE-by-default behavior
++// RUN: %clang -c %s -target x86_64-alpine-linux-musl -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang -c %s -target i686-alpine-linux-musl -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang -c %s -target armv6-alpine-linux-musleabihf -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang -c %s -target armv7-alpine-linux-musleabihf -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-PIE2
++// RUN: %clang %s -target x86_64-alpine-linux-musl -nopie -### 2>&1 \
++// RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD
++//
+ // On Android PIC is enabled by default
+ // RUN: %clang -c %s -target i686-linux-android -### 2>&1 \
+ // RUN: | FileCheck %s --check-prefix=CHECK-PIC2
diff --git a/system/clang/clang-0006-Link-with-z-now-by-default-for-Alpine-Linux.patch b/system/clang/clang-0006-Link-with-z-now-by-default-for-Alpine-Linux.patch
new file mode 100644
index 000000000..90de948f6
--- /dev/null
+++ b/system/clang/clang-0006-Link-with-z-now-by-default-for-Alpine-Linux.patch
@@ -0,0 +1,19 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Link with -z now by default for Alpine Linux
+
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -4116,6 +4116,11 @@
+
+ Distro Distro(D.getVFS());
+
++ if (Distro.IsAlpineLinux()) {
++ ExtraOpts.push_back("-z");
++ ExtraOpts.push_back("now");
++ }
++
+ if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("relro");
diff --git a/system/clang/clang-0007-Enable-stack-protector-by-default-for-alpine-linux.patch b/system/clang/clang-0007-Enable-stack-protector-by-default-for-alpine-linux.patch
new file mode 100644
index 000000000..3487799b1
--- /dev/null
+++ b/system/clang/clang-0007-Enable-stack-protector-by-default-for-alpine-linux.patch
@@ -0,0 +1,54 @@
+From: Natanael Copa <ncopa@alpinelinux.org>
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 16 Apr 2017 16:49:00 +0100
+Subject: [PATCH] Enable stack protector by default for Alpine Linux
+
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -4866,6 +4866,13 @@
+ CmdArgs.push_back("-lunwind");
+ }
+
++unsigned Linux::GetDefaultStackProtectorLevel(bool KernelOrKext) const {
++ StringRef VendorName = Linux::getTriple().getVendorName();
++ if (VendorName.compare("alpine") == 0)
++ return 2;
++ return 1;
++}
++
+ /// DragonFly - DragonFly tool chain which can call as(1) and ld(1) directly.
+
+ DragonFly::DragonFly(const Driver &D, const llvm::Triple &Triple,
+--- a/lib/Driver/ToolChains.h
++++ b/lib/Driver/ToolChains.h
+@@ -880,6 +880,7 @@
+ void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const override;
+ bool isPIEDefault() const override;
++ unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const override;
+ SanitizerMask getSupportedSanitizers() const override;
+ void addProfileRTLibs(const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs) const override;
+--- a/test/Driver/stack-protector.c
++++ b/test/Driver/stack-protector.c
+@@ -24,6 +24,20 @@
+ // SSP-ALL: "-stack-protector" "3"
+ // SSP-ALL-NOT: "-stack-protector-buffer-size"
+
++// RUN: %clang -target x86_64-alpine-linux-musl -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE
++// ALPINE: "-stack-protector" "2"
++
++// RUN: %clang -target x86_64-alpine-linux-musl -fstack-protector -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE_SPS
++// ALPINE_SPS: "-stack-protector" "2"
++
++// RUN: %clang -target x86_64-alpine-linux-musl -fstack-protector-all -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE_ALL
++// ALPINE_ALL: "-stack-protector" "3"
++// ALPINE_ALL-NOT: "-stack-protector-buffer-size"
++
++// RUN: %clang -target x86_64-alpine-linux-musl -fno-stack-protector -### %s 2>&1 | FileCheck %s -check-prefix=ALPINE_NOSSP
++// ALPINE_NOSSP-NOT: "-stack-protector"
++// ALPINE_NOSSP-NOT: "-stack-protector-buffer-size"
++
+ // RUN: %clang -target x86_64-scei-ps4 -### %s 2>&1 | FileCheck %s -check-prefix=SSP-PS4
+ // RUN: %clang -target x86_64-scei-ps4 -fstack-protector -### %s 2>&1 | FileCheck %s -check-prefix=SSP-PS4
+ // SSP-PS4: "-stack-protector" "2"
diff --git a/system/consolekit2/0001-busybox-reboot-and-poweroff-support.patch b/system/consolekit2/0001-busybox-reboot-and-poweroff-support.patch
new file mode 100644
index 000000000..2db9f032b
--- /dev/null
+++ b/system/consolekit2/0001-busybox-reboot-and-poweroff-support.patch
@@ -0,0 +1,40 @@
+From 5e557dd212657f7e75a0c4bd70d11ca06ccb3f84 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Mon, 4 Apr 2011 18:46:25 +0000
+Subject: [PATCH] busybox reboot and poweroff support
+
+---
+ tools/linux/ck-system-restart | 3 +++
+ tools/linux/ck-system-stop | 3 +++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/tools/linux/ck-system-restart b/tools/linux/ck-system-restart
+index 8e0664e..5cabb3d 100755
+--- a/tools/linux/ck-system-restart
++++ b/tools/linux/ck-system-restart
+@@ -7,6 +7,9 @@ if [ -x "/sbin/shutdown" ] ; then
+ elif [ -x "/usr/sbin/shutdown" ] ; then
+ /usr/sbin/shutdown -r now
+ exit $?
++elif [ -x "/sbin/reboot" ]; then
++ /sbin/reboot
++ exit $?
+ else
+ exit 1
+ fi
+diff --git a/tools/linux/ck-system-stop b/tools/linux/ck-system-stop
+index e26bca3..a0be3ac 100755
+--- a/tools/linux/ck-system-stop
++++ b/tools/linux/ck-system-stop
+@@ -7,6 +7,9 @@ if [ -x "/sbin/shutdown" ] ; then
+ elif [ -x "/usr/sbin/shutdown" ] ; then
+ /usr/sbin/shutdown -h now
+ exit $?
++elif [ -x "/sbin/poweroff" ] ; then
++ /sbin/poweroff
++ exit $?
+ else
+ exit 1
+ fi
+--
+1.7.4.2
diff --git a/system/consolekit2/APKBUILD b/system/consolekit2/APKBUILD
new file mode 100644
index 000000000..3273092ed
--- /dev/null
+++ b/system/consolekit2/APKBUILD
@@ -0,0 +1,63 @@
+# Contributor: Bart Ribbers <bribbers@disroot.org>
+# Maintainer: Bart Ribbers <bribbers@disroot.org>
+pkgbase=ConsoleKit2
+pkgname=consolekit2
+pkgver=1.2.0
+pkgrel=6
+pkgdesc="A framework for defining and tracking users, login sessions, and seats"
+provides="consolekit=$pkgver"
+replaces=consolekit
+arch=all
+url="https://consolekit2.github.io/ConsoleKit2"
+license=GPL2
+depends="polkit eudev"
+makedepends="git automake autoconf gettext-dev glib-dev zlib-dev libxslt-dev
+ polkit-dev eudev-dev libdrm-dev libnih-dev libtool linux-pam-dev
+ xorg-server-dev acl-dev xmlto docbook-xml libevdev-dev"
+checkdepends="libxml2-utils"
+source="$pkgname-$pkgver.tar.gz::https://github.com/${pkgname}/${pkgname}/archive/${pkgver}.tar.gz
+ consolekit2.initd
+ ac_disable_static.patch
+ 0001-busybox-reboot-and-poweroff-support.patch
+ add-listseats.patch
+ pam-foreground-compat.ck"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-openrc"
+builddir="$srcdir"/$pkgbase-$pkgver
+
+prepare() {
+ default_prepare
+
+ cd "$builddir"
+
+ NOCONFIGURE=1 ./autogen.sh
+}
+
+build() {
+ cd "$builddir"
+ XMLTO_FLAGS='--skip-validation' ./configure \
+ --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --enable-pam-module --enable-udev-acl \
+ --enable-tests --enable-docbook-docs --enable-polkit
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -m 755 "$srcdir"/pam-foreground-compat.ck \
+ "$pkgdir"/usr/lib/ConsoleKit/run-session.d/
+ install -D -m755 "$srcdir"/consolekit2.initd \
+ "$pkgdir"/etc/init.d/consolekit
+}
+sha512sums="30f2ceec14044669f40676e9b17513874350e2b70f0a918be934f7e64309c8595dbec4ac0937044c98dda51eb97c99443dc9d1de33f08365d72da8600296ad78 consolekit2-1.2.0.tar.gz
+8c16c452707475bdd4a50d3ade367d52ad92a6560be48b4e21e5b5eadef6e56c39d3d03d3a64f9b45a59eca50179cf5aa9c11978904d5d101db7498fb9bc0339 consolekit2.initd
+0f628fd1589b1790ad9adcb2278de504b75cc6b4ec7284a1cbda44ebd34b9966014989f47f343cb936d8503acc4eeec43ddff07cb11f55388e47256b8420e2e8 ac_disable_static.patch
+ec0c88e640afac0561c84131d63fa8c9e2e29611b789ae5c163cd11465b22017602d88dc853866624f57bce2ee466ab63af075d083a9ba6e87327ad8d0a0769f 0001-busybox-reboot-and-poweroff-support.patch
+c2adfad3f7f6d5f880e0b7e7ed99f62bd7f2bd510492bba5634f0b2391bacd43cb3246a072400392c508d42acdba114cb920f5d498b0c4339d86cf19f691b6fa add-listseats.patch
+3b114fbbe74cfba0bfd4dad0eb1b85d08b4979a998980c1cbcd7f44b8a16b0ceca224680d4f4a1644cd24698f8817e5e8bdfcdc4ead87a122d0e323142f47910 pam-foreground-compat.ck"
diff --git a/system/consolekit2/ac_disable_static.patch b/system/consolekit2/ac_disable_static.patch
new file mode 100644
index 000000000..38d6f12ac
--- /dev/null
+++ b/system/consolekit2/ac_disable_static.patch
@@ -0,0 +1,13 @@
+diff --git a/configure.ac b/configure.ac
+index 071a0d8..7469697 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -30,7 +30,6 @@ AC_SEARCH_LIBS([strerror],[cposix])
+ AC_PROG_CC
+ AM_PROG_CC_C_O
+ AC_HEADER_STDC
+-AC_DISABLE_STATIC
+-LT_INIT
++LT_INIT([disable-static])
+ AC_HEADER_STDC
+ AC_FUNC_FORK
diff --git a/system/consolekit2/add-listseats.patch b/system/consolekit2/add-listseats.patch
new file mode 100644
index 000000000..44bc034c8
--- /dev/null
+++ b/system/consolekit2/add-listseats.patch
@@ -0,0 +1,100 @@
+diff --git a/data/ConsoleKit.conf b/data/ConsoleKit.conf
+index 6c10476..216a0e9 100644
+--- a/data/ConsoleKit.conf
++++ b/data/ConsoleKit.conf
+@@ -80,6 +80,9 @@
+ send_member="CloseSession"/>
+ <allow send_destination="org.freedesktop.ConsoleKit"
+ send_interface="org.freedesktop.ConsoleKit.Manager"
++ send_member="ListSeats"/>
++ <allow send_destination="org.freedesktop.ConsoleKit"
++ send_interface="org.freedesktop.ConsoleKit.Manager"
+ send_member="GetSeats"/>
+ <allow send_destination="org.freedesktop.ConsoleKit"
+ send_interface="org.freedesktop.ConsoleKit.Manager"
+diff --git a/src/ck-manager.c b/src/ck-manager.c
+index 4722bdb..7d8b8b2 100644
+--- a/src/ck-manager.c
++++ b/src/ck-manager.c
+@@ -3841,6 +3841,44 @@ dbus_unlock_session (ConsoleKitManager *ckmanager,
+ }
+
+ static gboolean
++dbus_list_seats (ConsoleKitManager *ckmanager,
++ GDBusMethodInvocation *context)
++{
++ CkManager *manager;
++ GVariantBuilder seat_builder;
++ GVariant *seat;
++ GHashTableIter seat_iter;
++ const gchar *key;
++ CkSeat *value;
++
++ TRACE ();
++
++ manager = CK_MANAGER (ckmanager);
++
++ g_return_val_if_fail (CK_IS_MANAGER (manager), FALSE);
++
++ /* if we don't have seats, we need to return NULL */
++ if (g_hash_table_size (manager->priv->seats) == 0) {
++ throw_error (context, CK_MANAGER_ERROR_NO_SEATS, _("User has no seats"));
++ return TRUE;
++ }
++
++ g_variant_builder_init (&seat_builder, G_VARIANT_TYPE_ARRAY);
++
++ g_hash_table_iter_init (&seat_iter, manager->priv->seats);
++ while (g_hash_table_iter_next (&seat_iter, &key, &value)) {
++ seat = g_variant_new("(so)",
++ console_kit_seat_get_name( CONSOLE_KIT_SEAT(value) ),
++ key);
++
++ g_variant_builder_add_value (&seat_builder, seat);
++ }
++
++ console_kit_manager_complete_list_seats (ckmanager, context, g_variant_builder_end (&seat_builder));
++ return TRUE;
++}
++
++static gboolean
+ dbus_get_seats (ConsoleKitManager *ckmanager,
+ GDBusMethodInvocation *context)
+ {
+@@ -4134,6 +4172,7 @@ ck_manager_iface_init (ConsoleKitManagerIface *iface)
+ iface->handle_stop = dbus_stop;
+ iface->handle_suspend = dbus_suspend;
+ iface->handle_close_session = dbus_close_session;
++ iface->handle_list_seats = dbus_list_seats;
+ iface->handle_get_seats = dbus_get_seats;
+ iface->handle_get_sessions = dbus_get_sessions;
+ iface->handle_get_sessions_for_unix_user = dbus_get_sessions_for_unix_user;
+diff --git a/src/org.freedesktop.ConsoleKit.Manager.xml b/src/org.freedesktop.ConsoleKit.Manager.xml
+index a44880c..024a3e2 100644
+--- a/src/org.freedesktop.ConsoleKit.Manager.xml
++++ b/src/org.freedesktop.ConsoleKit.Manager.xml
+@@ -531,6 +531,24 @@
+ </doc:doc>
+ </method>
+
++ <method name="ListSeats">
++ <arg name="seats" direction="out" type="a(so)">
++ <doc:doc>
++ <doc:summary>an array of seat names and IDs</doc:summary>
++ </doc:doc>
++ </arg>
++ <doc:doc>
++ <doc:description>
++ <doc:para>Retrieves a list of all <doc:ref type="interface" to="Seat">Seats</doc:ref>
++ that are present on the system.</doc:para>
++ <doc:para>Like the logind method of the same name, this returns both the seat's name
++ (such as "seat0") and the D-Bus object path for the seat object that implements the
++ <doc:ref type="interface" to="Seat">Seat</doc:ref> interface.</doc:para>
++ </doc:description>
++ <doc:seealso><doc:ref type="method" to="Manager.GetSeats">GetSeats()</doc:ref></doc:seealso>
++ </doc:doc>
++ </method>
++
+ <method name="GetSeats">
+ <arg name="seats" direction="out" type="ao">
+ <doc:doc>
diff --git a/system/consolekit2/consolekit2.initd b/system/consolekit2/consolekit2.initd
new file mode 100644
index 000000000..697eea8f9
--- /dev/null
+++ b/system/consolekit2/consolekit2.initd
@@ -0,0 +1,9 @@
+#!/sbin/openrc-run
+
+description="Tracks sessions and seats"
+pidfile="/var/run/ConsoleKit/pid"
+command="/usr/sbin/console-kit-daemon"
+
+depend() {
+ need dbus
+}
diff --git a/system/consolekit2/pam-foreground-compat.ck b/system/consolekit2/pam-foreground-compat.ck
new file mode 100644
index 000000000..c9255503c
--- /dev/null
+++ b/system/consolekit2/pam-foreground-compat.ck
@@ -0,0 +1,17 @@
+#!/bin/sh
+TAGDIR=/var/run/console
+
+[ -n "$CK_SESSION_USER_UID" ] || exit 1
+[ "$CK_SESSION_IS_LOCAL" = "true" ] || exit 0
+
+TAGFILE="$TAGDIR/`getent passwd $CK_SESSION_USER_UID | cut -f 1 -d:`"
+
+if [ "$1" = "session_added" ]; then
+ mkdir -p "$TAGDIR"
+ echo "$CK_SESSION_ID" >> "$TAGFILE"
+fi
+
+if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then
+ sed -i "\%^$CK_SESSION_ID\$%d" "$TAGFILE"
+ [ -s "$TAGFILE" ] || rm -f "$TAGFILE"
+fi
diff --git a/system/cups/APKBUILD b/system/cups/APKBUILD
new file mode 100644
index 000000000..ebe30a0c7
--- /dev/null
+++ b/system/cups/APKBUILD
@@ -0,0 +1,135 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=cups
+pkgver=2.2.5
+pkgrel=0
+pkgdesc="The CUPS Printing System"
+url="http://www.cups.org/"
+arch="all"
+license="GPL LGPL2+"
+# cupsUTF8ToCharset(CUPS_EUC_JP) of utfdemo.txt: FAIL (UTF-8 to EUC-JP on line 1)
+options="!check"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs ipptool $pkgname-client
+ $pkgname-lang $pkgname-openrc"
+depends_dev="openssl-dev zlib-dev"
+makedepends="$depends_dev libpaper-dev dbus-dev libjpeg-turbo-dev linux-headers
+ gnutls-dev"
+depends="cups-client poppler-utils openssl dbus"
+install="cups.pre-install"
+pkggroups="lp lpadmin"
+pkgusers="lp"
+source="https://github.com/apple/cups/releases/download/v$pkgver/cups-$pkgver-source.tar.gz
+ $pkgname.logrotate
+ cupsd.initd
+ cups-no-export-ssllibs.patch
+ default-config-no-gssapi.patch
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --libdir=/usr/lib \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-logdir=/var/log/cups \
+ --with-docdir=/usr/share/cups \
+ --with-rundir=/run/cups \
+ --with-cupsd-file-perm=0755 \
+ --with-cups-user=lp \
+ --with-cups-group=lp \
+ --with-system-groups=lpadmin \
+ --with-domainsocket=/run/cups/cups.sock \
+ --without-rcdir \
+ --without-php \
+ --enable-pam \
+ --enable-raw-printing \
+ --enable-dbus \
+ --with-dbusdir=/etc/dbus-1 \
+ --enable-libpaper \
+ --enable-ssl=yes \
+ --enable-gnutls \
+ --disable-launchd \
+ --with-optim="$CFLAGS"
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+
+ make BUILDROOT="$pkgdir" install
+
+ cd "$pkgdir"
+
+ # These no longer works since CUPS >= 1.6 (http://www.cups.org/str.php?L4120).
+ rm -rf usr/share/cups/banners/* \
+ usr/share/cups/data/testprint
+
+ install -D -m 644 "$srcdir"/cups.logrotate etc/logrotate.d/cups
+ install -D -m 755 "$srcdir"/cupsd.initd etc/init.d/cupsd
+
+ if [ -e usr/share/applications/cups.desktop ] ; then
+ sed -i 's|^Exec=htmlview http://localhost:631/|Exec=xdg-open http://localhost:631/|g' \
+ usr/share/applications/cups.desktop
+ fi
+ find usr/share/cups/model -name "*.ppd" | xargs gzip -n9f
+}
+
+libs() {
+ pkgdesc="CUPS libraries"
+ depends=""
+ replaces="libcups"
+
+ cd "$pkgdir"
+ _mv usr/lib/*.so*
+ install -d "$pkgdir"/etc/cups
+}
+
+ipptool() {
+ pkgdesc="Perform internet printing protocol requests"
+ depends=""
+
+ cd "$pkgdir"
+ _mv usr/bin/ipptool \
+ usr/share/cups/ipptool
+}
+
+client() {
+ pkgdesc="CUPS command-line client programs"
+ depends=""
+
+ cd "$pkgdir"
+ _mv usr/bin \
+ usr/sbin/accept \
+ usr/sbin/cupsaccept \
+ usr/sbin/cupsaddsmb \
+ usr/sbin/cupsctl \
+ usr/sbin/cupsdisable \
+ usr/sbin/cupsenable \
+ usr/sbin/lpadmin \
+ usr/sbin/lpc \
+ usr/sbin/lpinfo \
+ usr/sbin/lpmove \
+ usr/sbin/reject
+}
+
+_mv() {
+ local i; for i in "$@"; do
+ mkdir -p "$subpkgdir"/${i%/*}
+ mv "$pkgdir"/$i "$subpkgdir"/${i%/*}/
+ done
+}
+
+sha512sums="5c824e74e2679de360ff1f95aa74013ca2d6a88d11d18041e7a5b51746c2a21bbc10da785791ea4e40d316167560982466789767018bd02676cf810ad0c3a5c9 cups-2.2.5-source.tar.gz
+cf64211da59e79285f99d437c02fdd7db462855fb2920ec9563ba47bd8a9e5cbd10555094940ceedeb41ac805c4f0ddb9147481470112a11a76220d0298aef79 cups.logrotate
+2c2683f755a220166b3a1653fdd1a6daa9718c8f0bbdff2e2d5e61d1133306260d63a83d3ff41619b5cf84c4913fae5822b79553e2822858f38fa3613f4c7082 cupsd.initd
+7a8cd9ac33b0dd4627c72df4275db8ccd7cf8e201bce3833719b42f532f526bb347b842e3ea1ef0d61855b5c6e1088b5d20b68942f2c2c0acf504d8d9728efd3 cups-no-export-ssllibs.patch
+98bb97f4af69ea286fc3d398b8e57c32440e6b2d49fb7f79b418a4fe7f13441f3a610f65d3433d10d971ade808233c0b29b4d66160623ccaae919179384be918 default-config-no-gssapi.patch"
diff --git a/system/cups/cups-no-export-ssllibs.patch b/system/cups/cups-no-export-ssllibs.patch
new file mode 100644
index 000000000..e227bd182
--- /dev/null
+++ b/system/cups/cups-no-export-ssllibs.patch
@@ -0,0 +1,12 @@
+diff -up cups-1.5b1/config-scripts/cups-ssl.m4.no-export-ssllibs cups-1.5b1/config-scripts/cups-ssl.m4
+--- cups-1.6.2/config-scripts/cups-ssl.m4.no-export-ssllibs 2011-05-11 02:52:08.000000000 +0200
++++ cups-1.6.2/config-scripts/cups-ssl.m4 2011-05-23 17:47:27.000000000 +0200
+@@ -180,7 +180,7 @@
+ AC_SUBST(SSLFLAGS)
+ AC_SUBST(SSLLIBS)
+
+-EXPORT_SSLLIBS="$SSLLIBS"
++EXPORT_SSLLIBS=""
+ AC_SUBST(EXPORT_SSLLIBS)
+
+ dnl
diff --git a/system/cups/cups.logrotate b/system/cups/cups.logrotate
new file mode 100644
index 000000000..a50b058a3
--- /dev/null
+++ b/system/cups/cups.logrotate
@@ -0,0 +1,8 @@
+/var/log/cups/*log {
+ missingok
+ notifempty
+ delaycompress
+ postrotate
+ /etc/init.d/cupsd --quiet --ifstarted reload
+ endscript
+}
diff --git a/system/cups/cups.pre-install b/system/cups/cups.pre-install
new file mode 100644
index 000000000..cdb75cac5
--- /dev/null
+++ b/system/cups/cups.pre-install
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+addgroup -S lpadmin 2>/dev/null
+addgroup -S lp 2>/dev/null
+adduser -S -G lp -g lp lp 2>/dev/null
+addgroup lp lp 2>/dev/null
+
+exit 0
diff --git a/system/cups/cupsd.initd b/system/cups/cupsd.initd
new file mode 100644
index 000000000..ff0998784
--- /dev/null
+++ b/system/cups/cupsd.initd
@@ -0,0 +1,44 @@
+#!/sbin/openrc-run
+
+name="CUPS"
+
+extra_commands="checkconfig"
+extra_started_commands="reload"
+
+description_checkconfig="Test the configuration file"
+description_reload="Reload"
+
+: ${cfgfile:="/etc/cups/cupsd.conf"}
+
+command="/usr/sbin/cupsd"
+command_args="-f -c $cfgfile"
+command_background="yes"
+
+pidfile="/run/cups/$RC_SVCNAME.pid"
+
+depend() {
+ use net
+ before nfs
+ need dbus
+ after logger
+}
+
+checkconfig() {
+ $command $command_args -t >/dev/null 2>&1 \
+ || $command $command_args -t
+}
+
+start_pre() {
+ checkconfig || return 1
+
+ checkpath -q -d -m 0775 -o root:lp /var/cache/cups
+ checkpath -q -d -m 0775 -o root:lp /var/cache/cups/rss
+ checkpath -q -d -m 0755 -o root:lp /run/cups
+ checkpath -q -d -m 0511 -o lp:lpadmin /run/cups/certs
+}
+
+reload() {
+ ebegin "Reloading $name"
+ start-stop-daemon --signal HUP --pidfile "$pidfile"
+ eend $?
+}
diff --git a/system/cups/default-config-no-gssapi.patch b/system/cups/default-config-no-gssapi.patch
new file mode 100644
index 000000000..b12c55ddf
--- /dev/null
+++ b/system/cups/default-config-no-gssapi.patch
@@ -0,0 +1,26 @@
+--- a/conf/cupsd.conf.in
++++ b/conf/cupsd.conf.in
+@@ -145,12 +145,12 @@
+
+ # Job-related operations must be done by the owner or an administrator...
+ <Limit Create-Job Print-Job Print-URI Validate-Job>
+- AuthType Negotiate
++ AuthType Default
+ Order deny,allow
+ </Limit>
+
+ <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
+- AuthType Negotiate
++ AuthType Default
+ Require user @OWNER @SYSTEM
+ Order deny,allow
+ </Limit>
+@@ -171,7 +171,7 @@
+
+ # Only the owner or an administrator can cancel or authenticate a job...
+ <Limit Cancel-Job CUPS-Authenticate-Job>
+- AuthType Negotiate
++ AuthType Default
+ Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
+ Order deny,allow
+ </Limit>
diff --git a/system/dash/APKBUILD b/system/dash/APKBUILD
new file mode 100644
index 000000000..f22c6c8eb
--- /dev/null
+++ b/system/dash/APKBUILD
@@ -0,0 +1,44 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=dash
+pkgver=0.5.9.1
+pkgrel=1
+pkgdesc="Small and fast POSIX-compliant shell"
+url="http://gondor.apana.org.au/~herbert/dash/"
+arch="all"
+license="GPL-2.0+"
+subpackages="$pkgname-binsh::noarch $pkgname-doc"
+source="http://gondor.apana.org.au/~herbert/$pkgname/files/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/ \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+ ./src/dash -c 'echo ok'
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install
+}
+
+binsh() {
+ pkgdesc="Use dash as /bin/sh"
+ provides="/bin/sh"
+ mkdir -p "$subpkgdir"/bin
+ ln -s dash "$subpkgdir"/bin/sh
+}
+
+sha512sums="d56a043b8fab4693d3f70cceb531c37174e7ded4acd5549e53048d7ce29125ff21d7e758f51a4a73e06250d051e246467039989275838c19a2579edea3f72b7d dash-0.5.9.1.tar.gz"
diff --git a/system/debianutils/APKBUILD b/system/debianutils/APKBUILD
index 37267b3ec..6c87f1867 100644
--- a/system/debianutils/APKBUILD
+++ b/system/debianutils/APKBUILD
@@ -2,14 +2,14 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=debianutils
pkgver=4.8.1.1
-pkgrel=1
+pkgrel=2
pkgdesc="Useful utilities from Debian"
url="https://packages.qa.debian.org/d/debianutils.html"
arch="all"
options="!check" # No test suite.
license="BSD-3 GPL-2.0"
-depends=""
-makedepends="mawk grep" # early package, declare these
+depends="coreutils mawk" # awk, cat, and rm are required by add-shell
+makedepends="grep" # early package, declare these
install=""
subpackages="$pkgname-doc $pkgname-which"
source="http://ftp.debian.org/debian/pool/main/d/$pkgname/${pkgname}_${pkgver}.tar.xz"
diff --git a/system/easy-kernel/APKBUILD b/system/easy-kernel/APKBUILD
index 75b891551..bfe1f5cbe 100644
--- a/system/easy-kernel/APKBUILD
+++ b/system/easy-kernel/APKBUILD
@@ -1,17 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=easy-kernel
-pkgver=4.14.8
-pkgrel=2
+_pkgname=easy-kernel
+pkgver=4.14.19
+pkgrel=4
+pkgname=$_pkgname-$pkgver-mc$pkgrel
pkgdesc="The Linux kernel, packaged for your convenience"
url="https://kernel.org/"
arch="all"
-options="!check !dbg !strip"
+options="!check !dbg !strip !tracedeps"
license="GPL-2.0"
depends=""
-makedepends="lzop openssl-dev"
+makedepends="bc gzip lzop openssl-dev xz"
install=""
-subpackages="$pkgname-modules"
+provides="easy-kernel=$pkgver-r$pkgrel"
+subpackages="$_pkgname-modules-$pkgver-mc$pkgrel:modules
+ $_pkgname-src-$pkgver-mc$pkgrel:src"
source="https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.tar.xz
https://mirrormaster.adelielinux.org/source/linux-4.14-mc$pkgrel.patch.xz
config-ppc64
@@ -42,22 +45,43 @@ package() {
make INSTALL_PATH="$pkgdir"/boot \
INSTALL_MOD_PATH="$pkgdir" \
install modules_install
+
+ if [ -f "$pkgdir"/boot/vmlinuz ]; then
+ mv "$pkgdir"/boot/vmlinuz \
+ "$pkgdir"/boot/vmlinuz-$pkgver-mc$pkgrel-easy
+ fi
+ if [ -f "$pkgdir"/boot/vmlinux ]; then
+ mv "$pkgdir"/boot/vmlinux \
+ "$pkgdir"/boot/vmlinux-$pkgver-mc$pkgrel-easy
+ fi
+
+ install -D "$builddir"/include/config/kernel.release \
+ "$pkgdir"/usr/share/kernel/easy-$pkgver-mc$pkgrel/kernel.release
}
modules() {
pkgdesc="Modules / device drivers for easy-kernel"
+ provides="easy-kernel-modules=$pkgver-r$pkgrel"
+ autodeps=0 # modules should not depend on src just for symlink
mkdir -p "$subpkgdir"/lib
mv "$pkgdir"/lib/modules "$subpkgdir"/lib/
+ rm "$subpkgdir"/lib/modules/$pkgver-mc$pkgrel-easy/build
+ rm "$subpkgdir"/lib/modules/$pkgver-mc$pkgrel-easy/source
+ ln -s "../../../usr/src/linux-$pkgver-mc$pkgrel" \
+ "$subpkgdir"/lib/modules/$pkgver-mc$pkgrel-easy/build
+ ln -s "../../../usr/src/linux-$pkgver-mc$pkgrel" \
+ "$subpkgdir"/lib/modules/$pkgver-mc$pkgrel-easy/source
}
src() {
- pkgdesc="Kernel source code used to build THIS kernel"
+ pkgdesc="Kernel source code used to build the kernel"
+ provides="easy-kernel-src=$pkgver-r$pkgrel"
mkdir -p "$subpkgdir"/usr/src
- mv "$srcdir"/linux-src "$subpkgdir"/usr/src/linux
+ mv "$srcdir"/linux-src "$subpkgdir"/usr/src/linux-$pkgver-mc$pkgrel
}
sha512sums="77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8 linux-4.14.tar.xz
-ea893dbb34129691d766cd2a80319448a99d022474878147cc90da4bf7364f747e1d2a68bc5cd70e701bccb5f5ba48d628678cd4d95afbdb9b0c128137e1c437 linux-4.14-mc2.patch.xz
-15513dd39075d5b3b27adc193995ffef9d0bad2a5b128f04f8952b0b056a97e15a143f2f3b06de1c6eaa56e6034f28c528aa69786563e2bda6bf35e3182acfaa config-ppc64
-4580119dbbb8abb7cf3d433deee76264bc772f7710e75850483181f3d82e58a12e9045c663ae46a4f8633357790a8776d04826ae1f3954c556fa32ff9dade31f config-ppc
-4fdfbbd63b0f6dc1f9988c752d2bfaa51038d1d6f3f9bdf968809acce50c047ad5a82734ab8d37e57008ff43f483b5734cbefa85c564fda25eccdb867e5949b8 config-x86_64
-34baf5fb4a75bd9aa196313fa38ccf7d591b581d47a61be50b61e88ddaecf0f25992f1579e6fe73c73e1e6b11d7beabf05e6d778cc0de09b048252bedc271bc2 config-pmmx"
+e75d81ff5844106d780f81423fb45de47dfcfad52bd1870e590633ca0d8ca453c710543471b2fac862f1cfe39884b206afe8fb25688fb9acb7584e1cc315ba5b linux-4.14-mc4.patch.xz
+9308029118547be983e3e510ede93e8277c3343f3c6828dfd39c8029341fe099b7cc7338d7603d21a3a69a6c1dd749889ea65ea9f5a94a3fae3e59f76ef33a98 config-ppc64
+419dd30c2d2592293e7b6889a397784fed84a1f686c0d2d262177be98bcb022a9eab4f77c930866fbc8651fcec0a06a12fb796b85591b28f0b9852904347e44a config-ppc
+b89282bacff4d90337eaff02dc6f8122b91b54e8606c667ba3478036268e21477e0bbc98f68f8b5d1a750c8cf9ae82cf3c7be2344c1ddb9f108518cf17984690 config-x86_64
+77fe0ae34512cfe4487f4f03cff4b1ea413f1fb40cb9528af6e670c258b6a268d5741b229b4aeeef70e62602813b47e99f59b111acaf82334be3d860d27b5360 config-pmmx"
diff --git a/system/easy-kernel/config-pmmx b/system/easy-kernel/config-pmmx
index 317e04714..21f56d985 100644
--- a/system/easy-kernel/config-pmmx
+++ b/system/easy-kernel/config-pmmx
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.14.4-mc1 Kernel Configuration
+# Linux/x86 4.14.19-mc4 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -109,7 +109,6 @@ CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
-# CONFIG_NO_HZ_FULL is not set
# CONFIG_NO_HZ is not set
CONFIG_HIGH_RES_TIMERS=y
@@ -117,7 +116,6 @@ CONFIG_HIGH_RES_TIMERS=y
# CPU/Task time and stats accounting
#
CONFIG_TICK_CPU_ACCOUNTING=y
-# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
# CONFIG_IRQ_TIME_ACCOUNTING is not set
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
@@ -307,6 +305,7 @@ CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
+CONFIG_ARCH_HAS_REFCOUNT=y
CONFIG_REFCOUNT_FULL=y
#
@@ -417,6 +416,7 @@ CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_BIGSMP=y
# CONFIG_GOLDFISH is not set
+CONFIG_RETPOLINE=y
# CONFIG_INTEL_RDT is not set
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_GOLDFISH is not set
@@ -469,7 +469,6 @@ CONFIG_M586MMX=y
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
# CONFIG_MATOM is not set
# CONFIG_MCORE2 is not set
# CONFIG_MNEHALEM is not set
@@ -480,7 +479,6 @@ CONFIG_M586MMX=y
# CONFIG_MHASWELL is not set
# CONFIG_MBROADWELL is not set
# CONFIG_MSKYLAKE is not set
-# CONFIG_GENERIC_CPU is not set
# CONFIG_MNATIVE is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
@@ -628,9 +626,6 @@ CONFIG_HOTPLUG_CPU=y
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
# CONFIG_COMPAT_VDSO is not set
-# CONFIG_LEGACY_VSYSCALL_NATIVE is not set
-# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
-# CONFIG_LEGACY_VSYSCALL_NONE is not set
# CONFIG_CMDLINE_BOOL is not set
CONFIG_MODIFY_LDT_SYSCALL=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
@@ -871,7 +866,6 @@ CONFIG_TCIC=m
CONFIG_PCMCIA_PROBE=y
CONFIG_PCCARD_NONSTATIC=y
# CONFIG_RAPIDIO is not set
-CONFIG_X86_SYSFB=y
#
# Executable file formats / Emulations
@@ -1409,6 +1403,7 @@ CONFIG_DEV_COREDUMP=y
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_MMIO=y
@@ -5874,8 +5869,7 @@ CONFIG_IO_DELAY_0X80=y
CONFIG_DEFAULT_IO_DELAY_TYPE=0
# CONFIG_OPTIMIZE_INLINING is not set
# CONFIG_PUNIT_ATOM_DEBUG is not set
-CONFIG_FRAME_POINTER_UNWINDER=y
-# CONFIG_ORC_UNWINDER is not set
+CONFIG_UNWINDER_FRAME_POINTER=y
#
# Security options
@@ -5941,6 +5935,7 @@ CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=y
CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
CONFIG_CRYPTO_ACOMP2=y
CONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_DH is not set
diff --git a/system/easy-kernel/config-ppc b/system/easy-kernel/config-ppc
index ac3d41e82..371a4de1a 100644
--- a/system/easy-kernel/config-ppc
+++ b/system/easy-kernel/config-ppc
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 4.14.8-mc2 Kernel Configuration
+# Linux/powerpc 4.14.12-mc3 Kernel Configuration
#
# CONFIG_PPC64 is not set
@@ -132,7 +132,10 @@ CONFIG_VIRT_CPU_ACCOUNTING=y
CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
#
# RCU Subsystem
@@ -151,13 +154,16 @@ CONFIG_LOG_BUF_SHIFT=14
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
CONFIG_CGROUPS=y
-# CONFIG_MEMCG is not set
+CONFIG_PAGE_COUNTER=y
+CONFIG_MEMCG=y
+# CONFIG_MEMCG_SWAP is not set
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_WRITEBACK=y
CONFIG_CGROUP_SCHED=y
CONFIG_CGROUP_PIDS=y
-# CONFIG_CGROUP_RDMA is not set
-# CONFIG_CGROUP_FREEZER is not set
+CONFIG_CGROUP_RDMA=y
+CONFIG_CGROUP_FREEZER=y
CONFIG_CPUSETS=y
CONFIG_PROC_PID_CPUSET=y
CONFIG_CGROUP_DEVICE=y
@@ -227,6 +233,7 @@ CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
+# CONFIG_SLUB_MEMCG_SYSFS_ON is not set
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
@@ -4214,7 +4221,9 @@ CONFIG_QUOTACTL=y
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=m
# CONFIG_CUSE is not set
-# CONFIG_OVERLAY_FS is not set
+CONFIG_OVERLAY_FS=y
+# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
+# CONFIG_OVERLAY_FS_INDEX is not set
#
# Caches
diff --git a/system/easy-kernel/config-ppc64 b/system/easy-kernel/config-ppc64
index d2a2dff3a..5b0319d98 100644
--- a/system/easy-kernel/config-ppc64
+++ b/system/easy-kernel/config-ppc64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 4.14.4-mc1 Kernel Configuration
+# Linux/powerpc 4.14.12-mc3 Kernel Configuration
#
CONFIG_PPC64=y
@@ -3876,7 +3876,7 @@ CONFIG_HFSPLUS_FS=m
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=y
+CONFIG_CRAMFS=m
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_FILE_CACHE=y
# CONFIG_SQUASHFS_FILE_DIRECT is not set
@@ -4304,7 +4304,6 @@ CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
# CONFIG_HARDENED_USERCOPY is not set
# CONFIG_FORTIFY_SOURCE is not set
# CONFIG_STATIC_USERMODEHELPER is not set
-# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
CONFIG_XOR_BLOCKS=m
diff --git a/system/easy-kernel/config-x86_64 b/system/easy-kernel/config-x86_64
index ced0bcf04..21205357f 100644
--- a/system/easy-kernel/config-x86_64
+++ b/system/easy-kernel/config-x86_64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.14.8-mc2 Kernel Configuration
+# Linux/x86 4.14.19-mc4 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -126,7 +126,8 @@ CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
-# CONFIG_TASK_XACCT is not set
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
#
# RCU Subsystem
@@ -163,6 +164,7 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
CONFIG_SOCK_CGROUP_DATA=y
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
@@ -189,7 +191,7 @@ CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BPF=y
-# CONFIG_EXPERT is not set
+CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_MULTIUSER=y
CONFIG_SGETMASK_SYSCALL=y
@@ -197,6 +199,7 @@ CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_POSIX_TIMERS=y
CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_PRINTK=y
@@ -226,12 +229,14 @@ CONFIG_HAVE_PERF_EVENTS=y
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLUB_MEMCG_SYSFS_ON is not set
-CONFIG_COMPAT_BRK=y
+# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
+# CONFIG_SLOB is not set
# CONFIG_SLAB_MERGE_DEFAULT is not set
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_FREELIST_HARDENED=y
@@ -434,6 +439,7 @@ CONFIG_X86_FAST_FEATURE_TESTS=y
# CONFIG_X86_X2APIC is not set
CONFIG_X86_MPPARSE=y
# CONFIG_GOLDFISH is not set
+CONFIG_RETPOLINE=y
# CONFIG_INTEL_RDT is not set
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_VSMP is not set
@@ -446,6 +452,7 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
+# CONFIG_PARAVIRT_DEBUG is not set
# CONFIG_PARAVIRT_SPINLOCKS is not set
CONFIG_XEN=y
CONFIG_XEN_PV=y
@@ -491,6 +498,7 @@ CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_PROCESSOR_SELECT=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
@@ -502,6 +510,7 @@ CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
+# CONFIG_MAXSMP is not set
CONFIG_NR_CPUS=64
CONFIG_SCHED_SMT=y
CONFIG_SMT_NICE=y
@@ -534,7 +543,7 @@ CONFIG_X86_VSYSCALL_EMULATION=y
CONFIG_I8K=m
CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
-# CONFIG_MICROCODE_AMD is not set
+CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
# CONFIG_X86_MSR is not set
CONFIG_X86_CPUID=m
@@ -585,6 +594,7 @@ CONFIG_UKSM=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
CONFIG_MEMORY_FAILURE=y
+# CONFIG_HWPOISON_INJECT is not set
CONFIG_TRANSPARENT_HUGEPAGE=y
# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
@@ -661,6 +671,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
CONFIG_ARCH_HIBERNATION_HEADER=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
CONFIG_HIBERNATE_CALLBACKS=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
@@ -784,6 +795,7 @@ CONFIG_PCI_DIRECT=y
# CONFIG_PCI_MMCONFIG is not set
CONFIG_PCI_XEN=y
CONFIG_PCI_DOMAINS=y
+# CONFIG_PCI_CNB20LE_QUIRK is not set
CONFIG_PCIEPORTBUS=y
# CONFIG_HOTPLUG_PCI_PCIE is not set
CONFIG_PCIEAER=y
@@ -801,6 +813,7 @@ CONFIG_PCIE_PME=y
CONFIG_PCI_BUS_ADDR_T_64BIT=y
CONFIG_PCI_MSI=y
CONFIG_PCI_MSI_IRQ_DOMAIN=y
+# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=m
CONFIG_XEN_PCIDEV_FRONTEND=m
@@ -837,6 +850,7 @@ CONFIG_VMD=m
# PCI switch controller drivers
#
# CONFIG_PCI_SW_SWITCHTEC is not set
+# CONFIG_ISA_BUS is not set
CONFIG_ISA_DMA_API=y
CONFIG_AMD_NB=y
CONFIG_PCCARD=m
@@ -857,7 +871,6 @@ CONFIG_PD6729=m
CONFIG_I82092=m
CONFIG_PCCARD_NONSTATIC=y
# CONFIG_RAPIDIO is not set
-CONFIG_X86_SYSFB=y
#
# Executable file formats / Emulations
@@ -886,28 +899,37 @@ CONFIG_NET_INGRESS=y
# Networking options
#
CONFIG_PACKET=y
-# CONFIG_PACKET_DIAG is not set
+CONFIG_PACKET_DIAG=m
CONFIG_UNIX=y
-# CONFIG_UNIX_DIAG is not set
-# CONFIG_TLS is not set
+CONFIG_UNIX_DIAG=m
+CONFIG_TLS=m
CONFIG_XFRM=y
CONFIG_XFRM_OFFLOAD=y
CONFIG_XFRM_ALGO=m
-# CONFIG_XFRM_USER is not set
+CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not set
CONFIG_XFRM_IPCOMP=m
# CONFIG_NET_KEY is not set
CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+# CONFIG_IP_FIB_TRIE_STATS is not set
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_ROUTE_CLASSID=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
# CONFIG_NET_IPGRE_DEMUX is not set
CONFIG_NET_IP_TUNNEL=m
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_NET_IPVTI is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
CONFIG_NET_UDP_TUNNEL=m
# CONFIG_NET_FOU is not set
# CONFIG_NET_FOU_IP_TUNNELS is not set
@@ -922,26 +944,26 @@ CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
-# CONFIG_INET_UDP_DIAG is not set
-# CONFIG_INET_RAW_DIAG is not set
+CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_RAW_DIAG=m
# CONFIG_INET_DIAG_DESTROY is not set
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=m
CONFIG_TCP_CONG_WESTWOOD=y
CONFIG_TCP_CONG_HTCP=m
-# CONFIG_TCP_CONG_HSTCP is not set
-# CONFIG_TCP_CONG_HYBLA is not set
+CONFIG_TCP_CONG_HSTCP=m
+CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
-# CONFIG_TCP_CONG_NV is not set
-# CONFIG_TCP_CONG_SCALABLE is not set
-# CONFIG_TCP_CONG_LP is not set
+CONFIG_TCP_CONG_NV=m
+CONFIG_TCP_CONG_SCALABLE=m
+CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
-# CONFIG_TCP_CONG_YEAH is not set
-# CONFIG_TCP_CONG_ILLINOIS is not set
-# CONFIG_TCP_CONG_DCTCP is not set
-# CONFIG_TCP_CONG_CDG is not set
-# CONFIG_TCP_CONG_BBR is not set
+CONFIG_TCP_CONG_YEAH=m
+CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_BBR=m
CONFIG_DEFAULT_WESTWOOD=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="westwood"
@@ -987,11 +1009,12 @@ CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
-# CONFIG_NF_LOG_NETDEV is not set
+CONFIG_NF_LOG_NETDEV=m
CONFIG_NF_CONNTRACK_PROCFS=y
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_IRC=m
-# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+CONFIG_NF_CONNTRACK_BROADCAST=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CT_NETLINK=m
# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
@@ -1002,7 +1025,7 @@ CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
# CONFIG_NF_NAT_TFTP is not set
-# CONFIG_NF_NAT_REDIRECT is not set
+CONFIG_NF_NAT_REDIRECT=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m
@@ -1026,9 +1049,12 @@ CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NETFILTER_XTABLES=m
#
@@ -1041,9 +1067,9 @@ CONFIG_NETFILTER_XT_MARK=m
#
CONFIG_NETFILTER_XT_TARGET_LOG=m
CONFIG_NETFILTER_XT_NAT=m
-# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
#
@@ -1053,30 +1079,88 @@ CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
-# CONFIG_IP_SET is not set
-# CONFIG_IP_VS is not set
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPMARK=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_IPMAC=m
+CONFIG_IP_SET_HASH_MAC=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
+CONFIG_IP_VS=m
+CONFIG_IP_VS_IPV6=y
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_SCTP=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_OVF=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+CONFIG_IP_VS_NFCT=y
+CONFIG_IP_VS_PE_SIP=m
#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
-# CONFIG_NF_SOCKET_IPV4 is not set
+CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TABLES_IPV4=m
-# CONFIG_NFT_CHAIN_ROUTE_IPV4 is not set
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
-# CONFIG_NFT_DUP_IPV4 is not set
-# CONFIG_NFT_FIB_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
-# CONFIG_NF_DUP_IPV4 is not set
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_NAT_IPV4=m
-# CONFIG_NFT_CHAIN_NAT_IPV4 is not set
+CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=m
-# CONFIG_NFT_MASQ_IPV4 is not set
-# CONFIG_NFT_REDIR_IPV4 is not set
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
# CONFIG_NF_NAT_PPTP is not set
# CONFIG_NF_NAT_H323 is not set
CONFIG_IP_NF_IPTABLES=m
@@ -1085,20 +1169,20 @@ CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_MANGLE=m
-# CONFIG_IP_NF_RAW is not set
+CONFIG_IP_NF_RAW=m
#
# IPv6: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
-# CONFIG_NF_SOCKET_IPV6 is not set
+CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TABLES_IPV6=m
-# CONFIG_NFT_CHAIN_ROUTE_IPV6 is not set
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
-# CONFIG_NFT_DUP_IPV6 is not set
-# CONFIG_NFT_FIB_IPV6 is not set
-# CONFIG_NF_DUP_IPV6 is not set
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
+CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_IP6_NF_IPTABLES=m
@@ -1106,8 +1190,47 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_MANGLE=m
-# CONFIG_IP6_NF_RAW is not set
-# CONFIG_IP_DCCP is not set
+CONFIG_IP6_NF_RAW=m
+CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+
+#
+# DCCP CCIDs Configuration
+#
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+CONFIG_IP_DCCP_CCID3=y
+# CONFIG_IP_DCCP_CCID3_DEBUG is not set
+CONFIG_IP_DCCP_TFRC_LIB=y
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
@@ -1116,100 +1239,180 @@ CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
CONFIG_SCTP_COOKIE_HMAC_MD5=y
CONFIG_SCTP_COOKIE_HMAC_SHA1=y
CONFIG_INET_SCTP_DIAG=m
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
+CONFIG_RDS=m
+CONFIG_RDS_TCP=m
+# CONFIG_RDS_DEBUG is not set
+CONFIG_TIPC=m
+CONFIG_TIPC_MEDIA_UDP=y
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
CONFIG_L2TP=m
-# CONFIG_L2TP_V3 is not set
-# CONFIG_BRIDGE is not set
+CONFIG_L2TP_V3=y
+CONFIG_L2TP_IP=m
+CONFIG_L2TP_ETH=m
+CONFIG_STP=m
+CONFIG_GARP=m
+CONFIG_MRP=m
+CONFIG_BRIDGE=m
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
-# CONFIG_NET_DSA is not set
+CONFIG_NET_DSA=m
CONFIG_VLAN_8021Q=m
-# CONFIG_VLAN_8021Q_GVRP is not set
-# CONFIG_VLAN_8021Q_MVRP is not set
-# CONFIG_DECNET is not set
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_VLAN_8021Q_MVRP=y
+CONFIG_DECNET=m
+CONFIG_DECNET_ROUTER=y
CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
+CONFIG_LLC2=m
+CONFIG_IPX=m
+CONFIG_IPX_INTERN=y
CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
-# CONFIG_IPDDP_ENCAP is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_PHONET is not set
-# CONFIG_6LOWPAN is not set
-# CONFIG_IEEE802154 is not set
+CONFIG_IPDDP_ENCAP=y
+CONFIG_X25=m
+CONFIG_LAPB=m
+CONFIG_PHONET=m
+CONFIG_6LOWPAN=m
+CONFIG_6LOWPAN_NHC=m
+CONFIG_6LOWPAN_NHC_DEST=m
+CONFIG_6LOWPAN_NHC_FRAGMENT=m
+CONFIG_6LOWPAN_NHC_HOP=m
+CONFIG_6LOWPAN_NHC_IPV6=m
+CONFIG_6LOWPAN_NHC_MOBILITY=m
+CONFIG_6LOWPAN_NHC_ROUTING=m
+CONFIG_6LOWPAN_NHC_UDP=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m
+CONFIG_6LOWPAN_GHC_UDP=m
+CONFIG_6LOWPAN_GHC_ICMPV6=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m
+CONFIG_IEEE802154=m
+# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
+CONFIG_IEEE802154_SOCKET=m
+CONFIG_IEEE802154_6LOWPAN=m
+CONFIG_MAC802154=m
CONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
-# CONFIG_NET_SCH_HTB is not set
-# CONFIG_NET_SCH_HFSC is not set
-# CONFIG_NET_SCH_PRIO is not set
-# CONFIG_NET_SCH_MULTIQ is not set
-# CONFIG_NET_SCH_RED is not set
-# CONFIG_NET_SCH_SFB is not set
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TEQL is not set
-# CONFIG_NET_SCH_TBF is not set
-# CONFIG_NET_SCH_GRED is not set
-# CONFIG_NET_SCH_DSMARK is not set
-# CONFIG_NET_SCH_NETEM is not set
-# CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_MQPRIO is not set
-# CONFIG_NET_SCH_CHOKE is not set
-# CONFIG_NET_SCH_QFQ is not set
-# CONFIG_NET_SCH_CODEL is not set
-# CONFIG_NET_SCH_FQ_CODEL is not set
-# CONFIG_NET_SCH_FQ is not set
-# CONFIG_NET_SCH_HHF is not set
-# CONFIG_NET_SCH_PIE is not set
-# CONFIG_NET_SCH_PLUG is not set
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFB=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_CHOKE=m
+CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
+CONFIG_NET_SCH_PIE=m
+# CONFIG_NET_SCH_INGRESS is not set
+CONFIG_NET_SCH_PLUG=m
# CONFIG_NET_SCH_DEFAULT is not set
#
# Classification
#
CONFIG_NET_CLS=y
-# CONFIG_NET_CLS_BASIC is not set
-# CONFIG_NET_CLS_TCINDEX is not set
-# CONFIG_NET_CLS_ROUTE4 is not set
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_FW=m
-# CONFIG_NET_CLS_U32 is not set
-# CONFIG_NET_CLS_RSVP is not set
-# CONFIG_NET_CLS_RSVP6 is not set
-# CONFIG_NET_CLS_FLOW is not set
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+# CONFIG_CLS_U32_MARK is not set
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
-# CONFIG_NET_CLS_BPF is not set
-# CONFIG_NET_CLS_FLOWER is not set
-# CONFIG_NET_CLS_MATCHALL is not set
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_CLS_BPF=m
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_CLS_MATCHALL=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_CANID=m
+CONFIG_NET_EMATCH_IPSET=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+# CONFIG_GACT_PROB is not set
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_SAMPLE=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
+CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not set
CONFIG_DNS_RESOLVER=m
-# CONFIG_BATMAN_ADV is not set
-# CONFIG_OPENVSWITCH is not set
-# CONFIG_VSOCKETS is not set
+CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_ADV_BATMAN_V is not set
+CONFIG_BATMAN_ADV_BLA=y
+# CONFIG_BATMAN_ADV_DAT is not set
+# CONFIG_BATMAN_ADV_NC is not set
+# CONFIG_BATMAN_ADV_MCAST is not set
+CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
+CONFIG_VSOCKETS=m
+# CONFIG_VMWARE_VMCI_VSOCKETS is not set
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
+CONFIG_HYPERV_VSOCKETS=m
CONFIG_NETLINK_DIAG=m
-# CONFIG_MPLS is not set
+CONFIG_MPLS=y
+CONFIG_NET_MPLS_GSO=m
+CONFIG_MPLS_ROUTING=m
# CONFIG_NET_NSH is not set
-# CONFIG_HSR is not set
-# CONFIG_NET_SWITCHDEV is not set
+CONFIG_HSR=m
+CONFIG_NET_SWITCHDEV=y
# CONFIG_NET_L3_MASTER_DEV is not set
# CONFIG_NET_NCSI is not set
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
-# CONFIG_CGROUP_NET_PRIO is not set
+CONFIG_CGROUP_NET_PRIO=y
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
-# CONFIG_BPF_JIT is not set
+CONFIG_BPF_JIT=y
CONFIG_NET_FLOW_LIMIT=y
#
@@ -1234,7 +1437,7 @@ CONFIG_6PACK=m
CONFIG_BPQETHER=m
CONFIG_BAYCOM_SER_FDX=m
CONFIG_BAYCOM_SER_HDX=m
-# CONFIG_BAYCOM_PAR is not set
+CONFIG_BAYCOM_PAR=m
CONFIG_YAM=m
CONFIG_CAN=m
CONFIG_CAN_RAW=m
@@ -1249,8 +1452,8 @@ CONFIG_CAN_VXCAN=m
CONFIG_CAN_SLCAN=m
CONFIG_CAN_DEV=m
CONFIG_CAN_CALC_BITTIMING=y
-# CONFIG_CAN_LEDS is not set
-# CONFIG_CAN_GRCAN is not set
+CONFIG_CAN_LEDS=y
+CONFIG_CAN_GRCAN=m
CONFIG_CAN_C_CAN=m
CONFIG_CAN_C_CAN_PLATFORM=m
CONFIG_CAN_C_CAN_PCI=m
@@ -1273,6 +1476,12 @@ CONFIG_CAN_SOFTING=m
CONFIG_CAN_SOFTING_CS=m
#
+# CAN SPI interfaces
+#
+# CONFIG_CAN_HI311X is not set
+# CONFIG_CAN_MCP251X is not set
+
+#
# CAN USB interfaces
#
# CONFIG_CAN_EMS_USB is not set
@@ -1290,44 +1499,53 @@ CONFIG_BT_RFCOMM=m
CONFIG_BT_BNEP=m
# CONFIG_BT_BNEP_MC_FILTER is not set
# CONFIG_BT_BNEP_PROTO_FILTER is not set
+# CONFIG_BT_CMTP is not set
CONFIG_BT_HIDP=m
CONFIG_BT_HS=y
CONFIG_BT_LE=y
-# CONFIG_BT_LEDS is not set
+# CONFIG_BT_6LOWPAN is not set
+CONFIG_BT_LEDS=y
+# CONFIG_BT_SELFTEST is not set
#
# Bluetooth device drivers
#
CONFIG_BT_INTEL=m
+CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
CONFIG_BT_QCA=m
-# CONFIG_BT_HCIBTUSB is not set
-# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
+CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_SERDEV=y
CONFIG_BT_HCIUART_H4=y
-# CONFIG_BT_HCIUART_NOKIA is not set
-# CONFIG_BT_HCIUART_BCSP is not set
-# CONFIG_BT_HCIUART_ATH3K is not set
-# CONFIG_BT_HCIUART_LL is not set
-# CONFIG_BT_HCIUART_3WIRE is not set
+CONFIG_BT_HCIUART_NOKIA=m
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
CONFIG_BT_HCIUART_INTEL=y
-# CONFIG_BT_HCIUART_BCM is not set
+CONFIG_BT_HCIUART_BCM=y
CONFIG_BT_HCIUART_QCA=y
CONFIG_BT_HCIUART_AG6XX=y
CONFIG_BT_HCIUART_MRVL=y
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIDTL1=m
CONFIG_BT_HCIBT3C=m
CONFIG_BT_HCIBLUECARD=m
CONFIG_BT_HCIBTUART=m
CONFIG_BT_HCIVHCI=m
CONFIG_BT_MRVL=m
-# CONFIG_BT_MRVL_SDIO is not set
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_ATH3K=m
# CONFIG_AF_RXRPC is not set
# CONFIG_AF_KCM is not set
# CONFIG_STREAM_PARSER is not set
+CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WEXT_CORE=y
@@ -1337,6 +1555,7 @@ CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_INTERNAL_REGDB is not set
CONFIG_CFG80211_CRDA_SUPPORT=y
@@ -1359,19 +1578,63 @@ CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
+CONFIG_WIMAX=m
+CONFIG_WIMAX_DEBUG_LEVEL=8
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+# CONFIG_RFKILL_INPUT is not set
+CONFIG_NET_9P=m
+CONFIG_NET_9P_VIRTIO=m
+CONFIG_NET_9P_XEN=m
+# CONFIG_NET_9P_DEBUG is not set
# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-# CONFIG_PSAMPLE is not set
-# CONFIG_NET_IFE is not set
+CONFIG_CEPH_LIB=m
+# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+CONFIG_NFC=m
+CONFIG_NFC_DIGITAL=m
+CONFIG_NFC_NCI=m
+# CONFIG_NFC_NCI_SPI is not set
+CONFIG_NFC_NCI_UART=m
+CONFIG_NFC_HCI=m
+CONFIG_NFC_SHDLC=y
+
+#
+# Near Field Communication (NFC) devices
+#
+# CONFIG_NFC_MEI_PHY is not set
+# CONFIG_NFC_SIM is not set
+CONFIG_NFC_PORT100=m
+CONFIG_NFC_FDP=m
+CONFIG_NFC_FDP_I2C=m
+CONFIG_NFC_PN544=m
+CONFIG_NFC_PN544_I2C=m
+CONFIG_NFC_PN533=m
+CONFIG_NFC_PN533_USB=m
+CONFIG_NFC_PN533_I2C=m
+CONFIG_NFC_MICROREAD=m
+CONFIG_NFC_MICROREAD_I2C=m
+CONFIG_NFC_MRVL=m
+CONFIG_NFC_MRVL_USB=m
+CONFIG_NFC_MRVL_UART=m
+CONFIG_NFC_MRVL_I2C=m
+CONFIG_NFC_ST21NFCA=m
+CONFIG_NFC_ST21NFCA_I2C=m
+CONFIG_NFC_ST_NCI=m
+CONFIG_NFC_ST_NCI_I2C=m
+# CONFIG_NFC_ST_NCI_SPI is not set
+CONFIG_NFC_NXP_NCI=m
+CONFIG_NFC_NXP_NCI_I2C=m
+CONFIG_NFC_S3FWRN5=m
+CONFIG_NFC_S3FWRN5_I2C=m
+# CONFIG_NFC_ST95HF is not set
+CONFIG_PSAMPLE=m
+CONFIG_NET_IFE=m
# CONFIG_LWTUNNEL is not set
CONFIG_DST_CACHE=y
CONFIG_GRO_CELLS=y
-# CONFIG_NET_DEVLINK is not set
-CONFIG_MAY_USE_DEVLINK=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
CONFIG_HAVE_EBPF_JIT=y
#
@@ -1394,12 +1657,17 @@ CONFIG_EXTRA_FIRMWARE=""
CONFIG_WANT_DEV_COREDUMP=y
CONFIG_ALLOW_DEV_COREDUMP=y
CONFIG_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
CONFIG_SYS_HYPERVISOR=y
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_SPI=m
CONFIG_REGMAP_MMIO=y
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_DMA_FENCE_TRACE is not set
@@ -1488,38 +1756,43 @@ CONFIG_ATA_OVER_ETH=m
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_BLKDEV_BACKEND=y
CONFIG_VIRTIO_BLK=y
-CONFIG_VIRTIO_BLK_SCSI=y
+# CONFIG_VIRTIO_BLK_SCSI is not set
# CONFIG_BLK_DEV_RBD is not set
CONFIG_BLK_DEV_RSXX=m
CONFIG_NVME_CORE=y
CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_FABRICS=y
CONFIG_NVME_FC=y
-# CONFIG_NVME_TARGET is not set
+CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_LOOP is not set
+# CONFIG_NVME_TARGET_FC is not set
#
# Misc devices
#
-# CONFIG_SENSORS_LIS3LV02D is not set
+CONFIG_SENSORS_LIS3LV02D=m
# CONFIG_AD525X_DPOT is not set
# CONFIG_DUMMY_IRQ is not set
-# CONFIG_IBM_ASM is not set
+CONFIG_IBM_ASM=m
# CONFIG_PHANTOM is not set
# CONFIG_SGI_IOC4 is not set
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
# CONFIG_ICS932S401 is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_HP_ILO is not set
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_HP_ILO=m
# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_SENSORS_TSL2550 is not set
+CONFIG_ISL29003=m
+CONFIG_ISL29020=m
+CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+CONFIG_VMWARE_BALLOON=m
# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
# CONFIG_SRAM is not set
# CONFIG_PCI_ENDPOINT_TEST is not set
# CONFIG_C2PORT is not set
@@ -1527,11 +1800,13 @@ CONFIG_TIFM_7XX1=m
#
# EEPROM support
#
-# CONFIG_EEPROM_AT24 is not set
-# CONFIG_EEPROM_LEGACY is not set
+CONFIG_EEPROM_AT24=m
+# CONFIG_EEPROM_AT25 is not set
+CONFIG_EEPROM_LEGACY=m
# CONFIG_EEPROM_MAX6875 is not set
CONFIG_EEPROM_93CX6=y
-# CONFIG_EEPROM_IDT_89HPESX is not set
+# CONFIG_EEPROM_93XX46 is not set
+CONFIG_EEPROM_IDT_89HPESX=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -1545,45 +1820,51 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y
# Altera FPGA firmware download module
#
# CONFIG_ALTERA_STAPL is not set
-# CONFIG_INTEL_MEI is not set
-# CONFIG_INTEL_MEI_ME is not set
-# CONFIG_INTEL_MEI_TXE is not set
-# CONFIG_VMWARE_VMCI is not set
+CONFIG_INTEL_MEI=m
+CONFIG_INTEL_MEI_ME=m
+CONFIG_INTEL_MEI_TXE=m
+CONFIG_VMWARE_VMCI=m
#
# Intel MIC Bus Driver
#
-# CONFIG_INTEL_MIC_BUS is not set
+CONFIG_INTEL_MIC_BUS=m
#
# SCIF Bus Driver
#
-# CONFIG_SCIF_BUS is not set
+CONFIG_SCIF_BUS=m
#
# VOP Bus Driver
#
-# CONFIG_VOP_BUS is not set
+CONFIG_VOP_BUS=m
#
# Intel MIC Host Driver
#
+CONFIG_INTEL_MIC_HOST=m
#
# Intel MIC Card Driver
#
+CONFIG_INTEL_MIC_CARD=m
#
# SCIF Driver
#
+CONFIG_SCIF=m
#
# Intel MIC Coprocessor State Management (COSM) Drivers
#
+CONFIG_MIC_COSM=m
#
# VOP Driver
#
+CONFIG_VOP=m
+CONFIG_VHOST_RING=m
# CONFIG_GENWQE is not set
# CONFIG_ECHO is not set
# CONFIG_CXL_BASE is not set
@@ -1613,6 +1894,7 @@ CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SR_VENDOR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
+# CONFIG_SCSI_ENCLOSURE is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
@@ -1629,7 +1911,7 @@ CONFIG_SCSI_SAS_LIBSAS=y
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SRP_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
+CONFIG_ISCSI_TCP=m
CONFIG_ISCSI_BOOT_SYSFS=y
CONFIG_SCSI_CXGB3_ISCSI=m
CONFIG_SCSI_CXGB4_ISCSI=m
@@ -1709,7 +1991,7 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLA_FC=m
CONFIG_SCSI_QLA_ISCSI=m
-# CONFIG_QEDI is not set
+CONFIG_QEDI=m
CONFIG_SCSI_LPFC=m
CONFIG_SCSI_DC395x=m
CONFIG_SCSI_AM53C974=m
@@ -1762,6 +2044,7 @@ CONFIG_ATA_BMDMA=y
# SATA SFF controllers with BMDMA
#
CONFIG_ATA_PIIX=y
+# CONFIG_SATA_DWC is not set
CONFIG_SATA_MV=y
CONFIG_SATA_NV=y
CONFIG_SATA_PROMISE=y
@@ -1818,6 +2101,7 @@ CONFIG_PATA_MPIIX=m
CONFIG_PATA_NS87410=m
CONFIG_PATA_OPTI=m
CONFIG_PATA_PCMCIA=m
+# CONFIG_PATA_PLATFORM is not set
CONFIG_PATA_RZ1000=m
#
@@ -1836,7 +2120,9 @@ CONFIG_MD_RAID10=y
CONFIG_MD_RAID456=y
CONFIG_MD_MULTIPATH=y
# CONFIG_MD_FAULTY is not set
-# CONFIG_BCACHE is not set
+CONFIG_BCACHE=m
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_MQ_DEFAULT=y
@@ -1885,6 +2171,7 @@ CONFIG_BONDING=m
# CONFIG_DUMMY is not set
# CONFIG_EQUALIZER is not set
# CONFIG_NET_FC is not set
+# CONFIG_IFB is not set
CONFIG_NET_TEAM=m
# CONFIG_NET_TEAM_MODE_BROADCAST is not set
# CONFIG_NET_TEAM_MODE_ROUNDROBIN is not set
@@ -1893,10 +2180,10 @@ CONFIG_NET_TEAM=m
# CONFIG_NET_TEAM_MODE_LOADBALANCE is not set
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
-# CONFIG_VXLAN is not set
-# CONFIG_GENEVE is not set
+CONFIG_VXLAN=m
+CONFIG_GENEVE=m
CONFIG_GTP=m
-# CONFIG_MACSEC is not set
+CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
@@ -1905,10 +2192,11 @@ CONFIG_TUN=m
CONFIG_TAP=m
# CONFIG_TUN_VNET_CROSS_LE is not set
# CONFIG_VETH is not set
-CONFIG_VIRTIO_NET=m
+CONFIG_VIRTIO_NET=y
# CONFIG_NLMON is not set
CONFIG_SUNGEM_PHY=m
# CONFIG_ARCNET is not set
+# CONFIG_ATM_DRIVERS is not set
#
# CAIF transport drivers
@@ -1917,6 +2205,16 @@ CONFIG_SUNGEM_PHY=m
#
# Distributed Switch Architecture drivers
#
+# CONFIG_B53 is not set
+# CONFIG_NET_DSA_BCM_SF2 is not set
+# CONFIG_NET_DSA_LOOP is not set
+# CONFIG_NET_DSA_MT7530 is not set
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_MICROCHIP_KSZ is not set
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_QCA8K is not set
+# CONFIG_NET_DSA_SMSC_LAN9303_I2C is not set
+# CONFIG_NET_DSA_SMSC_LAN9303_MDIO is not set
CONFIG_ETHERNET=y
CONFIG_MDIO=y
CONFIG_NET_VENDOR_3COM=y
@@ -2031,10 +2329,12 @@ CONFIG_E1000E=m
CONFIG_E1000E_HWTS=y
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
+CONFIG_IGB_DCA=y
CONFIG_IGBVF=m
CONFIG_IXGB=m
CONFIG_IXGBE=m
CONFIG_IXGBE_HWMON=y
+CONFIG_IXGBE_DCA=y
CONFIG_IXGBEVF=m
CONFIG_I40E=m
CONFIG_I40EVF=m
@@ -2058,19 +2358,29 @@ CONFIG_MLXSW_CORE_HWMON=y
CONFIG_MLXSW_CORE_THERMAL=y
CONFIG_MLXSW_PCI=m
CONFIG_MLXSW_I2C=m
+CONFIG_MLXSW_SWITCHIB=m
+CONFIG_MLXSW_SWITCHX2=m
+CONFIG_MLXSW_SPECTRUM=m
CONFIG_MLXSW_MINIMAL=m
CONFIG_MLXFW=m
CONFIG_NET_VENDOR_MICREL=y
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
CONFIG_KS8851_MLL=m
CONFIG_KSZ884X_PCI=m
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_ENC28J60 is not set
+# CONFIG_ENCX24J600 is not set
CONFIG_NET_VENDOR_MYRI=y
CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
CONFIG_FEALNX=m
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NATSEMI=m
CONFIG_NS83820=m
CONFIG_NET_VENDOR_NETRONOME=y
CONFIG_NFP=m
+CONFIG_NFP_APP_FLOWER=y
# CONFIG_NFP_DEBUG is not set
CONFIG_NET_VENDOR_8390=y
CONFIG_PCMCIA_AXNET=m
@@ -2091,9 +2401,12 @@ CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
CONFIG_QED=m
+CONFIG_QED_LL2=y
CONFIG_QED_SRIOV=y
CONFIG_QEDE=m
+CONFIG_QED_ISCSI=y
CONFIG_NET_VENDOR_QUALCOMM=y
+# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
CONFIG_QCOM_EMAC=m
CONFIG_RMNET=m
@@ -2110,6 +2423,7 @@ CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_RDC=y
CONFIG_R6040=m
CONFIG_NET_VENDOR_ROCKER=y
+# CONFIG_ROCKER is not set
CONFIG_NET_VENDOR_SAMSUNG=y
CONFIG_SXGBE_ETH=m
CONFIG_NET_VENDOR_SEEQ=y
@@ -2156,6 +2470,7 @@ CONFIG_WIZNET_W5300=m
# CONFIG_WIZNET_BUS_DIRECT is not set
# CONFIG_WIZNET_BUS_INDIRECT is not set
CONFIG_WIZNET_BUS_ANY=y
+# CONFIG_WIZNET_W5100_SPI is not set
CONFIG_NET_VENDOR_XIRCOM=y
CONFIG_PCMCIA_XIRC2PS=m
CONFIG_NET_VENDOR_SYNOPSYS=y
@@ -2178,49 +2493,51 @@ CONFIG_MDIO_CAVIUM=m
CONFIG_MDIO_THUNDER=m
CONFIG_PHYLIB=m
CONFIG_SWPHY=y
-# CONFIG_LED_TRIGGER_PHY is not set
+CONFIG_LED_TRIGGER_PHY=y
#
# MII PHY device drivers
#
-# CONFIG_AMD_PHY is not set
-# CONFIG_AQUANTIA_PHY is not set
-# CONFIG_AT803X_PHY is not set
+CONFIG_AMD_PHY=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AT803X_PHY=m
CONFIG_BCM7XXX_PHY=m
-# CONFIG_BCM87XX_PHY is not set
+CONFIG_BCM87XX_PHY=m
CONFIG_BCM_NET_PHYLIB=m
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_CORTINA_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_DP83848_PHY is not set
-# CONFIG_DP83867_PHY is not set
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_CORTINA_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
CONFIG_FIXED_PHY=m
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_INTEL_XWAY_PHY is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_MARVELL_10G_PHY is not set
-# CONFIG_MICREL_PHY is not set
+CONFIG_ICPLUS_PHY=m
+CONFIG_INTEL_XWAY_PHY=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
+CONFIG_MARVELL_10G_PHY=m
+CONFIG_MICREL_PHY=m
CONFIG_MICROCHIP_PHY=m
-# CONFIG_MICROSEMI_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_ROCKCHIP_PHY is not set
+CONFIG_MICROSEMI_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_ROCKCHIP_PHY=m
CONFIG_SMSC_PHY=m
-# CONFIG_STE10XP is not set
-# CONFIG_TERANETICS_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_XILINX_GMII2RGMII is not set
+CONFIG_STE10XP=m
+CONFIG_TERANETICS_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
+# CONFIG_MICREL_KS8995MA is not set
CONFIG_PLIP=m
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_DEFLATE=m
# CONFIG_PPP_FILTER is not set
CONFIG_PPP_MPPE=m
-# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPPOATM is not set
CONFIG_PPPOE=m
CONFIG_PPPOL2TP=m
CONFIG_PPP_ASYNC=m
@@ -2267,12 +2584,15 @@ CONFIG_USB_NET_ZAURUS=m
CONFIG_USB_NET_CX82310_ETH=m
CONFIG_USB_NET_KALMIA=m
CONFIG_USB_NET_QMI_WWAN=m
+# CONFIG_USB_HSO is not set
CONFIG_USB_NET_INT51X1=m
+# CONFIG_USB_CDC_PHONET is not set
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
CONFIG_USB_NET_CH9200=m
CONFIG_WLAN=y
+# CONFIG_WIRELESS_WDS is not set
CONFIG_WLAN_VENDOR_ADMTEK=y
CONFIG_ADM8211=m
CONFIG_ATH_COMMON=m
@@ -2289,6 +2609,7 @@ CONFIG_ATH9K_PCI=y
# CONFIG_ATH9K_AHB is not set
# CONFIG_ATH9K_DYNACK is not set
CONFIG_ATH9K_WOW=y
+CONFIG_ATH9K_RFKILL=y
# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
CONFIG_ATH9K_PCOEM=y
CONFIG_ATH9K_HTC=m
@@ -2366,7 +2687,7 @@ CONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG is not set
CONFIG_IPW2200=m
CONFIG_IPW2200_MONITOR=y
-# CONFIG_IPW2200_RADIOTAP is not set
+CONFIG_IPW2200_RADIOTAP=y
# CONFIG_IPW2200_PROMISCUOUS is not set
# CONFIG_IPW2200_QOS is not set
# CONFIG_IPW2200_DEBUG is not set
@@ -2386,6 +2707,7 @@ CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
#
# Debugging Options
@@ -2409,6 +2731,7 @@ CONFIG_ORINOCO_USB=m
CONFIG_P54_COMMON=m
CONFIG_P54_USB=m
CONFIG_P54_PCI=m
+# CONFIG_P54_SPI is not set
CONFIG_P54_LEDS=y
CONFIG_PRISM54=m
CONFIG_WLAN_VENDOR_MARVELL=y
@@ -2416,13 +2739,14 @@ CONFIG_LIBERTAS=m
CONFIG_LIBERTAS_USB=m
CONFIG_LIBERTAS_CS=m
# CONFIG_LIBERTAS_SDIO is not set
+# CONFIG_LIBERTAS_SPI is not set
# CONFIG_LIBERTAS_DEBUG is not set
# CONFIG_LIBERTAS_MESH is not set
CONFIG_LIBERTAS_THINFIRM=m
# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
CONFIG_LIBERTAS_THINFIRM_USB=m
CONFIG_MWIFIEX=m
-# CONFIG_MWIFIEX_SDIO is not set
+CONFIG_MWIFIEX_SDIO=m
CONFIG_MWIFIEX_PCIE=m
CONFIG_MWIFIEX_USB=m
CONFIG_MWL8K=m
@@ -2480,14 +2804,18 @@ CONFIG_RSI_SDIO=m
CONFIG_RSI_USB=m
CONFIG_WLAN_VENDOR_ST=y
CONFIG_CW1200=m
-# CONFIG_CW1200_WLAN_SDIO is not set
+CONFIG_CW1200_WLAN_SDIO=m
+# CONFIG_CW1200_WLAN_SPI is not set
CONFIG_WLAN_VENDOR_TI=y
CONFIG_WL1251=m
-# CONFIG_WL1251_SDIO is not set
+# CONFIG_WL1251_SPI is not set
+CONFIG_WL1251_SDIO=m
CONFIG_WL12XX=m
CONFIG_WL18XX=m
CONFIG_WLCORE=m
-# CONFIG_WLCORE_SDIO is not set
+# CONFIG_WLCORE_SPI is not set
+CONFIG_WLCORE_SDIO=m
+CONFIG_WILINK_PLATFORM_DATA=y
CONFIG_WLAN_VENDOR_ZYDAS=y
CONFIG_USB_ZD1201=m
CONFIG_ZD1211RW=m
@@ -2501,15 +2829,80 @@ CONFIG_PCMCIA_WL3501=m
CONFIG_USB_NET_RNDIS_WLAN=m
#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
+# WiMAX Wireless Broadband devices
#
+CONFIG_WIMAX_I2400M=m
+CONFIG_WIMAX_I2400M_USB=m
+CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
# CONFIG_WAN is not set
+CONFIG_IEEE802154_DRIVERS=m
+# CONFIG_IEEE802154_FAKELB is not set
+# CONFIG_IEEE802154_AT86RF230 is not set
+# CONFIG_IEEE802154_MRF24J40 is not set
+# CONFIG_IEEE802154_CC2520 is not set
+CONFIG_IEEE802154_ATUSB=m
+# CONFIG_IEEE802154_ADF7242 is not set
+# CONFIG_IEEE802154_CA8210 is not set
CONFIG_XEN_NETDEV_FRONTEND=y
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_VMXNET3=m
# CONFIG_FUJITSU_ES is not set
-# CONFIG_HYPERV_NET is not set
-# CONFIG_ISDN is not set
+CONFIG_HYPERV_NET=m
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_PPP=y
+# CONFIG_ISDN_PPP_VJ is not set
+CONFIG_ISDN_MPP=y
+# CONFIG_IPPP_FILTER is not set
+CONFIG_ISDN_PPP_BSDCOMP=m
+# CONFIG_ISDN_AUDIO is not set
+# CONFIG_ISDN_X25 is not set
+
+#
+# ISDN feature submodules
+#
+# CONFIG_ISDN_DIVERSION is not set
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+# CONFIG_ISDN_DRV_HISAX is not set
+CONFIG_ISDN_CAPI=m
+CONFIG_CAPI_TRACE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPIDRV=m
+# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set
+
+#
+# CAPI hardware drivers
+#
+# CONFIG_CAPI_AVM is not set
+# CONFIG_CAPI_EICON is not set
+# CONFIG_ISDN_DRV_GIGASET is not set
+# CONFIG_HYSDN is not set
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
+CONFIG_MISDN_IPAC=m
+CONFIG_MISDN_ISAR=m
+CONFIG_ISDN_HDLC=m
# CONFIG_NVM is not set
#
@@ -2519,7 +2912,7 @@ CONFIG_INPUT=y
CONFIG_INPUT_LEDS=m
CONFIG_INPUT_FF_MEMLESS=y
CONFIG_INPUT_POLLDEV=m
-# CONFIG_INPUT_SPARSEKMAP is not set
+CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_MATRIXKMAP=m
#
@@ -2574,14 +2967,14 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_PS2_FOCALTECH=y
-# CONFIG_MOUSE_PS2_VMMOUSE is not set
+CONFIG_MOUSE_PS2_VMMOUSE=y
CONFIG_MOUSE_SERIAL=y
CONFIG_MOUSE_APPLETOUCH=m
CONFIG_MOUSE_BCM5974=m
CONFIG_MOUSE_CYAPA=m
CONFIG_MOUSE_ELAN_I2C=m
CONFIG_MOUSE_ELAN_I2C_I2C=y
-# CONFIG_MOUSE_ELAN_I2C_SMBUS is not set
+CONFIG_MOUSE_ELAN_I2C_SMBUS=y
CONFIG_MOUSE_VSXXXAA=m
CONFIG_MOUSE_SYNAPTICS_I2C=m
CONFIG_MOUSE_SYNAPTICS_USB=m
@@ -2616,6 +3009,7 @@ CONFIG_JOYSTICK_XPAD=m
CONFIG_JOYSTICK_XPAD_FF=y
CONFIG_JOYSTICK_XPAD_LEDS=y
CONFIG_JOYSTICK_WALKERA0701=m
+# CONFIG_JOYSTICK_PSXPAD_SPI is not set
CONFIG_INPUT_TABLET=y
CONFIG_TABLET_USB_ACECAD=m
CONFIG_TABLET_USB_AIPTEK=m
@@ -2626,16 +3020,21 @@ CONFIG_TABLET_USB_PEGASUS=m
CONFIG_TABLET_SERIAL_WACOM4=m
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_PROPERTIES=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_AD7877 is not set
CONFIG_TOUCHSCREEN_AD7879=m
# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
CONFIG_TOUCHSCREEN_AR1021_I2C=m
CONFIG_TOUCHSCREEN_ATMEL_MXT=m
# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set
CONFIG_TOUCHSCREEN_BU21013=m
CONFIG_TOUCHSCREEN_CYTTSP_CORE=m
# CONFIG_TOUCHSCREEN_CYTTSP_I2C is not set
+# CONFIG_TOUCHSCREEN_CYTTSP_SPI is not set
CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m
# CONFIG_TOUCHSCREEN_CYTTSP4_I2C is not set
+# CONFIG_TOUCHSCREEN_CYTTSP4_SPI is not set
CONFIG_TOUCHSCREEN_DYNAPRO=m
CONFIG_TOUCHSCREEN_HAMPSHIRE=m
CONFIG_TOUCHSCREEN_EETI=m
@@ -2662,7 +3061,10 @@ CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
CONFIG_TOUCHSCREEN_TOUCHWIN=m
CONFIG_TOUCHSCREEN_PIXCIR=m
CONFIG_TOUCHSCREEN_WDT87XX_I2C=m
-# CONFIG_TOUCHSCREEN_WM97XX is not set
+CONFIG_TOUCHSCREEN_WM97XX=m
+CONFIG_TOUCHSCREEN_WM9705=y
+CONFIG_TOUCHSCREEN_WM9712=y
+CONFIG_TOUCHSCREEN_WM9713=y
CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
CONFIG_TOUCHSCREEN_USB_EGALAX=y
CONFIG_TOUCHSCREEN_USB_PANJIT=y
@@ -2686,11 +3088,12 @@ CONFIG_TOUCHSCREEN_TOUCHIT213=m
CONFIG_TOUCHSCREEN_TSC_SERIO=m
CONFIG_TOUCHSCREEN_TSC200X_CORE=m
CONFIG_TOUCHSCREEN_TSC2004=m
+# CONFIG_TOUCHSCREEN_TSC2005 is not set
CONFIG_TOUCHSCREEN_TSC2007=m
CONFIG_TOUCHSCREEN_SILEAD=m
CONFIG_TOUCHSCREEN_ST1232=m
CONFIG_TOUCHSCREEN_STMFTS=m
-# CONFIG_TOUCHSCREEN_SUR40 is not set
+CONFIG_TOUCHSCREEN_SUR40=m
CONFIG_TOUCHSCREEN_SX8654=m
CONFIG_TOUCHSCREEN_TPS6507X=m
CONFIG_TOUCHSCREEN_ZET6223=m
@@ -2698,6 +3101,7 @@ CONFIG_TOUCHSCREEN_ROHM_BU21023=m
CONFIG_INPUT_MISC=y
CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
+CONFIG_INPUT_AD714X_SPI=m
CONFIG_INPUT_ATMEL_CAPTOUCH=m
CONFIG_INPUT_BMA150=m
CONFIG_INPUT_E3X0_BUTTON=m
@@ -2716,6 +3120,7 @@ CONFIG_INPUT_UINPUT=m
CONFIG_INPUT_PCF8574=m
CONFIG_INPUT_ADXL34X=m
CONFIG_INPUT_ADXL34X_I2C=m
+CONFIG_INPUT_ADXL34X_SPI=m
CONFIG_INPUT_IMS_PCU=m
CONFIG_INPUT_CMA3000=m
# CONFIG_INPUT_CMA3000_I2C is not set
@@ -2725,6 +3130,7 @@ CONFIG_INPUT_DRV2665_HAPTICS=m
CONFIG_INPUT_DRV2667_HAPTICS=m
CONFIG_RMI4_CORE=m
# CONFIG_RMI4_I2C is not set
+# CONFIG_RMI4_SPI is not set
# CONFIG_RMI4_SMB is not set
CONFIG_RMI4_F03=y
CONFIG_RMI4_F03_SERIO=m
@@ -2788,6 +3194,7 @@ CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
CONFIG_SERIAL_8250_PNP=y
# CONFIG_SERIAL_8250_FINTEK is not set
# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_EXAR=y
# CONFIG_SERIAL_8250_CS is not set
@@ -2805,6 +3212,8 @@ CONFIG_SERIAL_8250_MID=y
#
# Non-8250 serial port support
#
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
CONFIG_SERIAL_UARTLITE=m
CONFIG_SERIAL_UARTLITE_NR_UARTS=1
CONFIG_SERIAL_CORE=y
@@ -2813,6 +3222,7 @@ CONFIG_SERIAL_SCCNXP=m
CONFIG_SERIAL_SC16IS7XX_CORE=m
CONFIG_SERIAL_SC16IS7XX=m
CONFIG_SERIAL_SC16IS7XX_I2C=y
+# CONFIG_SERIAL_SC16IS7XX_SPI is not set
CONFIG_SERIAL_ALTERA_JTAGUART=m
CONFIG_SERIAL_ALTERA_UART=m
CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
@@ -2825,6 +3235,7 @@ CONFIG_SERIAL_RP2_NR_UARTS=32
CONFIG_SERIAL_FSL_LPUART=m
CONFIG_SERIAL_CONEXANT_DIGICOLOR=m
CONFIG_SERIAL_DEV_BUS=m
+# CONFIG_TTY_PRINTK is not set
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
CONFIG_PPDEV=m
@@ -2832,7 +3243,7 @@ CONFIG_HVC_DRIVER=y
CONFIG_HVC_IRQ=y
CONFIG_HVC_XEN=y
CONFIG_HVC_XEN_FRONTEND=y
-# CONFIG_VIRTIO_CONSOLE is not set
+CONFIG_VIRTIO_CONSOLE=m
CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_DMI_DECODE=y
# CONFIG_IPMI_PANIC_EVENT is not set
@@ -2869,6 +3280,7 @@ CONFIG_HANGCHECK_TIMER=m
CONFIG_TCG_TPM=m
CONFIG_TCG_TIS_CORE=m
CONFIG_TCG_TIS=m
+# CONFIG_TCG_TIS_SPI is not set
CONFIG_TCG_TIS_I2C_ATMEL=m
CONFIG_TCG_TIS_I2C_INFINEON=m
CONFIG_TCG_TIS_I2C_NUVOTON=m
@@ -2880,6 +3292,7 @@ CONFIG_TCG_CRB=m
CONFIG_TCG_VTPM_PROXY=m
CONFIG_TCG_TIS_ST33ZP24=m
CONFIG_TCG_TIS_ST33ZP24_I2C=m
+# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
# CONFIG_XILLYBUS is not set
@@ -2904,6 +3317,7 @@ CONFIG_I2C_MUX=m
# CONFIG_I2C_DEMUX_PINCTRL is not set
# CONFIG_I2C_MUX_MLXCPLD is not set
CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
#
@@ -2913,26 +3327,28 @@ CONFIG_I2C_ALGOBIT=m
#
# PC SMBus host controller drivers
#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_ISCH is not set
-# CONFIG_I2C_ISMT is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+# CONFIG_I2C_AMD756_S4882 is not set
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_ISMT=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+# CONFIG_I2C_NFORCE2_S4985 is not set
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
#
# ACPI drivers
#
-# CONFIG_I2C_SCMI is not set
+CONFIG_I2C_SCMI=m
#
# I2C system bus drivers (mostly embedded / system-on-chip)
@@ -2951,11 +3367,11 @@ CONFIG_I2C_ALGOBIT=m
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_DIOLAN_U2C is not set
-# CONFIG_I2C_PARPORT is not set
+CONFIG_I2C_PARPORT=m
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
+CONFIG_I2C_TINY_USB=m
#
# Other I2C/SMBus bus drivers
@@ -2966,9 +3382,52 @@ CONFIG_I2C_ALGOBIT=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
-# CONFIG_SPMI is not set
-# CONFIG_HSI is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ALTERA=m
+CONFIG_SPI_AXI_SPI_ENGINE=m
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_BUTTERFLY=m
+CONFIG_SPI_CADENCE=m
+CONFIG_SPI_DESIGNWARE=m
+CONFIG_SPI_DW_PCI=m
+# CONFIG_SPI_DW_MID_DMA is not set
+CONFIG_SPI_DW_MMIO=m
+# CONFIG_SPI_LM70_LLP is not set
+CONFIG_SPI_FSL_LIB=m
+CONFIG_SPI_FSL_SPI=m
+CONFIG_SPI_PXA2XX=m
+CONFIG_SPI_PXA2XX_PCI=m
+CONFIG_SPI_ROCKCHIP=m
+CONFIG_SPI_SC18IS602=m
+CONFIG_SPI_XCOMM=m
+CONFIG_SPI_XILINX=m
+CONFIG_SPI_ZYNQMP_GQSPI=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_LOOPBACK_TEST is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_SLAVE is not set
+CONFIG_SPMI=m
+CONFIG_HSI=m
+CONFIG_HSI_BOARDINFO=y
+
+#
+# HSI controllers
+#
+
+#
+# HSI clients
+#
+CONFIG_HSI_CHAR=m
CONFIG_PPS=m
# CONFIG_PPS_DEBUG is not set
@@ -2976,9 +3435,9 @@ CONFIG_PPS=m
# PPS clients support
#
# CONFIG_PPS_CLIENT_KTIMER is not set
-# CONFIG_PPS_CLIENT_LDISC is not set
-# CONFIG_PPS_CLIENT_PARPORT is not set
-# CONFIG_PPS_CLIENT_GPIO is not set
+CONFIG_PPS_CLIENT_LDISC=m
+CONFIG_PPS_CLIENT_PARPORT=m
+CONFIG_PPS_CLIENT_GPIO=m
#
# PPS generators support
@@ -2998,6 +3457,7 @@ CONFIG_PINCTRL=y
#
# Pin controllers
#
+# CONFIG_DEBUG_PINCTRL is not set
# CONFIG_PINCTRL_MCP23S08 is not set
# CONFIG_PINCTRL_SINGLE is not set
# CONFIG_PINCTRL_CHERRYVIEW is not set
@@ -3010,7 +3470,12 @@ CONFIG_PINCTRL=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not set
# CONFIG_POWER_AVS is not set
-# CONFIG_POWER_RESET is not set
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_RESTART is not set
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_REBOOT_MODE=m
+CONFIG_SYSCON_REBOOT_MODE=m
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_PDA_POWER=m
@@ -3038,6 +3503,7 @@ CONFIG_HWMON_VID=m
#
CONFIG_SENSORS_ABITUGURU=m
CONFIG_SENSORS_ABITUGURU3=m
+# CONFIG_SENSORS_AD7314 is not set
CONFIG_SENSORS_AD7414=m
CONFIG_SENSORS_AD7418=m
CONFIG_SENSORS_ADM1021=m
@@ -3047,6 +3513,7 @@ CONFIG_SENSORS_ADM1029=m
CONFIG_SENSORS_ADM1031=m
CONFIG_SENSORS_ADM9240=m
CONFIG_SENSORS_ADT7X10=m
+# CONFIG_SENSORS_ADT7310 is not set
CONFIG_SENSORS_ADT7410=m
CONFIG_SENSORS_ADT7411=m
CONFIG_SENSORS_ADT7462=m
@@ -3089,10 +3556,12 @@ CONFIG_SENSORS_LTC4222=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4260=m
CONFIG_SENSORS_LTC4261=m
+# CONFIG_SENSORS_MAX1111 is not set
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
CONFIG_SENSORS_MAX1668=m
CONFIG_SENSORS_MAX197=m
+# CONFIG_SENSORS_MAX31722 is not set
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
@@ -3100,7 +3569,9 @@ CONFIG_SENSORS_MAX6697=m
CONFIG_SENSORS_MAX31790=m
CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_TC654=m
+# CONFIG_SENSORS_ADCXX is not set
CONFIG_SENSORS_LM63=m
+# CONFIG_SENSORS_LM70 is not set
CONFIG_SENSORS_LM73=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM77=m
@@ -3157,6 +3628,7 @@ CONFIG_SENSORS_SMM665=m
CONFIG_SENSORS_ADC128D818=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
+# CONFIG_SENSORS_ADS7871 is not set
CONFIG_SENSORS_AMC6821=m
CONFIG_SENSORS_INA209=m
CONFIG_SENSORS_INA2XX=m
@@ -3200,7 +3672,7 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
CONFIG_THERMAL_GOV_STEP_WISE=y
-# CONFIG_THERMAL_GOV_BANG_BANG is not set
+CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
# CONFIG_CPU_THERMAL is not set
@@ -3208,7 +3680,7 @@ CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_THERMAL_EMULATION is not set
# CONFIG_QORIQ_THERMAL is not set
-# CONFIG_INTEL_POWERCLAMP is not set
+CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
# CONFIG_INTEL_SOC_DTS_THERMAL is not set
@@ -3216,7 +3688,7 @@ CONFIG_X86_PKG_TEMP_THERMAL=m
# ACPI INT340X thermal drivers
#
# CONFIG_INT340X_THERMAL is not set
-# CONFIG_INTEL_PCH_THERMAL is not set
+CONFIG_INTEL_PCH_THERMAL=m
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
@@ -3233,6 +3705,7 @@ CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
# CONFIG_SSB_PCMCIAHOST is not set
CONFIG_SSB_SDIOHOST_POSSIBLE=y
# CONFIG_SSB_SDIOHOST is not set
+# CONFIG_SSB_SILENT is not set
# CONFIG_SSB_DEBUG is not set
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y
@@ -3249,7 +3722,7 @@ CONFIG_BCMA_DRIVER_PCI=y
#
# Multifunction device drivers
#
-CONFIG_MFD_CORE=m
+CONFIG_MFD_CORE=y
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ATMEL_FLEXCOM is not set
# CONFIG_MFD_ATMEL_HLCDC is not set
@@ -3257,18 +3730,22 @@ CONFIG_MFD_CORE=m
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_DA9052_SPI is not set
# CONFIG_MFD_DA9062 is not set
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_MFD_HI6421_PMIC is not set
# CONFIG_HTC_PASIC3 is not set
-# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
-# CONFIG_LPC_ICH is not set
-# CONFIG_LPC_SCH is not set
-# CONFIG_MFD_INTEL_LPSS_ACPI is not set
-# CONFIG_MFD_INTEL_LPSS_PCI is not set
+CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m
+CONFIG_LPC_ICH=y
+CONFIG_LPC_SCH=m
+# CONFIG_INTEL_SOC_PMIC_BXTWC is not set
+CONFIG_MFD_INTEL_LPSS=m
+CONFIG_MFD_INTEL_LPSS_ACPI=m
+CONFIG_MFD_INTEL_LPSS_PCI=m
# CONFIG_MFD_JANZ_CMODIO is not set
# CONFIG_MFD_KEMPLD is not set
# CONFIG_MFD_88PM800 is not set
@@ -3279,6 +3756,8 @@ CONFIG_MFD_CORE=m
# CONFIG_MFD_MAX8907 is not set
# CONFIG_MFD_MT6397 is not set
# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_VIPERBOARD is not set
# CONFIG_MFD_RETU is not set
# CONFIG_MFD_PCF50633 is not set
@@ -3292,6 +3771,7 @@ CONFIG_MFD_CORE=m
# CONFIG_MFD_SM501 is not set
# CONFIG_MFD_SKY81452 is not set
# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set
@@ -3304,11 +3784,14 @@ CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_LP87565 is not set
# CONFIG_MFD_TPS65218 is not set
# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
CONFIG_MFD_WL1273_CORE=m
# CONFIG_MFD_LM3533 is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_MFD_VX855 is not set
# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM831X_SPI is not set
# CONFIG_MFD_WM8994 is not set
# CONFIG_REGULATOR is not set
CONFIG_CEC_CORE=m
@@ -3316,17 +3799,39 @@ CONFIG_CEC_NOTIFIER=y
CONFIG_RC_CORE=y
CONFIG_RC_MAP=y
CONFIG_RC_DECODERS=y
-# CONFIG_LIRC is not set
-CONFIG_IR_NEC_DECODER=y
-CONFIG_IR_RC5_DECODER=y
-CONFIG_IR_RC6_DECODER=y
-CONFIG_IR_JVC_DECODER=y
-CONFIG_IR_SONY_DECODER=y
-CONFIG_IR_SANYO_DECODER=y
-CONFIG_IR_SHARP_DECODER=y
-CONFIG_IR_MCE_KBD_DECODER=y
-CONFIG_IR_XMP_DECODER=y
-# CONFIG_RC_DEVICES is not set
+CONFIG_LIRC=m
+CONFIG_IR_LIRC_CODEC=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_SHARP_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
+CONFIG_RC_DEVICES=y
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
+CONFIG_IR_IMON=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_ITE_CIR=m
+CONFIG_IR_FINTEK=m
+CONFIG_IR_NUVOTON=m
+CONFIG_IR_REDRAT3=m
+# CONFIG_IR_SPI is not set
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGORPLUGUSB=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_RC_LOOPBACK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
+CONFIG_IR_SERIAL=m
+CONFIG_IR_SERIAL_TRANSMITTER=y
+CONFIG_IR_SIR=m
CONFIG_MEDIA_SUPPORT=m
#
@@ -3517,7 +4022,7 @@ CONFIG_DVB_AS102=m
#
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_V4L2=m
-# CONFIG_VIDEO_EM28XX_ALSA is not set
+CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX_RC=m
@@ -3526,6 +4031,7 @@ CONFIG_VIDEO_EM28XX_RC=m
#
CONFIG_USB_AIRSPY=m
CONFIG_USB_HACKRF=m
+# CONFIG_USB_MSI2500 is not set
#
# USB HDMI CEC adapters
@@ -3537,6 +4043,7 @@ CONFIG_MEDIA_PCI_SUPPORT=y
#
# Media capture support
#
+# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_SOLO6X10 is not set
CONFIG_VIDEO_TW5864=m
CONFIG_VIDEO_TW68=m
@@ -3609,6 +4116,7 @@ CONFIG_DVB_NGENE=m
CONFIG_DVB_DDBRIDGE=m
# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
CONFIG_DVB_SMIPCIE=m
+# CONFIG_DVB_NETUP_UNIDVB is not set
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_VIDEO_CAFE_CCIC=m
CONFIG_SOC_CAMERA=m
@@ -3970,6 +4478,7 @@ CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
CONFIG_DRM_MIPI_DSI=y
# CONFIG_DRM_DP_AUX_CHARDEV is not set
+# CONFIG_DRM_DEBUG_MM_SELFTEST is not set
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
@@ -4007,6 +4516,17 @@ CONFIG_DRM_I915_CAPTURE_ERROR=y
CONFIG_DRM_I915_COMPRESS_ERROR=y
CONFIG_DRM_I915_USERPTR=y
# CONFIG_DRM_I915_GVT is not set
+
+#
+# drm/i915 Debugging
+#
+# CONFIG_DRM_I915_WERROR is not set
+# CONFIG_DRM_I915_DEBUG is not set
+# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set
+# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set
+# CONFIG_DRM_I915_SELFTEST is not set
+# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
+# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
CONFIG_DRM_VGEM=m
CONFIG_DRM_VMWGFX=m
# CONFIG_DRM_VMWGFX_FBCON is not set
@@ -4020,7 +4540,7 @@ CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_RCAR_DW_HDMI=m
CONFIG_DRM_QXL=m
CONFIG_DRM_BOCHS=m
-# CONFIG_DRM_VIRTIO_GPU is not set
+CONFIG_DRM_VIRTIO_GPU=m
CONFIG_DRM_PANEL=y
#
@@ -4030,11 +4550,14 @@ CONFIG_DRM_PANEL_LVDS=m
CONFIG_DRM_PANEL_SIMPLE=m
CONFIG_DRM_PANEL_INNOLUX_P079ZCA=m
CONFIG_DRM_PANEL_JDI_LT070ME05000=m
+# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
+# CONFIG_DRM_PANEL_LG_LG4573 is not set
CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m
CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m
CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=m
CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m
CONFIG_DRM_PANEL_SHARP_LS043T1LE01=m
+# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
CONFIG_DRM_BRIDGE=y
CONFIG_DRM_PANEL_BRIDGE=y
@@ -4061,6 +4584,9 @@ CONFIG_DRM_HISI_HIBMC=m
CONFIG_DRM_MXS=y
CONFIG_DRM_MXSFB=m
CONFIG_DRM_TINYDRM=m
+# CONFIG_TINYDRM_MI0283QT is not set
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
# CONFIG_DRM_LEGACY is not set
# CONFIG_DRM_LIB_RANDOM is not set
@@ -4117,6 +4643,7 @@ CONFIG_FB_RIVA_BACKLIGHT=y
CONFIG_FB_I740=m
CONFIG_FB_LE80578=m
CONFIG_FB_CARILLO_RANCH=m
+# CONFIG_FB_INTEL is not set
CONFIG_FB_MATROX=m
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
@@ -4171,7 +4698,17 @@ CONFIG_FB_AUO_K1901=m
CONFIG_FB_SM712=m
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI922X is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
CONFIG_LCD_PLATFORM=m
+# CONFIG_LCD_S6E63M0 is not set
+# CONFIG_LCD_LD9040 is not set
+# CONFIG_LCD_AMS369FG06 is not set
+# CONFIG_LCD_LMS501KF03 is not set
+# CONFIG_LCD_HX8357 is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_CARILLO_RANCH=m
@@ -4222,7 +4759,8 @@ CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_PCM_TIMER=y
CONFIG_SND_HRTIMER=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=64
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
@@ -4357,6 +4895,7 @@ CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
CONFIG_SND_HDA_CORE=m
CONFIG_SND_HDA_I915=y
CONFIG_SND_HDA_PREALLOC_SIZE=64
+CONFIG_SND_SPI=y
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_UA101=m
@@ -4396,8 +4935,8 @@ CONFIG_AC97_BUS=m
# HID support
#
CONFIG_HID=y
-# CONFIG_HID_BATTERY_STRENGTH is not set
-# CONFIG_HIDRAW is not set
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HIDRAW=y
CONFIG_UHID=m
CONFIG_HID_GENERIC=y
@@ -4444,6 +4983,7 @@ CONFIG_HID_LCPOWER=m
CONFIG_HID_LED=m
CONFIG_HID_LENOVO=m
CONFIG_HID_LOGITECH=y
+# CONFIG_HID_LOGITECH_DJ is not set
CONFIG_HID_LOGITECH_HIDPP=m
CONFIG_LOGITECH_FF=y
CONFIG_LOGIRUMBLEPAD2_FF=y
@@ -4462,11 +5002,11 @@ CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PENMOUNT=m
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
-CONFIG_HID_PICOLCD_FB=y
-CONFIG_HID_PICOLCD_BACKLIGHT=y
-CONFIG_HID_PICOLCD_LCD=y
-CONFIG_HID_PICOLCD_LEDS=y
-CONFIG_HID_PICOLCD_CIR=y
+# CONFIG_HID_PICOLCD_FB is not set
+# CONFIG_HID_PICOLCD_BACKLIGHT is not set
+# CONFIG_HID_PICOLCD_LCD is not set
+# CONFIG_HID_PICOLCD_LEDS is not set
+# CONFIG_HID_PICOLCD_CIR is not set
CONFIG_HID_PLANTRONICS=m
CONFIG_HID_PRIMAX=m
CONFIG_HID_RETRODE=m
@@ -4505,12 +5045,12 @@ CONFIG_HID_ALPS=m
#
CONFIG_USB_HID=y
# CONFIG_HID_PID is not set
-# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_HIDDEV=y
#
# I2C HID support
#
-# CONFIG_I2C_HID is not set
+CONFIG_I2C_HID=m
#
# Intel ISH HID support
@@ -4522,7 +5062,7 @@ CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_PCI=y
-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# Miscellaneous USB options
@@ -4531,8 +5071,9 @@ CONFIG_USB_DEFAULT_PERSIST=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
-# CONFIG_USB_MON is not set
+CONFIG_USB_MON=y
# CONFIG_USB_WUSB_CBAF is not set
#
@@ -4551,11 +5092,12 @@ CONFIG_USB_OXU210HP_HCD=y
CONFIG_USB_ISP116X_HCD=y
CONFIG_USB_ISP1362_HCD=y
CONFIG_USB_FOTG210_HCD=y
+# CONFIG_USB_MAX3421_HCD is not set
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PCI=y
# CONFIG_USB_OHCI_HCD_PLATFORM is not set
CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_U132_HCD is not set
+CONFIG_USB_U132_HCD=m
CONFIG_USB_SL811_HCD=y
# CONFIG_USB_SL811_HCD_ISO is not set
# CONFIG_USB_SL811_CS is not set
@@ -4570,7 +5112,7 @@ CONFIG_USB_R8A66597_HCD=y
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m
CONFIG_USB_WDM=m
-# CONFIG_USB_TMC is not set
+CONFIG_USB_TMC=m
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
@@ -4603,9 +5145,11 @@ CONFIG_USB_UAS=y
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
CONFIG_USBIP_CORE=m
-# CONFIG_USBIP_VHCI_HCD is not set
-# CONFIG_USBIP_HOST is not set
-# CONFIG_USBIP_VUDC is not set
+CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+CONFIG_USBIP_HOST=m
+CONFIG_USBIP_VUDC=m
# CONFIG_USBIP_DEBUG is not set
# CONFIG_USB_MUSB_HDRC is not set
# CONFIG_USB_DWC3 is not set
@@ -4705,6 +5249,7 @@ CONFIG_USB_HSIC_USB3503=m
CONFIG_USB_HSIC_USB4604=m
# CONFIG_USB_LINK_LAYER_TEST is not set
# CONFIG_USB_CHAOSKEY is not set
+# CONFIG_USB_ATM is not set
#
# USB Physical Layer drivers
@@ -4713,6 +5258,7 @@ CONFIG_USB_HSIC_USB4604=m
# CONFIG_NOP_USB_XCEIV is not set
# CONFIG_USB_ISP1301 is not set
CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_VBUS_DRAW=2
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -4778,6 +5324,7 @@ CONFIG_MMC_SDHCI_CADENCE=m
CONFIG_MMC_SDHCI_F_SDH30=m
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
+# CONFIG_MMC_SPI is not set
CONFIG_MMC_SDRICOH_CS=m
CONFIG_MMC_CB710=m
CONFIG_MMC_VIA_SDMMC=m
@@ -4787,7 +5334,22 @@ CONFIG_MMC_USDHI6ROL0=m
CONFIG_MMC_TOSHIBA_PCI=m
CONFIG_MMC_MTK=m
CONFIG_MMC_SDHCI_XENON=m
-# CONFIG_MEMSTICK is not set
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+CONFIG_MS_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_MEMSTICK_R592=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m
# CONFIG_LEDS_CLASS_FLASH is not set
@@ -4810,6 +5372,7 @@ CONFIG_LEDS_CLASS=m
# CONFIG_LEDS_CLEVO_MAIL is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_BD2802 is not set
# CONFIG_LEDS_INTEL_SS4200 is not set
# CONFIG_LEDS_TCA6507 is not set
@@ -4844,7 +5407,7 @@ CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
# CONFIG_LEDS_TRIGGER_CAMERA is not set
# CONFIG_LEDS_TRIGGER_PANIC is not set
-# CONFIG_ACCESSIBILITY is not set
+CONFIG_ACCESSIBILITY=y
# CONFIG_INFINIBAND is not set
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
@@ -4887,80 +5450,136 @@ CONFIG_RTC_INTF_DEV=y
#
# I2C RTC drivers
#
-# CONFIG_RTC_DRV_ABB5ZES3 is not set
-# CONFIG_RTC_DRV_ABX80X is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_HYM8563 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_ISL12022 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8523 is not set
-# CONFIG_RTC_DRV_PCF85063 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-# CONFIG_RTC_DRV_BQ32K is not set
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-# CONFIG_RTC_DRV_RX8010 is not set
-# CONFIG_RTC_DRV_RX8581 is not set
-# CONFIG_RTC_DRV_RX8025 is not set
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_RV8803 is not set
+CONFIG_RTC_DRV_ABB5ZES3=m
+CONFIG_RTC_DRV_ABX80X=m
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
+CONFIG_RTC_DRV_DS1307_CENTURY=y
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_HYM8563=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF85063=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_BQ32K=m
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8010=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+CONFIG_RTC_DRV_EM3027=m
+CONFIG_RTC_DRV_RV8803=m
#
# SPI RTC drivers
#
+# CONFIG_RTC_DRV_M41T93 is not set
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1302 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1343 is not set
+# CONFIG_RTC_DRV_DS1347 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6916 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RX4581 is not set
+# CONFIG_RTC_DRV_RX6110 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+# CONFIG_RTC_DRV_MCP795 is not set
CONFIG_RTC_I2C_AND_SPI=m
#
# SPI and I2C RTC drivers
#
-# CONFIG_RTC_DRV_DS3232 is not set
-# CONFIG_RTC_DRV_PCF2127 is not set
-# CONFIG_RTC_DRV_RV3029C2 is not set
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_DS3232_HWMON=y
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=y
-# CONFIG_RTC_DRV_DS1286 is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1685_FAMILY is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_DS2404 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T35 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_MSM6242 is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-# CONFIG_RTC_DRV_RP5C01 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-# CONFIG_RTC_DRV_ZYNQMP is not set
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1685_FAMILY=m
+CONFIG_RTC_DRV_DS1685=y
+# CONFIG_RTC_DRV_DS1689 is not set
+# CONFIG_RTC_DRV_DS17285 is not set
+# CONFIG_RTC_DRV_DS17485 is not set
+# CONFIG_RTC_DRV_DS17885 is not set
+# CONFIG_RTC_DS1685_PROC_REGS is not set
+# CONFIG_RTC_DS1685_SYSFS_REGS is not set
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
+CONFIG_RTC_DRV_STK17TA8=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_ZYNQMP=m
#
# on-CPU RTC drivers
#
-# CONFIG_RTC_DRV_FTRTC010 is not set
-# CONFIG_RTC_DRV_SNVS is not set
-# CONFIG_RTC_DRV_R7301 is not set
+CONFIG_RTC_DRV_FTRTC010=m
+CONFIG_RTC_DRV_SNVS=m
+CONFIG_RTC_DRV_R7301=m
#
# HID Sensor RTC drivers
#
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_DMADEVICES is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_ACPI=y
+CONFIG_DMA_OF=y
+# CONFIG_ALTERA_MSGDMA is not set
+# CONFIG_FSL_EDMA is not set
+CONFIG_INTEL_IDMA64=m
+CONFIG_INTEL_IOATDMA=m
+CONFIG_INTEL_MIC_X100_DMA=m
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+CONFIG_DW_DMAC_CORE=y
+# CONFIG_DW_DMAC is not set
+CONFIG_DW_DMAC_PCI=y
+CONFIG_HSU_DMA=y
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+CONFIG_DMA_ENGINE_RAID=y
#
# DMABUF options
#
CONFIG_SYNC_FILE=y
+CONFIG_DCA=m
# CONFIG_AUXDISPLAY is not set
# CONFIG_PANEL is not set
CONFIG_UIO=y
@@ -5025,54 +5644,73 @@ CONFIG_XEN_SYMS=y
CONFIG_XEN_HAVE_VPMU=y
# CONFIG_STAGING is not set
CONFIG_X86_PLATFORM_DEVICES=y
-# CONFIG_ACER_WMI is not set
-# CONFIG_ACERHDF is not set
-# CONFIG_ALIENWARE_WMI is not set
-# CONFIG_ASUS_LAPTOP is not set
-# CONFIG_DELL_LAPTOP is not set
-# CONFIG_DELL_WMI is not set
-# CONFIG_DELL_WMI_AIO is not set
-# CONFIG_DELL_WMI_LED is not set
-# CONFIG_DELL_SMO8800 is not set
-# CONFIG_FUJITSU_LAPTOP is not set
-# CONFIG_FUJITSU_TABLET is not set
-# CONFIG_HP_ACCEL is not set
-# CONFIG_HP_WIRELESS is not set
-# CONFIG_HP_WMI is not set
-# CONFIG_PANASONIC_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-# CONFIG_SENSORS_HDAPS is not set
-# CONFIG_INTEL_MENLOW is not set
-# CONFIG_EEEPC_LAPTOP is not set
-# CONFIG_ASUS_WMI is not set
-# CONFIG_ASUS_WIRELESS is not set
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ALIENWARE_WMI=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_DELL_WMI_AIO=m
+CONFIG_DELL_WMI_LED=m
+CONFIG_DELL_SMO8800=m
+CONFIG_DELL_RBTN=m
+CONFIG_FUJITSU_LAPTOP=m
+CONFIG_FUJITSU_TABLET=m
+CONFIG_AMILO_RFKILL=m
+CONFIG_HP_ACCEL=m
+CONFIG_HP_WIRELESS=m
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+# CONFIG_SONYPI_COMPAT is not set
+CONFIG_IDEAPAD_LAPTOP=m
+CONFIG_SURFACE3_WMI=m
+CONFIG_THINKPAD_ACPI=m
+CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_SENSORS_HDAPS=m
+CONFIG_INTEL_MENLOW=m
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ASUS_WMI=m
+CONFIG_ASUS_NB_WMI=m
+CONFIG_EEEPC_WMI=m
+CONFIG_ASUS_WIRELESS=m
CONFIG_ACPI_WMI=m
CONFIG_WMI_BMOF=m
-# CONFIG_MSI_WMI is not set
-# CONFIG_PEAQ_WMI is not set
-# CONFIG_TOPSTAR_LAPTOP is not set
-# CONFIG_TOSHIBA_BT_RFKILL is not set
-# CONFIG_TOSHIBA_HAPS is not set
-# CONFIG_TOSHIBA_WMI is not set
-# CONFIG_ACPI_CMPC is not set
-# CONFIG_INTEL_CHT_INT33FE is not set
-# CONFIG_INTEL_HID_EVENT is not set
-# CONFIG_INTEL_VBTN is not set
-# CONFIG_INTEL_IPS is not set
+CONFIG_MSI_WMI=m
+CONFIG_PEAQ_WMI=m
+CONFIG_TOPSTAR_LAPTOP=m
+CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_TOSHIBA_HAPS=m
+CONFIG_TOSHIBA_WMI=m
+CONFIG_ACPI_CMPC=m
+CONFIG_INTEL_CHT_INT33FE=m
+CONFIG_INTEL_HID_EVENT=m
+CONFIG_INTEL_VBTN=m
+CONFIG_INTEL_IPS=m
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_IBM_RTL is not set
-# CONFIG_SAMSUNG_LAPTOP is not set
+CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
-# CONFIG_SAMSUNG_Q10 is not set
-# CONFIG_APPLE_GMUX is not set
-# CONFIG_INTEL_RST is not set
-# CONFIG_INTEL_SMARTCONNECT is not set
-# CONFIG_PVPANIC is not set
-# CONFIG_INTEL_PMC_IPC is not set
-# CONFIG_SURFACE_PRO3_BUTTON is not set
-# CONFIG_INTEL_PUNIT_IPC is not set
-# CONFIG_MLX_PLATFORM is not set
-# CONFIG_MLX_CPLD_PLATFORM is not set
+CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
+CONFIG_APPLE_GMUX=m
+CONFIG_INTEL_RST=m
+CONFIG_INTEL_SMARTCONNECT=m
+CONFIG_PVPANIC=m
+CONFIG_INTEL_PMC_IPC=m
+CONFIG_SURFACE_PRO3_BUTTON=m
+CONFIG_INTEL_PUNIT_IPC=m
+CONFIG_INTEL_TELEMETRY=m
+CONFIG_MLX_PLATFORM=m
+CONFIG_MLX_CPLD_PLATFORM=m
# CONFIG_INTEL_TURBO_MAX_3 is not set
CONFIG_PMC_ATOM=y
# CONFIG_CHROME_PLATFORMS is not set
@@ -5216,7 +5854,7 @@ CONFIG_GENERIC_PHY=y
# Performance monitor support
#
CONFIG_RAS=y
-# CONFIG_THUNDERBOLT is not set
+CONFIG_THUNDERBOLT=m
#
# Android
@@ -5246,7 +5884,7 @@ CONFIG_NVMEM=y
# CONFIG_EDD is not set
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
+CONFIG_DCDBAS=m
CONFIG_DMIID=y
# CONFIG_DMI_SYSFS is not set
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
@@ -5280,10 +5918,14 @@ CONFIG_EFI_DEV_PATH_PARSER=y
#
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_FS_IOMAP=y
-# CONFIG_EXT2_FS is not set
-# CONFIG_EXT3_FS is not set
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_ENCRYPTION is not set
@@ -5337,7 +5979,8 @@ CONFIG_FS_ENCRYPTION=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
+CONFIG_FANOTIFY=y
+# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set
CONFIG_QUOTA=y
# CONFIG_QUOTA_NETLINK_INTERFACE is not set
CONFIG_PRINT_QUOTA_WARNING=y
@@ -5403,7 +6046,8 @@ CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ORANGEFS_FS is not set
# CONFIG_ADFS_FS is not set
CONFIG_AFFS_FS=m
-# CONFIG_ECRYPT_FS is not set
+CONFIG_ECRYPT_FS=m
+# CONFIG_ECRYPT_FS_MESSAGING is not set
CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
CONFIG_HFSPLUS_FS_POSIX_ACL=y
@@ -5480,7 +6124,8 @@ CONFIG_SUNRPC_GSS=m
CONFIG_SUNRPC_BACKCHANNEL=y
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_SUNRPC_DEBUG is not set
-# CONFIG_CEPH_FS is not set
+CONFIG_CEPH_FS=m
+CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
# CONFIG_CIFS_WEAK_PW_HASH is not set
@@ -5494,6 +6139,7 @@ CONFIG_CIFS_DEBUG=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=m
@@ -5558,68 +6204,116 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
#
# Compile-time checks and compiler options
#
+# CONFIG_DEBUG_INFO is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=2048
# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_FRAME_POINTER=y
# CONFIG_STACK_VALIDATION is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0
CONFIG_MAGIC_SYSRQ_SERIAL=y
-# CONFIG_DEBUG_KERNEL is not set
+CONFIG_DEBUG_KERNEL=y
#
# Memory Debugging
#
# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_PAGE_POISONING is not set
# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
-CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
CONFIG_HAVE_ARCH_KMEMCHECK=y
+# CONFIG_KMEMCHECK is not set
CONFIG_HAVE_ARCH_KASAN=y
# CONFIG_KASAN is not set
CONFIG_ARCH_HAS_KCOV=y
# CONFIG_KCOV is not set
+# CONFIG_DEBUG_SHIRQ is not set
#
# Debug Lockups and Hangs
#
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y
+# CONFIG_HARDLOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
+CONFIG_SCHED_DEBUG=y
CONFIG_SCHED_INFO=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_SCHED_STACK_END_CHECK is not set
# CONFIG_DEBUG_TIMEKEEPING is not set
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
# CONFIG_WW_MUTEX_SELFTEST is not set
-# CONFIG_STACKTRACE is not set
+CONFIG_STACKTRACE=y
# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PI_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
#
# RCU Debugging
#
# CONFIG_PROVE_RCU is not set
# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=21
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -5642,6 +6336,10 @@ CONFIG_TRACING_SUPPORT=y
#
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_TEST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_ASYNC_RAID6_TEST is not set
# CONFIG_TEST_HEXDUMP is not set
@@ -5652,6 +6350,7 @@ CONFIG_TRACING_SUPPORT=y
# CONFIG_TEST_UUID is not set
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_PARMAN is not set
# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
# CONFIG_TEST_BPF is not set
@@ -5664,20 +6363,24 @@ CONFIG_TRACING_SUPPORT=y
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
# CONFIG_UBSAN is not set
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
-# CONFIG_STRICT_DEVMEM is not set
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
CONFIG_X86_VERBOSE_BOOTUP=y
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_EARLY_PRINTK_EFI is not set
# CONFIG_EARLY_PRINTK_USB_XDBC is not set
CONFIG_X86_PTDUMP_CORE=y
+# CONFIG_X86_PTDUMP is not set
# CONFIG_EFI_PGT_DUMP is not set
CONFIG_DEBUG_WX=y
CONFIG_DOUBLEFAULT=y
+# CONFIG_DEBUG_TLBFLUSH is not set
# CONFIG_IOMMU_STRESS is not set
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_IO_DELAY_TYPE_0X80=0
@@ -5689,10 +6392,15 @@ CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=0
+# CONFIG_CPA_DEBUG is not set
# CONFIG_OPTIMIZE_INLINING is not set
+# CONFIG_DEBUG_ENTRY is not set
+# CONFIG_DEBUG_NMI_SELFTEST is not set
+CONFIG_X86_DEBUG_FPU=y
# CONFIG_PUNIT_ATOM_DEBUG is not set
-CONFIG_FRAME_POINTER_UNWINDER=y
-# CONFIG_ORC_UNWINDER is not set
+# CONFIG_UNWINDER_ORC is not set
+CONFIG_UNWINDER_FRAME_POINTER=y
+# CONFIG_UNWINDER_GUESS is not set
#
# Security options
@@ -5709,6 +6417,7 @@ CONFIG_SECURITY=y
# CONFIG_SECURITY_WRITABLE_HOOKS is not set
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
+CONFIG_PAGE_TABLE_ISOLATION=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
CONFIG_SECURITY_PATH=y
CONFIG_INTEL_TXT=y
@@ -5759,9 +6468,10 @@ CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=y
CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
CONFIG_CRYPTO_ACOMP2=y
CONFIG_CRYPTO_RSA=y
-# CONFIG_CRYPTO_DH is not set
+CONFIG_CRYPTO_DH=m
CONFIG_CRYPTO_ECDH=m
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
@@ -5772,10 +6482,13 @@ CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_NULL2=y
# CONFIG_CRYPTO_PCRYPT is not set
CONFIG_CRYPTO_WORKQUEUE=y
-# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_CRYPTD=y
# CONFIG_CRYPTO_MCRYPTD is not set
CONFIG_CRYPTO_AUTHENC=m
# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_ABLK_HELPER=m
+CONFIG_CRYPTO_SIMD=y
+CONFIG_CRYPTO_GLUE_HELPER_X86=y
CONFIG_CRYPTO_ENGINE=m
#
@@ -5794,7 +6507,7 @@ CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_ECB=y
-# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_LRW=m
# CONFIG_CRYPTO_PCBC is not set
CONFIG_CRYPTO_XTS=y
# CONFIG_CRYPTO_KEYWRAP is not set
@@ -5811,7 +6524,7 @@ CONFIG_CRYPTO_HMAC=y
# Digest
#
CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_CRC32C_INTEL is not set
+CONFIG_CRYPTO_CRC32C_INTEL=m
CONFIG_CRYPTO_CRC32=y
# CONFIG_CRYPTO_CRC32_PCLMUL is not set
CONFIG_CRYPTO_CRCT10DIF=y
@@ -5827,17 +6540,17 @@ CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
CONFIG_CRYPTO_SHA1=y
-# CONFIG_CRYPTO_SHA1_SSSE3 is not set
-# CONFIG_CRYPTO_SHA256_SSSE3 is not set
-# CONFIG_CRYPTO_SHA512_SSSE3 is not set
+CONFIG_CRYPTO_SHA1_SSSE3=y
+CONFIG_CRYPTO_SHA256_SSSE3=y
+CONFIG_CRYPTO_SHA512_SSSE3=y
# CONFIG_CRYPTO_SHA1_MB is not set
# CONFIG_CRYPTO_SHA256_MB is not set
# CONFIG_CRYPTO_SHA512_MB is not set
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
-# CONFIG_CRYPTO_SHA3 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
+CONFIG_CRYPTO_SHA3=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
#
@@ -5845,12 +6558,13 @@ CONFIG_CRYPTO_SHA512=y
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_TI is not set
-# CONFIG_CRYPTO_AES_X86_64 is not set
-# CONFIG_CRYPTO_AES_NI_INTEL is not set
+CONFIG_CRYPTO_AES_X86_64=y
+CONFIG_CRYPTO_AES_NI_INTEL=y
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=y
+CONFIG_CRYPTO_BLOWFISH_X86_64=y
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set
@@ -5868,23 +6582,24 @@ CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_CHACHA20 is not set
# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
-# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
-# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
+CONFIG_CRYPTO_SERPENT=y
+CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m
+CONFIG_CRYPTO_SERPENT_AVX_X86_64=m
+CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
-# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
-# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_TWOFISH_COMMON=y
+CONFIG_CRYPTO_TWOFISH_X86_64=m
+CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
+CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
#
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
+CONFIG_CRYPTO_LZO=m
# CONFIG_CRYPTO_842 is not set
-# CONFIG_CRYPTO_LZ4 is not set
+CONFIG_CRYPTO_LZ4=m
# CONFIG_CRYPTO_LZ4HC is not set
#
@@ -5897,23 +6612,31 @@ CONFIG_CRYPTO_DRBG_HMAC=y
# CONFIG_CRYPTO_DRBG_CTR is not set
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_JITTERENTROPY=y
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+CONFIG_CRYPTO_USER_API=y
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
# CONFIG_CRYPTO_USER_API_RNG is not set
# CONFIG_CRYPTO_USER_API_AEAD is not set
CONFIG_CRYPTO_HASH_INFO=y
CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_PADLOCK is not set
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set
-# CONFIG_CRYPTO_DEV_CCP is not set
-# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set
-# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set
-# CONFIG_CRYPTO_DEV_QAT_C62X is not set
-# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set
-# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set
-# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set
-# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set
-# CONFIG_CRYPTO_DEV_CHELSIO is not set
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_SP_CCP=y
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+CONFIG_CRYPTO_DEV_QAT=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
+CONFIG_CRYPTO_DEV_QAT_C3XXX=m
+CONFIG_CRYPTO_DEV_QAT_C62X=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_NITROX=m
+CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
+CONFIG_CRYPTO_DEV_CHELSIO=m
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
@@ -5949,6 +6672,7 @@ CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_VHOST_NET=m
+# CONFIG_VHOST_VSOCK is not set
CONFIG_VHOST=m
# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
# CONFIG_BINARY_PRINTF is not set
@@ -5990,6 +6714,7 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_COMPRESS=m
CONFIG_LZ4_DECOMPRESS=y
CONFIG_ZSTD_COMPRESS=m
CONFIG_ZSTD_DECOMPRESS=m
@@ -6009,6 +6734,10 @@ CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_DECOMPRESS_LZ4=y
CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_BTREE=y
CONFIG_INTERVAL_TREE=y
CONFIG_RADIX_TREE_MULTIORDER=y
@@ -6042,4 +6771,5 @@ CONFIG_ARCH_HAS_SG_CHAIN=y
CONFIG_ARCH_HAS_PMEM_API=y
CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y
CONFIG_SBITMAP=y
+CONFIG_PARMAN=m
# CONFIG_STRING_SELFTEST is not set
diff --git a/system/gcc/001_all_default-ssp-strong.patch b/system/gcc/001_all_default-ssp-strong.patch
new file mode 100644
index 000000000..95949eb00
--- /dev/null
+++ b/system/gcc/001_all_default-ssp-strong.patch
@@ -0,0 +1,215 @@
+# DP: Turn on -fstack-protector by default for C, C++, ObjC, ObjC++.
+# DP: Build libgcc using -fno-stack-protector.
+
+---
+ gcc/Makefile.in | 2 ++
+ gcc/cp/lang-specs.h | 6 +++---
+ gcc/doc/invoke.texi | 4 ++++
+ gcc/gcc.c | 18 ++++++++++++++----
+ gcc/objc/lang-specs.h | 10 +++++-----
+ gcc/objcp/lang-specs.h | 8 ++++----
+ 6 files changed, 32 insertions(+), 16 deletions(-)
+
+Index: b/gcc/gcc.c
+===================================================================
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -858,6 +858,14 @@ proper position among the other output f
+ #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+ #endif
+
++#ifndef SSP_DEFAULT_SPEC
++#ifdef TARGET_LIBC_PROVIDES_SSP
++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:%{!fstack-protector:-fstack-protector-strong}}}}}"
++#else
++#define SSP_DEFAULT_SPEC ""
++#endif
++#endif
++
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+@@ -1057,6 +1065,7 @@ static const char *cc1_spec = CC1_SPEC;
+ static const char *cc1plus_spec = CC1PLUS_SPEC;
+ static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
+ static const char *link_ssp_spec = LINK_SSP_SPEC;
++static const char *ssp_default_spec = SSP_DEFAULT_SPEC;
+ static const char *asm_spec = ASM_SPEC;
+ static const char *asm_final_spec = ASM_FINAL_SPEC;
+ static const char *link_spec = LINK_SPEC;
+@@ -1112,7 +1121,7 @@ static const char *cpp_unique_options =
+ static const char *cpp_options =
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+ %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
+- %{undef} %{save-temps*:-fpch-preprocess}";
++ %{undef} %{save-temps*:-fpch-preprocess} %(ssp_default)";
+
+ /* This contains cpp options which are not passed when the preprocessor
+ output will be used by another program. */
+@@ -1301,9 +1310,9 @@ static const struct compiler default_com
+ %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
+ %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
+ cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
+- %(cc1_options)}\
++ %(cc1_options) %(ssp_default)}\
+ %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
+- cc1 %(cpp_unique_options) %(cc1_options)}}}\
++ cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1},
+ {"-",
+ "%{!E:%e-E or -x required when input is from standard input}\
+@@ -1328,7 +1337,7 @@ static const struct compiler default_com
+ %W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0},
+ {".i", "@cpp-output", 0, 0, 0},
+ {"@cpp-output",
+- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
++ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+ {".s", "@assembler", 0, 0, 0},
+ {"@assembler",
+ "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
+@@ -1560,6 +1569,7 @@ static struct spec_list static_specs[] =
+ INIT_STATIC_SPEC ("cc1plus", &cc1plus_spec),
+ INIT_STATIC_SPEC ("link_gcc_c_sequence", &link_gcc_c_sequence_spec),
+ INIT_STATIC_SPEC ("link_ssp", &link_ssp_spec),
++ INIT_STATIC_SPEC ("ssp_default", &ssp_default_spec),
+ INIT_STATIC_SPEC ("endfile", &endfile_spec),
+ INIT_STATIC_SPEC ("link", &link_spec),
+ INIT_STATIC_SPEC ("lib", &lib_spec),
+Index: b/gcc/cp/lang-specs.h
+===================================================================
+--- a/gcc/cp/lang-specs.h
++++ b/gcc/cp/lang-specs.h
+@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3.
+ %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+ cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+- %(cc1_options) %2\
++ %(cc1_options) %(ssp_default) %2\
+ %{!fsyntax-only:-o %g.s \
+ %{!fdump-ada-spec*:%{!o*:--output-pch=%i.gch}\
+ %W{o*:--output-pch=%*}}%V}}}}",
+@@ -58,11 +58,11 @@ along with GCC; see the file COPYING3.
+ %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+ cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+- %(cc1_options) %2\
++ %(cc1_options) %(ssp_default) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}",
+ CPLUSPLUS_CPP_SPEC, 0, 0},
+ {".ii", "@c++-cpp-output", 0, 0, 0},
+ {"@c++-cpp-output",
+ "%{!M:%{!MM:%{!E:\
+- cc1plus -fpreprocessed %i %(cc1_options) %2\
++ cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+Index: b/gcc/params.def
+===================================================================
+--- a/gcc/params.def
++++ b/gcc/params.def
+@@ -673,7 +673,7 @@ DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
+ DEFPARAM (PARAM_SSP_BUFFER_SIZE,
+ "ssp-buffer-size",
+ "The lower bound for a buffer to be considered for stack smashing protection.",
+- 8, 1, 0)
++ 4, 1, 0)
+
+ DEFPARAM (PARAM_MIN_SIZE_FOR_STACK_SHARING,
+ "min-size-for-stack-sharing",
+Index: b/gcc/objc/lang-specs.h
+===================================================================
+--- a/gcc/objc/lang-specs.h
++++ b/gcc/objc/lang-specs.h
+@@ -29,9 +29,9 @@ along with GCC; see the file COPYING3.
+ %{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+- cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
++ cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\
+ %{!save-temps*:%{!no-integrated-cpp:\
+- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\
++ cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+ {"@objective-c-header",
+ "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\
+@@ -40,18 +40,18 @@ along with GCC; see the file COPYING3.
+ %{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+- cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++ cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ -o %g.s %{!o*:--output-pch=%i.gch}\
+ %W{o*:--output-pch=%*}%V}\
+ %{!save-temps*:%{!no-integrated-cpp:\
+- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++ cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ -o %g.s %{!o*:--output-pch=%i.gch}\
+ %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0},
+ {".mi", "@objective-c-cpp-output", 0, 0, 0},
+ {"@objective-c-cpp-output",
+- "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++ "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+ {"@objc-cpp-output",
+ "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output instead\n\
+- %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++ %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+Index: b/gcc/objcp/lang-specs.h
+===================================================================
+--- a/gcc/objcp/lang-specs.h
++++ b/gcc/objcp/lang-specs.h
+@@ -36,7 +36,7 @@ along with GCC; see the file COPYING3.
+ %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+ cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+- %(cc1_options) %2\
++ %(cc1_options) %(ssp_default) %2\
+ -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}",
+ CPLUSPLUS_CPP_SPEC, 0, 0},
+ {"@objective-c++",
+@@ -46,16 +46,16 @@ along with GCC; see the file COPYING3.
+ %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+ cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+- %(cc1_options) %2\
++ %(cc1_options) %(ssp_default) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}",
+ CPLUSPLUS_CPP_SPEC, 0, 0},
+ {".mii", "@objective-c++-cpp-output", 0, 0, 0},
+ {"@objective-c++-cpp-output",
+ "%{!M:%{!MM:%{!E:\
+- cc1objplus -fpreprocessed %i %(cc1_options) %2\
++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+ {"@objc++-cpp-output",
+ "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\
+ %{!M:%{!MM:%{!E:\
+- cc1objplus -fpreprocessed %i %(cc1_options) %2\
++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+Index: b/gcc/doc/invoke.texi
+===================================================================
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -9247,6 +9247,9 @@
+ The minimum size of variables taking part in stack slot sharing when not
+ optimizing. The default value is 32.
+
++The Alpine Linux default is "4", to increase
++the number of functions protected by the stack protector.
++
+ @item max-jump-thread-duplication-stmts
+ Maximum number of statements allowed in a block that needs to be
+ duplicated when threading jumps.
+@@ -10185,6 +10188,11 @@
+ Like @option{-fstack-protector} but includes additional functions to
+ be protected --- those that have local array definitions, or have
+ references to local frame addresses.
++
++NOTE: In Alpine Linux,
++@option{-fstack-protector-strong} is enabled by default for C,
++C++, ObjC, ObjC++, if none of @option{-fno-stack-protector},
++@option{-nostdlib}, nor @option{-ffreestanding} are found.
+
+ @item -fstack-protector-explicit
+ @opindex fstack-protector-explicit
diff --git a/system/gcc/002_all_default-relro.patch b/system/gcc/002_all_default-relro.patch
new file mode 100644
index 000000000..c461017dc
--- /dev/null
+++ b/system/gcc/002_all_default-relro.patch
@@ -0,0 +1,33 @@
+# Turn on -Wl,-z,relro,-z,now by default.
+
+---
+ gcc/doc/invoke.texi | 3 +++
+ gcc/gcc.c | 1 +
+ 2 files changed, 4 insertions(+), 0 deletions(-)
+
+Index: b/gcc/doc/invoke.texi
+===================================================================
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -11424,6 +11424,9 @@ For example, @option{-Wl,-Map,output.map
+ linker. When using the GNU linker, you can also get the same effect with
+ @option{-Wl,-Map=output.map}.
+
++NOTE: In Alpine Linux, for LDFLAGS, the option
++@option{-Wl,-z,relro,now} is used. To disable, use @option{-Wl,-z,norelro}.
++
+ @item -u @var{symbol}
+ @opindex u
+ Pretend the symbol @var{symbol} is undefined, to force linking of
+Index: b/gcc/gcc.c
+===================================================================
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -890,6 +890,7 @@ proper position among the other output f
+ "%{flto|flto=*:%<fcompare-debug*} \
+ %{flto} %{fno-lto} %{flto=*} %l " LINK_PIE_SPEC \
+ "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
++ "-z relro -z now " \
+ "%X %{o*} %{e*} %{N} %{n} %{r}\
+ %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} " VTABLE_VERIFICATION_SPEC " \
+ %{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\
diff --git a/system/gcc/003_all_default-fortify-source.patch b/system/gcc/003_all_default-fortify-source.patch
new file mode 100644
index 000000000..6ca803343
--- /dev/null
+++ b/system/gcc/003_all_default-fortify-source.patch
@@ -0,0 +1,40 @@
+# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++,
+# DP: if the optimization level is > 0
+
+---
+ gcc/doc/invoke.texi | 6 ++++++
+ gcc/c-family/c-cppbuiltin.c | 3 +
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+Index: b/gcc/doc/invoke.texi
+===================================================================
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -7840,6 +7840,12 @@ also turns on the following optimization
+ Please note the warning under @option{-fgcse} about
+ invoking @option{-O2} on programs that use computed gotos.
+
++NOTE: In Alpine Linux, @option{-D_FORTIFY_SOURCE=2} is
++set by default, and is activated when @option{-O} is set to 2 or higher.
++This enables additional compile-time and run-time checks for several libc
++functions. To disable, specify either @option{-U_FORTIFY_SOURCE} or
++@option{-D_FORTIFY_SOURCE=0}.
++
+ @item -O3
+ @opindex O3
+ Optimize yet more. @option{-O3} turns on all optimizations specified
+Index: b/gcc/c-family/c-cppbuiltin.c
+===================================================================
+--- a/gcc/c-family/c-cppbuiltin.c
++++ b/gcc/c-family/c-cppbuiltin.c
+@@ -1176,6 +1176,10 @@ c_cpp_builtins (cpp_reader *pfile)
+ builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
+ builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
+
++ /* Fortify Source enabled by default for optimization levels > 0 */
++ if (optimize)
++ builtin_define_with_int_value ("_FORTIFY_SOURCE", 2);
++
+ /* Misc. */
+ if (flag_gnu89_inline)
+ cpp_define (pfile, "__GNUC_GNU_INLINE__");
diff --git a/system/gcc/005_all_default-as-needed.patch b/system/gcc/005_all_default-as-needed.patch
new file mode 100644
index 000000000..ee4f7962a
--- /dev/null
+++ b/system/gcc/005_all_default-as-needed.patch
@@ -0,0 +1,241 @@
+# DP: On linux targets pass --as-needed by default to the linker, but always
+# DP: link the sanitizer libraries with --no-as-needed.
+
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -568,8 +568,11 @@ proper position among the other output f
+ #ifdef LIBTSAN_EARLY_SPEC
+ #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS
+ #elif defined(HAVE_LD_STATIC_DYNAMIC)
+-#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \
+- "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \
++#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \
++ " %{!static-libtsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
++ " -ltsan " \
++ " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \
++ " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
+ STATIC_LIBTSAN_LIBS
+ #else
+ #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS
+--- a/gcc/config/gnu-user.h
++++ b/gcc/config/gnu-user.h
+@@ -124,13 +124,13 @@
+ #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
+ "%{static-libasan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
+- LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
++ LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}"
+ #undef LIBTSAN_EARLY_SPEC
+ #define LIBTSAN_EARLY_SPEC "%{static-libtsan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
+- LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}"
+ #undef LIBLSAN_EARLY_SPEC
+ #define LIBLSAN_EARLY_SPEC "%{static-liblsan:%{!shared:" \
+ LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \
+- LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}"
++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}"
+ #endif
+Index: b/gcc/config/aarch64/aarch64-linux.h
+===================================================================
+--- a/gcc/config/aarch64/aarch64-linux.h
++++ b/gcc/config/aarch64/aarch64-linux.h
+@@ -36,5 +36,6 @@
+
+ #define LINUX_TARGET_LINK_SPEC "%{h*} \
++ --as-needed \
+ %{static:-Bstatic} \
+ %{shared:-shared} \
+ %{symbolic:-Bsymbolic} \
+Index: b/gcc/config/ia64/linux.h
+===================================================================
+--- a/gcc/config/ia64/linux.h
++++ b/gcc/config/ia64/linux.h
+@@ -58,7 +58,7 @@ do { \
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+
+ #undef LINK_SPEC
+-#define LINK_SPEC "\
++#define LINK_SPEC " --as-needed \
+ %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+Index: b/gcc/config/sparc/linux.h
+===================================================================
+--- a/gcc/config/sparc/linux.h
++++ b/gcc/config/sparc/linux.h
+@@ -86,7 +86,7 @@ extern const char *host_detect_local_cpu
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+
+ #undef LINK_SPEC
+-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
++#define LINK_SPEC "-m elf32_sparc --as-needed %{shared:-shared} \
+ %{!mno-relax:%{!r:-relax}} \
+ %{!shared: \
+ %{!static: \
+Index: b/gcc/config/s390/linux.h
+===================================================================
+--- a/gcc/config/s390/linux.h
++++ b/gcc/config/s390/linux.h
+@@ -65,7 +65,7 @@ along with GCC; see the file COPYING3.
+
+ #undef LINK_SPEC
+ #define LINK_SPEC \
+- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --as-needed \
+ %{shared:-shared} \
+ %{!shared: \
+ %{static:-static} \
+Index: b/gcc/config/rs6000/linux64.h
+===================================================================
+--- a/gcc/config/rs6000/linux64.h
++++ b/gcc/config/rs6000/linux64.h
+@@ -466,12 +466,12 @@ extern int dot_symbols;
+ " -m elf64ppc")
+ #endif
+
+-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --as-needed %{!shared: %{!static: \
+ %{rdynamic:-export-dynamic} \
+ -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}} \
+ %(link_os_extra_spec32)"
+
+-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --as-needed %{!shared: %{!static: \
+ %{rdynamic:-export-dynamic} \
+ -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \
+ %(link_os_extra_spec64)"
+Index: b/gcc/config/rs6000/sysv4.h
+===================================================================
+--- a/gcc/config/rs6000/sysv4.h
++++ b/gcc/config/rs6000/sysv4.h
+@@ -784,7 +784,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
+ MUSL_DYNAMIC_LINKER)
+
+-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --as-needed %{!shared: %{!static: \
+ %{rdynamic:-export-dynamic} \
+ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+
+Index: b/gcc/config/i386/gnu-user64.h
+===================================================================
+--- a/gcc/config/i386/gnu-user64.h
++++ b/gcc/config/i386/gnu-user64.h
+@@ -57,5 +57,6 @@ see the files COPYING3 and COPYING.RUNTI
+ %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \
+ %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \
++ --as-needed \
+ %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+Index: b/gcc/config/i386/gnu-user.h
+===================================================================
+--- a/gcc/config/i386/gnu-user.h
++++ b/gcc/config/i386/gnu-user.h
+@@ -74,7 +74,7 @@ along with GCC; see the file COPYING3.
+ { "link_emulation", GNU_USER_LINK_EMULATION },\
+ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
+
+-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --as-needed %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+Index: b/gcc/config/alpha/linux-elf.h
+===================================================================
+--- a/gcc/config/alpha/linux-elf.h
++++ b/gcc/config/alpha/linux-elf.h
+@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3.
+
+ #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER
+
+-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
++#define LINK_SPEC "-m elf64alpha --as-needed %{G*} %{relax:-relax} \
+ %{O*:-O3} %{!O*:-O1} \
+ %{shared:-shared} \
+ %{!shared: \
+Index: b/gcc/config/arm/linux-elf.h
+===================================================================
+--- a/gcc/config/arm/linux-elf.h
++++ b/gcc/config/arm/linux-elf.h
+@@ -73,5 +73,6 @@
+ %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
+ -X \
++ --as-needed \
+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+ SUBTARGET_EXTRA_LINK_SPEC
+
+Index: b/gcc/config/mips/gnu-user.h
+===================================================================
+--- a/gcc/config/mips/gnu-user.h
++++ b/gcc/config/mips/gnu-user.h
+@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3.
+ #undef GNU_USER_TARGET_LINK_SPEC
+ #define GNU_USER_TARGET_LINK_SPEC "\
+ %{G*} %{EB} %{EL} %{mips*} %{shared} \
++ -as-needed \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+Index: b/libjava/Makefile.am
+===================================================================
+--- a/libjava/Makefile.am
++++ b/libjava/Makefile.am
+@@ -627,14 +631,14 @@
+ rm .libs/libgcj_bc.so; \
+ mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
+ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
++ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
+ rm .libs/libgcj_bc.so.1; \
+ $(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
+
+ ## This rule creates the libgcj_bc library that is actually installed.
+ install/libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) install/$(am__dirstamp)
+ $(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \
+- $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS)
++ $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) -Wl,--no-as-needed -lgcj
+
+ ## Note that property_files is defined in sources.am.
+ propertyo_files = $(patsubst classpath/resource/%,%,$(addsuffix .lo,$(property_files)))
+@@ -762,7 +766,7 @@
+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+- -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
++ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
+ $(LN_S) libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.la;
+
+Index: b/libjava/Makefile.in
+===================================================================
+--- a/libjava/Makefile.in
++++ b/libjava/Makefile.in
+@@ -10644,13 +10648,13 @@
+ rm .libs/libgcj_bc.so; \
+ mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
+ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
++ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
+ rm .libs/libgcj_bc.so.1; \
+ $(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
+
+ install/libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) install/$(am__dirstamp)
+ $(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \
+- $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS)
++ $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) -Wl,--no-as-needed -lgcj
+
+ $(propertyo_files): %.lo: classpath/resource/%
+ $(mkinstalldirs) `dirname $@`; \
+@@ -12494,7 +12498,7 @@
+ @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+ @USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+ @USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+-@USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
++@USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
+ @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
+ @USE_LIBGCJ_BC_TRUE@ $(LN_S) libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
+ @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.la;
+
diff --git a/system/gcc/011_all_default-warn-format-security.patch b/system/gcc/011_all_default-warn-format-security.patch
new file mode 100644
index 000000000..a58383a8e
--- /dev/null
+++ b/system/gcc/011_all_default-warn-format-security.patch
@@ -0,0 +1,43 @@
+Enable -Wformat and -Wformat-security by default.
+
+
+--- a/gcc/c-family/c.opt
++++ b/gcc/c-family/c.opt
+@@ -412,7 +412,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ O
+ Warn about format strings that are not literals
+
+ Wformat-security
+-C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
++C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
+ Warn about possible security problems with format functions
+
+ Wformat-y2k
+@@ -424,7 +424,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++
+ Warn about zero-length formats
+
+ Wformat=
+-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
++C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
+ Warn about printf/scanf/strftime/strfmon format string anomalies
+
+ Wignored-qualifiers
+--- a/gcc/doc/gcc.info
++++ b/gcc/doc/gcc.info
+@@ -3451,6 +3451,8 @@ compiler warns that an unrecognized option is present.
+ '-Wno-format-contains-nul', '-Wno-format-extra-args', and
+ '-Wno-format-zero-length'. '-Wformat' is enabled by '-Wall'.
+
++ This option is enabled by default in Alpine Linux.
++
+ '-Wno-format-contains-nul'
+ If '-Wformat' is specified, do not warn about format strings
+ that contain NUL bytes.
+@@ -3496,6 +3498,8 @@ compiler warns that an unrecognized option is present.
+ future warnings may be added to '-Wformat-security' that are
+ not included in '-Wformat-nonliteral'.)
+
++ This option is enabled by default in Alpine Linux.
++
+ '-Wformat-y2k'
+ If '-Wformat' is specified, also warn about 'strftime' formats
+ that may yield only a two-digit year.
diff --git a/system/gcc/012_all_default-warn-trampolines.patch b/system/gcc/012_all_default-warn-trampolines.patch
new file mode 100644
index 000000000..9ab4378d4
--- /dev/null
+++ b/system/gcc/012_all_default-warn-trampolines.patch
@@ -0,0 +1,25 @@
+Enable -Wtrampolines by default.
+
+
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -648,7 +648,7 @@ Common Var(warn_system_headers) Warning
+ Do not suppress warnings from system headers
+
+ Wtrampolines
+-Common Var(warn_trampolines) Warning
++Common Var(warn_trampolines) Init(1) Warning
+ Warn whenever a trampoline is generated
+
+ Wtype-limits
+--- a/gcc/doc/gcc.info
++++ b/gcc/doc/gcc.info
+@@ -4021,6 +4021,8 @@ compiler warns that an unrecognized option is present.
+ and thus requires the stack to be made executable in order for the
+ program to work properly.
+
++ This warning is enabled by default in Gentoo.
++
+ '-Wfloat-equal'
+ Warn if floating-point values are used in equality comparisons.
+
diff --git a/system/gcc/020_all_msgfmt-libstdc++-link.patch b/system/gcc/020_all_msgfmt-libstdc++-link.patch
new file mode 100644
index 000000000..a70ea50a0
--- /dev/null
+++ b/system/gcc/020_all_msgfmt-libstdc++-link.patch
@@ -0,0 +1,39 @@
+Ensure that msgfmt doesn't encounter problems during gcc bootstrapping.
+
+Solves error messages like the following:
+
+msgfmt: /var/tmp/portage/sys-devel/gcc-4.1.2/work/build/./gcc/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/libstdc++.so.6)
+
+The libgcc_s.so used during build doesn't satisfy the needs of the
+libstdc++.so that msgfmt is linked against. On the other hand, msgfmt
+is used as a stand-alone application here, and what library it uses
+behind the scenes is of no concern to the gcc build process.
+Therefore, simply invoking it "as usual", i.e. without any special
+library path, will make it work as expected here.
+
+2011-09-19 Martin von Gagern
+
+References:
+https://bugs.gentoo.org/372377
+https://bugs.gentoo.org/295480
+
+--- gcc-4.1.2.orig/libstdc++-v3/po/Makefile.am
++++ gcc-4.1.2/libstdc++-v3/po/Makefile.am
+@@ -39,6 +39,7 @@ MSGFMT = msgfmt
+ EXTRA_DIST = string_literals.cc POTFILES.in $(PACKAGE).pot $(LOCALE_IN)
+
+ .po.mo:
++ env --unset=LD_LIBRARY_PATH \
+ $(MSGFMT) -o $@ $<
+
+ all-local: all-local-$(USE_NLS)
+--- gcc-4.1.2.orig/libstdc++-v3/po/Makefile.in
++++ gcc-4.1.2/libstdc++-v3/po/Makefile.in
+@@ -419,6 +419,7 @@ uninstall-am: uninstall-info-am
+
+
+ .po.mo:
++ env --unset=LD_LIBRARY_PATH \
+ $(MSGFMT) -o $@ $<
+
+ all-local: all-local-$(USE_NLS)
diff --git a/system/gcc/050_all_libiberty-asprintf.patch b/system/gcc/050_all_libiberty-asprintf.patch
new file mode 100644
index 000000000..bee0c4c23
--- /dev/null
+++ b/system/gcc/050_all_libiberty-asprintf.patch
@@ -0,0 +1,18 @@
+2008-07-25 Magnus Granberg <zorry@ume.nu>
+
+ * include/libiberty.h (asprintf): Don't declare if defined as a macro
+
+--- a/include/libiberty.h
++++ b/include/libiberty.h
+@@ -609,8 +609,11 @@ extern int pwait (int, int *, int);
+ /* Like sprintf but provides a pointer to malloc'd storage, which must
+ be freed by the caller. */
+
++/* asprintf may be declared as a macro by glibc with __USE_FORTIFY_LEVEL. */
++#ifndef asprintf
+ extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
+ #endif
++#endif
+
+ #if !HAVE_DECL_VASPRINTF
+ /* Like vsprintf but provides a pointer to malloc'd storage, which
diff --git a/system/gcc/051_all_libiberty-pic.patch b/system/gcc/051_all_libiberty-pic.patch
new file mode 100644
index 000000000..b6160a730
--- /dev/null
+++ b/system/gcc/051_all_libiberty-pic.patch
@@ -0,0 +1,10 @@
+--- a/libiberty/Makefile.in
++++ b/libiberty/Makefile.in
+@@ -246,6 +246,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
+ $(AR) $(AR_FLAGS) $(TARGETLIB) \
+ $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
+ $(RANLIB) $(TARGETLIB); \
++ cp $(TARGETLIB) ../ ; \
+ cd ..; \
+ else true; fi
+
diff --git a/system/gcc/053_all_libitm-no-fortify-source.patch b/system/gcc/053_all_libitm-no-fortify-source.patch
new file mode 100644
index 000000000..5ab15afc3
--- /dev/null
+++ b/system/gcc/053_all_libitm-no-fortify-source.patch
@@ -0,0 +1,27 @@
+https://bugs.gentoo.org/508852
+https://gcc.gnu.org/PR61164
+
+2014-04-27 Magnus Granberg <zorry@gentoo.org>
+
+ #508852
+ * libitm/configure.tgt: Disable FORTIFY
+
+--- a/libitm/configure.tgt
++++ b/libitm/configure.tgt
+@@ -43,6 +43,16 @@ if test "$gcc_cv_have_tls" = yes ; then
+ esac
+ fi
+
++# FIXME: error: inlining failed in call to always_inline
++# ‘int vfprintf(FILE*, const char*, __va_list_tag*)’
++# : function body can be overwritten at link time
++# Disable Fortify in libitm for now. #508852
++case "${target}" in
++ *-*-linux*)
++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE"
++ ;;
++esac
++
+ # Map the target cpu to an ARCH sub-directory. At the same time,
+ # work out any special compilation flags as necessary.
+ case "${target_cpu}" in
diff --git a/system/gcc/067_all_gcc-poison-system-directories.patch b/system/gcc/067_all_gcc-poison-system-directories.patch
new file mode 100644
index 000000000..103671617
--- /dev/null
+++ b/system/gcc/067_all_gcc-poison-system-directories.patch
@@ -0,0 +1,194 @@
+http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-devtools/gcc/gcc-6.1/0010-gcc-poison-system-directories.patch
+
+From d76250323dad69212c958e4857a98d99ab51a39e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:59:00 +0400
+Subject: [PATCH 10/46] gcc: poison-system-directories
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [distribution: codesourcery]
+---
+ gcc/common.opt | 4 ++++
+ gcc/config.in | 6 ++++++
+ gcc/configure | 16 ++++++++++++++++
+ gcc/configure.ac | 10 ++++++++++
+ gcc/doc/invoke.texi | 9 +++++++++
+ gcc/gcc.c | 2 ++
+ gcc/incpath.c | 19 +++++++++++++++++++
+ 7 files changed, 66 insertions(+)
+
+diff --git a/gcc/common.opt b/gcc/common.opt
+index 67048db..733185c 100644
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -659,6 +659,10 @@ Wreturn-local-addr
+ Common Var(warn_return_local_addr) Init(1) Warning
+ Warn about returning a pointer/reference to a local or temporary variable.
+
++Wpoison-system-directories
++Common Var(flag_poison_system_directories) Init(1) Warning
++Warn for -I and -L options using system directories if cross compiling
++
+ Wshadow
+ Common Var(warn_shadow) Warning
+ Warn when one local variable shadows another.
+diff --git a/gcc/config.in b/gcc/config.in
+index 115cb61..105b30f 100644
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -187,6 +187,12 @@
+ #endif
+
+
++/* Define to warn for use of native system header directories */
++#ifndef USED_FOR_TARGET
++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
++#endif
++
++
+ /* Define if you want all operations on RTL (the basic data structure of the
+ optimizer and back end) to be checked for dynamic type safety at runtime.
+ This is quite expensive. */
+diff --git a/gcc/configure b/gcc/configure
+index 1c6e340..8f83152 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -942,6 +942,7 @@ with_system_zlib
+ enable_maintainer_mode
+ enable_link_mutex
+ enable_version_specific_runtime_libs
++enable_poison_system_directories
+ enable_plugin
+ enable_host_shared
+ enable_libquadmath_support
+@@ -1681,6 +1682,8 @@ Optional Features:
+ --enable-version-specific-runtime-libs
+ specify that runtime libraries should be installed
+ in a compiler-specific directory
++ --enable-poison-system-directories
++ warn for use of native system header directories
+ --enable-plugin enable plugin support
+ --enable-host-shared build host code as shared libraries
+ --disable-libquadmath-support
+@@ -28908,6 +28911,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
+ fi
+
+
++# Check whether --enable-poison-system-directories was given.
++if test "${enable_poison_system_directories+set}" = set; then :
++ enableval=$enable_poison_system_directories;
++else
++ enable_poison_system_directories=no
++fi
++
++if test "x${enable_poison_system_directories}" = "xyes"; then
++
++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++
++fi
++
+ # Substitute configuration variables
+
+
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 6c1dcd9..0fccaef 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -5861,6 +5861,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
+ [specify that runtime libraries should be
+ installed in a compiler-specific directory])])
+
++AC_ARG_ENABLE([poison-system-directories],
++ AS_HELP_STRING([--enable-poison-system-directories],
++ [warn for use of native system header directories]),,
++ [enable_poison_system_directories=no])
++if test "x${enable_poison_system_directories}" = "xyes"; then
++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
++ [1],
++ [Define to warn for use of native system header directories])
++fi
++
+ # Substitute configuration variables
+ AC_SUBST(subdirs)
+ AC_SUBST(srcdir)
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 821f8fd..8bb49e7 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -284,6 +284,7 @@ Objective-C and Objective-C++ Dialects}.
+ -Wparentheses -Wno-pedantic-ms-format @gol
+ -Wplacement-new -Wplacement-new=@var{n} @gol
+ -Wpointer-arith -Wno-pointer-to-int-cast @gol
++-Wno-poison-system-directories @gol
+ -Wno-pragmas -Wredundant-decls -Wno-return-local-addr @gol
+ -Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
+ -Wshift-overflow -Wshift-overflow=@var{n} @gol
+@@ -4723,6 +4724,14 @@ made up of data only and thus requires no special treatment. But, for
+ most targets, it is made up of code and thus requires the stack to be
+ made executable in order for the program to work properly.
+
++@item -Wno-poison-system-directories
++@opindex Wno-poison-system-directories
++Do not warn for @option{-I} or @option{-L} options using system
++directories such as @file{/usr/include} when cross compiling. This
++option is intended for use in chroot environments when such
++directories contain the correct headers and libraries for the target
++system rather than the host.
++
+ @item -Wfloat-equal
+ @opindex Wfloat-equal
+ @opindex Wno-float-equal
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 1af5920..4cfef7f 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1017,6 +1017,8 @@ proper position among the other output files. */
+ "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
+ "%X %{o*} %{e*} %{N} %{n} %{r}\
+ %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \
++ %{Wno-poison-system-directories:--no-poison-system-directories} \
++ %{Werror=poison-system-directories:--error-poison-system-directories} \
+ %{static:} %{L*} %(mfwrap) %(link_libgcc) " \
+ VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o " CHKP_SPEC " \
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
+diff --git a/gcc/incpath.c b/gcc/incpath.c
+index ea40f4a..856da41 100644
+--- a/gcc/incpath.c
++++ b/gcc/incpath.c
+@@ -26,6 +26,7 @@
+ #include "intl.h"
+ #include "incpath.h"
+ #include "cppdefault.h"
++#include "diagnostic-core.h"
+
+ /* Microsoft Windows does not natively support inodes.
+ VMS has non-numeric inodes. */
+@@ -381,6 +382,24 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
+ }
+ fprintf (stderr, _("End of search list.\n"));
+ }
++
++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
++ if (flag_poison_system_directories)
++ {
++ struct cpp_dir *p;
++
++ for (p = heads[QUOTE]; p; p = p->next)
++ {
++ if ((!strncmp (p->name, "/usr/include", 12))
++ || (!strncmp (p->name, "/usr/local/include", 18))
++ || (!strncmp (p->name, "/usr/X11R6/include", 18)))
++ warning (OPT_Wpoison_system_directories,
++ "include location \"%s\" is unsafe for "
++ "cross-compilation",
++ p->name);
++ }
++ }
++#endif
+ }
+
+ /* Use given -I paths for #include "..." but not #include <...>, and
+--
+2.8.2
+
diff --git a/system/gcc/090_all_pr55930-dependency-tracking.patch b/system/gcc/090_all_pr55930-dependency-tracking.patch
new file mode 100644
index 000000000..a8743e08c
--- /dev/null
+++ b/system/gcc/090_all_pr55930-dependency-tracking.patch
@@ -0,0 +1,18 @@
+libatomic build failure if configured with --disable-dependency-tracking
+load_n.c:115:1: fatal error: opening dependency file .deps/load_1_.lo.Ppo: No such file or directory
+
+https://bugs.gentoo.org/463463
+http://gcc.gnu.org/PR55930
+
+--- a/libatomic/Makefile.in
++++ b/libatomic/Makefile.in
+@@ -298,7 +298,8 @@ PAT_N = $(word 2,$(PAT_SPLIT))
+ PAT_S = $(word 3,$(PAT_SPLIT))
+ IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
+ IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
+-M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
++@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
++@AMDEP_FALSE@M_DEPS =
+ M_SIZE = -DN=$(PAT_N)
+ M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
+ M_FILE = $(PAT_BASE)_n.c
diff --git a/system/gcc/201-cilkrts.patch b/system/gcc/201-cilkrts.patch
new file mode 100644
index 000000000..4aac10d6d
--- /dev/null
+++ b/system/gcc/201-cilkrts.patch
@@ -0,0 +1,59 @@
+From 594e3c1ab576daddeb86015efc8b1677020b1878 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 24 Oct 2015 20:39:30 +0000
+Subject: [PATCH 1/6] cilkrts
+
+---
+ libcilkrts/runtime/os-unix.c | 22 +++++++---------------
+ 1 file changed, 7 insertions(+), 15 deletions(-)
+
+diff --git a/libcilkrts/runtime/os-unix.c b/libcilkrts/runtime/os-unix.c
+index cb582dd..e43d7d5 100644
+--- a/libcilkrts/runtime/os-unix.c
++++ b/libcilkrts/runtime/os-unix.c
+@@ -51,6 +51,7 @@
+ #if defined __linux__
+ # include <sys/sysinfo.h>
+ # include <sys/syscall.h>
++# include <sched.h>
+ #elif defined __APPLE__
+ # include <sys/sysctl.h>
+ // Uses sysconf(_SC_NPROCESSORS_ONLN) in verbose output
+@@ -400,28 +401,19 @@ COMMON_SYSDEP void __cilkrts_sleep(void)
+
+ COMMON_SYSDEP void __cilkrts_yield(void)
+ {
+-#if __APPLE__ || __FreeBSD__ || __VXWORKS__
+- // On MacOS, call sched_yield to yield quantum. I'm not sure why we
+- // don't do this on Linux also.
+- sched_yield();
+-#elif defined(__DragonFly__)
+- // On DragonFly BSD, call sched_yield to yield quantum.
+- sched_yield();
+-#elif defined(__MIC__)
++#if defined(__MIC__)
+ // On MIC, pthread_yield() really trashes things. Arch's measurements
+ // showed that calling _mm_delay_32() (or doing nothing) was a better
+ // option. Delaying 1024 clock cycles is a reasonable compromise between
+ // giving up the processor and latency starting up when work becomes
+ // available
+ _mm_delay_32(1024);
+-#elif defined(__ANDROID__) || (defined(__sun__) && defined(__svr4__))
+- // On Android and Solaris, call sched_yield to yield quantum. I'm not
+- // sure why we don't do this on Linux also.
+- sched_yield();
+-#else
+- // On Linux, call pthread_yield (which in turn will call sched_yield)
+- // to yield quantum.
++#elif defined(__sun__) && !defined(__svr4__)
++ // On old SunOS call pthread_yield to yield a quantum.
+ pthread_yield();
++#else
++ // On other platforms call sched_yield to yield a quantum.
++ sched_yield();
+ #endif
+ }
+
+--
+2.8.1
+
diff --git a/system/gcc/203-libgcc_s.patch b/system/gcc/203-libgcc_s.patch
new file mode 100644
index 000000000..c74351c71
--- /dev/null
+++ b/system/gcc/203-libgcc_s.patch
@@ -0,0 +1,56 @@
+From 9e3eab51e518018d9d99b3123598b1e2322a6af3 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 24 Oct 2015 20:09:53 +0000
+Subject: [PATCH 3/6] libgcc_s
+
+---
+ gcc/config/i386/i386.c | 4 ++--
+ libgcc/config/i386/cpuinfo.c | 6 +++---
+ libgcc/config/i386/t-linux | 2 +-
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
+index 3d044e8..82523e1 100644
+--- a/gcc/config/i386/i386.c
++++ b/gcc/config/i386/i386.c
+@@ -40269,10 +40269,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
+ {
+ case IX86_BUILTIN_CPU_INIT:
+ {
+- /* Make it call __cpu_indicator_init in libgcc. */
++ /* Make it call __cpu_indicator_init_local in libgcc.a. */
+ tree call_expr, fndecl, type;
+ type = build_function_type_list (integer_type_node, NULL_TREE);
+- fndecl = build_fn_decl ("__cpu_indicator_init", type);
++ fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
+ call_expr = build_call_expr (fndecl, 0);
+ return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
+ }
+diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
+index 8c2248d..6c82f15 100644
+--- a/libgcc/config/i386/cpuinfo.c
++++ b/libgcc/config/i386/cpuinfo.c
+@@ -485,7 +485,7 @@ __cpu_indicator_init (void)
+ return 0;
+ }
+
+-#if defined SHARED && defined USE_ELF_SYMVER
+-__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
+-__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
++#ifndef SHARED
++int __cpu_indicator_init_local (void)
++ __attribute__ ((weak, alias ("__cpu_indicator_init")));
+ #endif
+diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
+index 11bb46e..4f47f7b 100644
+--- a/libgcc/config/i386/t-linux
++++ b/libgcc/config/i386/t-linux
+@@ -3,4 +3,4 @@
+ # t-slibgcc-elf-ver and t-linux
+ SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
+
+-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER
++HOST_LIBGCC2_CFLAGS += -mlong-double-80
+--
+2.8.1
+
diff --git a/system/gcc/204-linux_libc_has_function.patch b/system/gcc/204-linux_libc_has_function.patch
new file mode 100644
index 000000000..2dcedc3a7
--- /dev/null
+++ b/system/gcc/204-linux_libc_has_function.patch
@@ -0,0 +1,25 @@
+From edec78452d693fb524daa9a6efd45c850b27b25c Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Fri, 6 Nov 2015 23:59:20 +0000
+Subject: [PATCH 4/6] linux_libc_has_function
+
+---
+ gcc/config/linux.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gcc/config/linux.c b/gcc/config/linux.c
+index 250296b..16c3768 100644
+--- a/gcc/config/linux.c
++++ b/gcc/config/linux.c
+@@ -26,7 +26,7 @@ along with GCC; see the file COPYING3. If not see
+ bool
+ linux_libc_has_function (enum function_class fn_class)
+ {
+- if (OPTION_GLIBC)
++ if (OPTION_GLIBC || OPTION_MUSL)
+ return true;
+ if (OPTION_BIONIC)
+ if (fn_class == function_c94
+--
+2.8.1
+
diff --git a/system/gcc/205-nopie.patch b/system/gcc/205-nopie.patch
new file mode 100644
index 000000000..e3da94d10
--- /dev/null
+++ b/system/gcc/205-nopie.patch
@@ -0,0 +1,75 @@
+From b6015aca9c9cc83739fd0ed637a835119b2c4e34 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 7 Nov 2015 02:08:05 +0000
+Subject: [PATCH 5/6] nopie
+
+---
+ gcc/configure | 27 +++++++++++++++++++++++++++
+ gcc/configure.ac | 13 +++++++++++++
+ 2 files changed, 40 insertions(+)
+
+diff --git a/gcc/configure b/gcc/configure
+index 1c6e340..7e8b5d6 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -29390,6 +29390,33 @@ fi
+ $as_echo "$gcc_cv_no_pie" >&6; }
+ if test "$gcc_cv_no_pie" = "yes"; then
+ NO_PIE_FLAG="-no-pie"
++else
++ # Check if -nopie works.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -nopie option" >&5
++$as_echo_n "checking for -nopie option... " >&6; }
++if test "${gcc_cv_nopie+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ saved_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -nopie"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++int main(void) {return 0;}
++_ACEOF
++if ac_fn_cxx_try_link "$LINENO"; then :
++ gcc_cv_nopie=yes
++else
++ gcc_cv_nopie=no
++fi
++rm -f core conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ LDFLAGS="$saved_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_nopie" >&5
++$as_echo "$gcc_cv_nopie" >&6; }
++ if test "$gcc_cv_nopie" = "yes"; then
++ NO_PIE_FLAG="-nopie"
++ fi
+ fi
+
+
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 6c1dcd9..0ca7647 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -6098,6 +6098,19 @@ AC_CACHE_CHECK([for -no-pie option],
+ LDFLAGS="$saved_LDFLAGS"])
+ if test "$gcc_cv_no_pie" = "yes"; then
+ NO_PIE_FLAG="-no-pie"
++else
++ # Check if -nopie works.
++ AC_CACHE_CHECK([for -nopie option],
++ [gcc_cv_nopie],
++ [saved_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -nopie"
++ AC_LINK_IFELSE([int main(void) {return 0;}],
++ [gcc_cv_nopie=yes],
++ [gcc_cv_nopie=no])
++ LDFLAGS="$saved_LDFLAGS"])
++ if test "$gcc_cv_nopie" = "yes"; then
++ NO_PIE_FLAG="-nopie"
++ fi
+ fi
+ AC_SUBST([NO_PIE_FLAG])
+
+--
+2.8.1
+
diff --git a/system/gcc/207-static-pie.patch b/system/gcc/207-static-pie.patch
new file mode 100644
index 000000000..9355c584b
--- /dev/null
+++ b/system/gcc/207-static-pie.patch
@@ -0,0 +1,40 @@
+diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h
+index b0bf40a..d4b56fe 100644
+--- a/gcc/config/gnu-user.h
++++ b/gcc/config/gnu-user.h
+@@ -51,10 +51,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ #if defined HAVE_LD_PIE
+ #define GNU_USER_TARGET_STARTFILE_SPEC \
+ "%{!shared: %{pg|p|profile:gcrt1.o%s;: \
+- %{" PIE_SPEC ":Scrt1.o%s} %{" NO_PIE_SPEC ":crt1.o%s}}} \
+- crti.o%s %{static:crtbeginT.o%s;: %{shared:crtbeginS.o%s} \
++ %{" PIE_SPEC ":%{static:rcrt1.o%s;:Scrt1.o%s}} %{" NO_PIE_SPEC ":crt1.o%s}}} \
++ crti.o%s %{shared:crtbeginS.o%s;: \
+ %{" PIE_SPEC ":crtbeginS.o%s} \
+- %{" NO_PIE_SPEC ":crtbegin.o%s}} \
++ %{" NO_PIE_SPEC ":%{static:crtbeginT.o%s;:crtbegin.o%s}}} \
+ %{fvtable-verify=none:%s; \
+ fvtable-verify=preinit:vtv_start_preinit.o%s; \
+ fvtable-verify=std:vtv_start.o%s} \
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 0208d61..731564e 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -870,7 +870,7 @@ proper position among the other output files. */
+ #endif
+
+ #ifdef ENABLE_DEFAULT_PIE
+-#define NO_PIE_SPEC "no-pie|static"
++#define NO_PIE_SPEC "no-pie"
+ #define PIE_SPEC NO_PIE_SPEC "|r|shared:;"
+ #define NO_FPIE1_SPEC "fno-pie"
+ #define FPIE1_SPEC NO_FPIE1_SPEC ":;"
+@@ -916,7 +916,7 @@ proper position among the other output files. */
+ #ifndef LINK_PIE_SPEC
+ #ifdef HAVE_LD_PIE
+ #ifndef LD_PIE_SPEC
+-#define LD_PIE_SPEC "-pie"
++#define LD_PIE_SPEC "-pie %{static:--no-dynamic-linker -Bsymbolic}"
+ #endif
+ #else
+ #define LD_PIE_SPEC ""
diff --git a/system/gcc/300-main-gcc-add-musl-s390x-dynamic-linker.patch b/system/gcc/300-main-gcc-add-musl-s390x-dynamic-linker.patch
new file mode 100644
index 000000000..241957871
--- /dev/null
+++ b/system/gcc/300-main-gcc-add-musl-s390x-dynamic-linker.patch
@@ -0,0 +1,32 @@
+From be841c16dd544553c67faac79bd4cc3cd10a1dc0 Mon Sep 17 00:00:00 2001
+From: "Tuan M. Hoang" <tmhoang@flatglobe.org>
+Date: Mon, 21 Nov 2016 01:42:16 +0700
+Subject: [PATCH] main/gcc: add musl s390x dynamic linker
+
+---
+ gcc/config/s390/linux.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
+index 1e3ed35..a244214 100644
+--- a/gcc/config/s390/linux.h
++++ b/gcc/config/s390/linux.h
+@@ -63,6 +63,15 @@ along with GCC; see the file COPYING3. If not see
+ #define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+ #define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
+
++#undef MUSL_DYNAMIC_LINKER
++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-s390x.so.1"
++#undef MUSL_DYNAMIC_LINKER32
++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-s390x.so.1"
++#undef MUSL_DYNAMIC_LINKER64
++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-s390x.so.1"
++#undef MUSL_DYNAMIC_LINKERX32
++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-s390x.so.1"
++
+ #undef LINK_SPEC
+ #define LINK_SPEC \
+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --as-needed \
+--
+2.10.2
+
diff --git a/system/gcc/310-build-gcj-s390x.patch b/system/gcc/310-build-gcj-s390x.patch
new file mode 100644
index 000000000..1e522ee15
--- /dev/null
+++ b/system/gcc/310-build-gcj-s390x.patch
@@ -0,0 +1,28 @@
+From 697a7ba791fce2ffab2ed723d909a89684019e3d Mon Sep 17 00:00:00 2001
+From: "Tuan M. Hoang" <tmhoang@flatglobe.org>
+Date: Sun, 19 Feb 2017 17:03:33 +0000
+Subject: [PATCH] main/gcc : when building gcc-java on s390x, libgcj.so
+ complains about undefined reference to __data_start. Using
+ SEARCH_FOR_DATA_START instead solved it. Credit to Andrew Haley at RedHat.
+
+---
+ boehm-gc/include/private/gcconfig.h | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/boehm-gc/include/private/gcconfig.h b/boehm-gc/include/private/gcconfig.h
+index 4ca6a80..a15fff6 100644
+--- a/boehm-gc/include/private/gcconfig.h
++++ b/boehm-gc/include/private/gcconfig.h
+@@ -1837,8 +1837,7 @@
+ # define OS_TYPE "LINUX"
+ # define LINUX_STACKBOTTOM
+ # define DYNAMIC_LOADING
+- extern int __data_start[];
+-# define DATASTART ((ptr_t)(__data_start))
++# define SEARCH_FOR_DATA_START
+ extern int _end[];
+ # define DATAEND (_end)
+ # define CACHE_LINE_SIZE 256
+--
+2.11.1
+
diff --git a/system/gcc/320-libffi-gnulinux.patch b/system/gcc/320-libffi-gnulinux.patch
new file mode 100644
index 000000000..b3b4fc931
--- /dev/null
+++ b/system/gcc/320-libffi-gnulinux.patch
@@ -0,0 +1,13 @@
+diff --git a/libffi/closures.c.orig b/libffi/closures.c
+index 721ff00..22a699c 100644
+--- a/libffi/src/closures.c.orig
++++ b/libffi/src/closures.c
+@@ -34,7 +34,7 @@
+ #include <ffi_common.h>
+
+ #if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE
+-# if __gnu_linux__ && !defined(__ANDROID__)
++# if __linux__ && !defined(__ANDROID__)
+ /* This macro indicates it may be forbidden to map anonymous memory
+ with both write and execute permission. Code compiled when this
+ option is defined will attempt to map such pages once, but if it
diff --git a/system/gcc/APKBUILD b/system/gcc/APKBUILD
new file mode 100644
index 000000000..5fa1e4e11
--- /dev/null
+++ b/system/gcc/APKBUILD
@@ -0,0 +1,646 @@
+# Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org>
+pkgname=gcc
+pkgver=6.4.0
+[ "$BOOTSTRAP" = "nolibc" ] && pkgname="gcc-pass2"
+[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross=""
+[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
+
+pkgname="$pkgname$_target"
+pkgrel=8
+pkgdesc="The GNU Compiler Collection"
+url="http://gcc.gnu.org"
+arch="all"
+license="GPL LGPL"
+_gccrel=$pkgver-r$pkgrel
+depends="binutils$_target isl"
+makedepends_build="gcc$_cross g++$_cross paxmark bison flex texinfo zip gmp-dev mpfr-dev mpc1-dev zlib-dev"
+makedepends_host="linux-headers gmp-dev mpfr-dev mpc1-dev isl-dev zlib-dev !gettext-dev"
+subpackages=" "
+[ "$CHOST" = "$CTARGET" ] && subpackages="gcc-doc$_target"
+replaces="libstdc++ binutils"
+options="$options !check !dbg strip"
+
+: ${LANG_CXX:=true}
+: ${LANG_OBJC:=true}
+: ${LANG_JAVA:=true}
+: ${LANG_GO:=true}
+: ${LANG_FORTRAN:=true}
+: ${LANG_ADA:=true}
+
+LIBGOMP=true
+LIBGCC=true
+LIBATOMIC=true
+LIBITM=true
+
+if [ "$CHOST" != "$CTARGET" ]; then
+ if [ "$BOOTSTRAP" = nolibc ]; then
+ LANG_CXX=false
+ LANG_ADA=false
+ LIBGCC=false
+ _builddir="$srcdir/build-cross-pass2"
+ else
+ _builddir="$srcdir/build-cross-final"
+ fi
+ LANG_OBJC=false
+ LANG_JAVA=false
+ LANG_GO=false
+ LANG_FORTRAN=false
+ LIBGOMP=false
+ LIBATOMIC=false
+ LIBITM=false
+
+ # reset target flags (should be set in crosscreate abuild)
+ # fixup flags. seems gcc treats CPPFLAGS as global without
+ # _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
+ export CFLAGS="$CPPFLAGS $CFLAGS"
+ export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
+ unset CPPFLAGS
+ export CFLAGS_FOR_TARGET=" "
+ export CXXFLAGS_FOR_TARGET=" "
+ export LDFLAGS_FOR_TARGET=" "
+
+ STRIP_FOR_TARGET="$CTARGET-strip"
+elif [ "$CBUILD" != "$CHOST" ]; then
+ # fixup flags. seems gcc treats CPPFLAGS as global without
+ # _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
+ export CFLAGS="$CPPFLAGS $CFLAGS"
+ export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
+ unset CPPFLAGS
+
+ # reset flags and cc for build
+ export CC_FOR_BUILD="gcc"
+ export CXX_FOR_BUILD="g++"
+ export CFLAGS_FOR_BUILD=" "
+ export CXXFLAGS_FOR_BUILD=" "
+ export LDFLAGS_FOR_BUILD=" "
+ export CFLAGS_FOR_TARGET=" "
+ export CXXFLAGS_FOR_TARGET=" "
+ export LDFLAGS_FOR_TARGET=" "
+
+ # Languages that do not need bootstrapping
+ LANG_OBJC=false
+ LANG_JAVA=false
+ LANG_GO=false
+ LANG_FORTRAN=false
+
+ STRIP_FOR_TARGET=${CROSS_COMPILE}strip
+ _builddir="$srcdir/build-cross-native"
+else
+ STRIP_FOR_TARGET=${CROSS_COMPILE}strip
+ _builddir="$srcdir/build"
+fi
+
+# Go needs {set,make,swap}context, unimplemented in musl
+[ "$CTARGET_LIBC" = musl ] && LANG_GO=false
+
+# libitm has TEXTRELs in ARM build, so disable for now
+case "$CTARGET_ARCH" in
+arm*) LIBITM=false ;;
+esac
+
+# Fortran uses libquadmath if toolchain has __float128
+# currently on x86, x86_64 and ia64
+LIBQUADMATH=$LANG_FORTRAN
+case "$CTARGET_ARCH" in
+pmmx | x86 | x86_64) LIBQUADMATH=$LANG_FORTRAN ;;
+*) LIBQUADMATH=false ;;
+esac
+
+# libatomic is a dependency for openvswitch
+$LIBATOMIC && subpackages="$subpackages libatomic::$CTARGET_ARCH"
+$LIBGCC && subpackages="$subpackages libgcc::$CTARGET_ARCH"
+$LIBQUADMATH && subpackages="$subpackages libquadmath::$CTARGET_ARCH"
+if $LIBGOMP; then
+ depends="$depends libgomp=$_gccrel"
+ subpackages="$subpackages libgomp::$CTARGET_ARCH"
+fi
+
+_languages=c
+if $LANG_CXX; then
+ subpackages="$subpackages libstdc++:libcxx:$CTARGET_ARCH g++$_target:gpp"
+ _languages="$_languages,c++"
+fi
+if $LANG_OBJC; then
+ subpackages="$subpackages libobjc::$CTARGET_ARCH gcc-objc$_target:objc"
+ _languages="$_languages,objc"
+fi
+if $LANG_JAVA; then
+ subpackages="$subpackages libgcj::$CTARGET_ARCH gcc-java$_target:java"
+ _languages="$_languages,java"
+fi
+if $LANG_GO; then
+ subpackages="$subpackages libgo::$CTARGET_ARCH gcc-go$_target:go"
+ _languages="$_languages,go"
+fi
+if $LANG_FORTRAN; then
+ subpackages="$subpackages libgfortran::$CTARGET_ARCH gfortran$_target:gfortran"
+ _languages="$_languages,fortran"
+fi
+if $LANG_ADA; then
+ subpackages="$subpackages libgnat::$CTARGET_ARCH gcc-gnat$_target:gnat"
+ _languages="$_languages,ada"
+ makedepends_build="$makedepends_build gcc-gnat gcc-gnat$_cross"
+fi
+makedepends="$makedepends_build $makedepends_host"
+
+source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkgbase:-$pkgver}.tar.xz
+ ftp://sourceware.org/pub/java/ecj-4.9.jar
+
+ 001_all_default-ssp-strong.patch
+ 002_all_default-relro.patch
+ 003_all_default-fortify-source.patch
+ 005_all_default-as-needed.patch
+ 011_all_default-warn-format-security.patch
+ 012_all_default-warn-trampolines.patch
+ 020_all_msgfmt-libstdc++-link.patch
+ 050_all_libiberty-asprintf.patch
+ 051_all_libiberty-pic.patch
+ 053_all_libitm-no-fortify-source.patch
+ 067_all_gcc-poison-system-directories.patch
+ 090_all_pr55930-dependency-tracking.patch
+
+ 201-cilkrts.patch
+ 203-libgcc_s.patch
+ 204-linux_libc_has_function.patch
+ 205-nopie.patch
+ 207-static-pie.patch
+
+ libgcc-always-build-gcceh.a.patch
+ gcc-4.9-musl-fortify.patch
+ gcc-6.1-musl-libssp.patch
+ boehm-gc-musl.patch
+ gcc-pure64.patch
+ fix-gcj-stdgnu14-link.patch
+ fix-gcj-musl.patch
+ fix-gcj-iconv-musl.patch
+
+ gcc-4.8-build-args.patch
+ fix-cxxflags-passing.patch
+ ada-fixes.patch
+ ada-shared.patch
+ ada-musl.patch
+ ada-aarch64-multiarch.patch
+
+ 300-main-gcc-add-musl-s390x-dynamic-linker.patch
+ 310-build-gcj-s390x.patch
+ 320-libffi-gnulinux.patch
+
+ fix-rs6000-pie.patch
+ add-classic_table-support.patch
+ lra-pentium.patch
+ "
+
+# we build out-of-tree
+_gccdir="$srcdir"/gcc-${_pkgbase:-$pkgver}
+_gcclibdir=/usr/lib/gcc/${CTARGET}/$pkgver
+_gcclibexec=/usr/libexec/gcc/${CTARGET}/$pkgver
+
+prepare() {
+ cd "$_gccdir"
+
+ _err=
+ for i in $source; do
+ case "$i" in
+ *.patch)
+ msg "Applying $i"
+ patch -p1 -F3 -i "$srcdir"/$i || _err="$_err $i"
+ ;;
+ esac
+ done
+
+ if [ -n "$_err" ]; then
+ error "The following patches failed:"
+ for i in $_err; do
+ echo " $i"
+ done
+ return 1
+ fi
+
+ # see http://gcc.gnu.org/ml/java/2008-04/msg00027.html
+ mv "$srcdir"/ecj-*.jar ecj.jar
+
+ echo ${pkgver} > gcc/BASE-VER
+ echo "UNSUPPORTED=1" > libcilkrts/configure.tgt
+}
+
+build() {
+ local _arch_configure=
+ local _libc_configure=
+ local _cross_configure=
+ local _bootstrap_configure=
+ local _hash_style=gnu
+ local _symvers=
+
+ cd "$_gccdir"
+
+ case "$CTARGET" in
+ aarch64-*-*-*) _arch_configure="--with-arch=armv8-a --with-abi=lp64";;
+ armv5-*-*-*eabi) _arch_configure="--with-arch=armv5te --with-tune=arm926ej-s --with-float=soft --with-abi=aapcs-linux";;
+ armv6-*-*-*eabihf) _arch_configure="--with-arch=armv6zk --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=hard --with-abi=aapcs-linux";;
+ armv7-*-*-*eabihf) _arch_configure="--with-arch=armv7-a --with-tune=generic-armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-abi=aapcs-linux --with-mode=thumb";;
+ mipsel-*-*-*) _arch_configure="--with-arch-32=mips2 --with-tune-32=mips32 --with-fp-32=32 --with-mips-plt --with-float=hard --with-abi=32";;
+ mips-*-*-*) _arch_configure="--with-arch=mips3 --with-mips-plt --with-abi=32"; _hash_style="sysv";;
+ mips32el-*-*-*) _arch_configure="--with-arch=mips32 --with-mips-plt --with-abi=32"; _hash_style="sysv";;
+ powerpc-*-*-*) _arch_configure="--enable-secureplt --enable-decimal-float=no";;
+ powerpc64*-*-*-*) _arch_configure="--with-abi=elfv2 --enable-secureplt --enable-decimal-float=no";;
+ powerpc64le*-*-*-*) _arch_configure="--with-abi=elfv2 --enable-secureplt --enable-decimal-float=no";;
+ i486-*-*-*) _arch_configure="--with-arch=i486 --with-tune=generic --enable-cld";;
+ i586-*-*-*) _arch_configure="--with-arch=i586 --with-tune=pentium2 --enable-cld --enable-mmx";;
+ pentium3-*-*-*) _arch_configure="--with-arch=pentium3 --with-tune=pentium-m";;
+ s390x-*-*-*) _arch_configure="--with-arch=z196 --with-tune=zEC12 --with-zarch --with-long-double-128 --enable-decimal-float";;
+ esac
+
+ case "$CTARGET_LIBC" in
+ musl)
+ # musl does not support mudflap, or libsanitizer
+ # libmpx uses secure_getenv and struct _libc_fpstate not present in musl
+ # alpine musl provides libssp_nonshared.a, so we don't need libssp either
+ _libc_configure="--disable-libssp --disable-libmpx --disable-libmudflap --disable-libsanitizer"
+ _symvers="--disable-symvers"
+ export libat_cv_have_ifunc=no
+ ;;
+ esac
+
+ [ "$CBUILD" != "$CHOST" ] && _cross_configure="--disable-bootstrap"
+ [ "$CHOST" != "$CTARGET" ] && _cross_configure="--disable-bootstrap --with-sysroot=$CBUILDROOT"
+
+ case "$BOOTSTRAP" in
+ nolibc) _bootstrap_configure="--with-newlib --disable-shared --enable-threads=no" ;;
+ *) _bootstrap_configure="--enable-shared --enable-threads --enable-tls" ;;
+ esac
+
+ $LIBGOMP || _bootstrap_configure="$_bootstrap_configure --disable-libgomp"
+ $LIBATOMIC || _bootstrap_configure="$_bootstrap_configure --disable-libatomic"
+ $LIBITM || _bootstrap_configure="$_bootstrap_configure --disable-libitm"
+ $LIBQUADMATH || _arch_configure="$_arch_configure --disable-libquadmath"
+
+ msg "Building the following:"
+ echo ""
+ echo " CBUILD=$CBUILD"
+ echo " CHOST=$CHOST"
+ echo " CTARGET=$CTARGET"
+ echo " CTARGET_ARCH=$CTARGET_ARCH"
+ echo " CTARGET_LIBC=$CTARGET_LIBC"
+ echo " languages=$_languages"
+ echo " arch_configure=$_arch_configure"
+ echo " libc_configure=$_libc_configure"
+ echo " cross_configure=$_cross_configure"
+ echo " bootstrap_configure=$_bootstrap_configure"
+ echo " hash_style=$_hash_style"
+ echo ""
+
+ mkdir -p "$_builddir"
+ cd "$_builddir"
+ "$_gccdir"/configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --build=${CBUILD} \
+ --host=${CHOST} \
+ --target=${CTARGET} \
+ --with-pkgversion="Adelie ${pkgver}" \
+ --with-bugurl="http://bts.adelielinux.org/" \
+ --enable-checking=release \
+ --disable-fixed-point \
+ --disable-libstdcxx-pch \
+ --disable-multilib \
+ --disable-nls \
+ --disable-werror \
+ $_symvers \
+ --enable-__cxa_atexit \
+ --enable-default-pie \
+ --enable-cloog-backend \
+ --enable-languages=$_languages \
+ $_arch_configure \
+ $_libc_configure \
+ $_cross_configure \
+ $_bootstrap_configure \
+ --with-system-zlib \
+ --with-linker-hash-style=$_hash_style
+ make
+}
+
+check() {
+ cd "$_builddir"
+ make check
+}
+
+package() {
+ cd "$_builddir"
+ make -j1 DESTDIR="${pkgdir}" install
+
+ ln -s gcc "$pkgdir"/usr/bin/cc
+
+ # we dont support gcj -static
+ # and saving 35MB is not bad.
+ find "$pkgdir" -name libgcj.a -o -name libgtkpeer.a \
+ -o -name libgjsmalsa.a -o -name libgcj-tools.a \
+ -o -name libjvm.a -o -name libgij.a -o -name libgcj_bc.a \
+ -o -name libjavamath.a \
+ | xargs rm -f
+
+ # strip debug info from some static libs
+ ${STRIP_FOR_TARGET} -g `find "$pkgdir" \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
+ -o -name libmudflap.a -o -name libmudflapth.a \
+ -o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \
+ -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \
+ -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
+ -a -type f`
+
+ if $LANG_JAVA; then
+ sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \
+ "$pkgdir"/usr/lib/libgcj.spec
+ fi
+
+ if $LIBGOMP; then
+ mv "$pkgdir"/usr/lib/libgomp.spec "$pkgdir"/$_gcclibdir
+ fi
+ if $LIBITM; then
+ mv "$pkgdir"/usr/lib/libitm.spec "$pkgdir"/$_gcclibdir
+ fi
+
+ # remove ffi
+ rm -f "$pkgdir"/usr/lib/libffi* "$pkgdir"/usr/share/man/man3/ffi*
+ find "$pkgdir" -name 'ffi*.h' | xargs rm -f
+
+ local gdblib=${_target:+$CTARGET/}lib
+ for i in $(find "$pkgdir"/usr/$gdblib/ -type f -maxdepth 1 -name "*-gdb.py" ); do
+ mkdir -p "$pkgdir"/usr/share/gdb/python/auto-load/usr/$gdblib
+ mv "$i" "$pkgdir"/usr/share/gdb/python/auto-load/usr/$gdblib/
+ done
+
+ paxmark -pmrs "$pkgdir"/$_gcclibexec/cc1
+
+ # move ada runtime libs
+ if $LANG_ADA; then
+ for i in $(find "$pkgdir"/$_gcclibdir/adalib/ -type f -maxdepth 1 -name "libgna*.so"); do
+ mv "$i" "$pkgdir"/usr/lib/
+ ln -s ../../../../${i##*/} $i
+ done
+ fi
+
+ if [ "$CHOST" != "$CTARGET" ]; then
+ # cross-gcc: remove any files that would conflict with the
+ # native gcc package
+ rm -rf "$pkgdir"/usr/bin/cc "$pkgdir"/usr/include "$pkgdir"/usr/share
+ # libcc1 does not depend on target, don't ship it
+ rm -rf "$pkgdir"/usr/lib/libcc1.so*
+
+ # fixup gcc library symlinks to be linker scripts so
+ # linker finds the libs from relocated sysroot
+ for so in "$pkgdir"/usr/$CTARGET/lib/*.so; do
+ if [ -h "$so" ]; then
+ local _real=$(basename $(readlink "$so"))
+ rm -f "$so"
+ echo "GROUP ($_real)" > "$so"
+ fi
+ done
+ fi
+}
+
+libatomic() {
+ pkgdesc="GCC Atomic library"
+ depends=
+ replaces="gcc"
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libatomic.so.* "$subpkgdir"/usr/lib/
+}
+
+libcxx() {
+ pkgdesc="GNU C++ standard runtime library"
+ depends=
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libstdc++.so.* "$subpkgdir"/usr/lib/
+}
+
+gpp() {
+ pkgdesc="GNU C++ standard library and compiler"
+ depends="libstdc++=$_gccrel gcc=$_gccrel libc-dev"
+ mkdir -p "$subpkgdir/$_gcclibexec" \
+ "$subpkgdir"/usr/bin \
+ "$subpkgdir"/usr/${_target:+$CTARGET/}include \
+ "$subpkgdir"/usr/${_target:+$CTARGET/}lib \
+
+ mv "$pkgdir/$_gcclibexec/cc1plus" "$subpkgdir/$_gcclibexec/"
+ paxmark -pmrs "$subpkgdir/$_gcclibexec/cc1plus"
+
+ mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/*++* "$subpkgdir"/usr/${_target:+$CTARGET/}lib/
+ mv "$pkgdir"/usr/${_target:+$CTARGET/}include/c++ "$subpkgdir"/usr/${_target:+$CTARGET/}include/
+ mv "$pkgdir"/usr/bin/*++ "$subpkgdir"/usr/bin/
+}
+
+libobjc() {
+ pkgdesc="GNU Objective-C runtime"
+ replaces="objc"
+ depends=
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libobjc.so.* "$subpkgdir"/usr/lib/
+}
+
+objc() {
+ pkgdesc="GNU Objective-C"
+ replaces="gcc"
+ depends="libc-dev gcc=$_gccrel libobjc=$_gccrel"
+
+ mkdir -p "$subpkgdir"/$_gcclibdir/include \
+ "$subpkgdir"/usr/lib
+ mv "$pkgdir"/$_gcclibdir/include/objc "$subpkgdir"/$_gcclibdir/include/
+ mv "$pkgdir"/usr/lib/libobjc.so "$pkgdir"/usr/lib/libobjc.a \
+ "$subpkgdir"/usr/lib/
+}
+
+libgcc() {
+ pkgdesc="GNU C compiler runtime libraries"
+ depends=
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libgcc_s.so.* "$subpkgdir"/usr/lib/
+}
+
+libgomp() {
+ pkgdesc="GCC shared-memory parallel programming API library"
+ depends=
+ replaces="gcc"
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libgomp.so.* "$subpkgdir"/usr/lib/
+}
+
+java() {
+ pkgdesc="Java support for GCC"
+ depends="zlib-dev gcc=$_gccrel libgcj=$_gccrel"
+
+ paxmark -pm "$pkgdir"/$_gcclibexec/ecj1
+ mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib "$subpkgdir"/$_gcclibdir/
+ cd "$pkgdir"/usr/bin
+ mv gcj gcj-dbtool gjavah gcjh jcf-dump "$subpkgdir"/usr/bin/
+ cd "$pkgdir"
+ for i in $(find usr/ -name ecj1 -o -name jc1 -o -name jvgenmain); do
+ mkdir -p "$subpkgdir"/${i%/*}
+ mv "$pkgdir"/$i "$subpkgdir"/$i
+ done
+ for i in "$pkgdir"/usr/lib/libgcj*.so; do
+ if [ -L "$i" ]; then
+ mv "$i" "$subpkgdir"/usr/lib/
+ fi
+ done
+ mv "$pkgdir"/usr/lib/libgij.so "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/libgcj.spec "$subpkgdir"/$_gcclibdir/
+}
+
+libgcj() {
+ pkgdesc="Java runtime library for gcc"
+ # libgcj_bc.so moved from gcc-java to libgcj
+ replaces="gcc-java"
+ depends=
+
+ mkdir -p "$subpkgdir"/usr/bin
+ cd "$pkgdir"/usr/bin
+ paxmark -pmse "$pkgdir"/usr/bin/gij
+ mv aot-compile gappletviewer gc-analyze gij gjar gjarsigner gkeytool\
+ gnative2ascii gorbd grmic grmid grmiregistry gserialver \
+ gtnameserv jv-convert rebuild-gcj-db \
+ "$subpkgdir"/usr/bin/
+ cd "$pkgdir"
+ for i in $(find usr/lib -name jc1 -o -name jvgenmain); do
+ mkdir -p "$subpkgdir"/${i%/*}
+ mv "$pkgdir"/$i "$subpkgdir"/$i
+ done
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/gcj-* \
+ "$pkgdir"/usr/lib/libgcj_bc.so \
+ "$pkgdir"/usr/lib/libgcj*.so.* \
+ "$pkgdir"/usr/lib/libgij.so.* \
+ "$pkgdir"/usr/lib/logging.properties \
+ "$pkgdir"/usr/lib/security \
+ "$subpkgdir"/usr/lib/
+
+ mkdir -p "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/share/java "$subpkgdir"/usr/share/
+}
+
+libgo() {
+ pkgdesc="Go runtime library for GCC"
+ depends=
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libgo.so.* "$subpkgdir"/usr/lib/
+}
+
+go() {
+ pkgdesc="Go support for GCC"
+ depends="gcc=$_gccrel libgo=$_gccrel"
+
+ mkdir -p "$subpkgdir"/$_gcclibexec \
+ "$subpkgdir"/usr/lib \
+ "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/lib/go "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/bin/*gccgo "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/$_gcclibexec/go1 "$subpkgdir"/$_gcclibexec/
+ mv "$pkgdir"/usr/lib/libgo.a \
+ "$pkgdir"/usr/lib/libgo.so \
+ "$pkgdir"/usr/lib/libgobegin.a \
+ "$subpkgdir"/usr/lib/
+}
+
+libgfortran() {
+ pkgdesc="Fortran runtime library for GCC"
+ depends=
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libgfortran.so.* "$subpkgdir"/usr/lib/
+}
+
+libquadmath() {
+ replaces="gcc"
+ pkgdesc="128-bit math library for GCC"
+ depends=
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libquadmath.so.* "$subpkgdir"/usr/lib/
+}
+
+gfortran() {
+ pkgdesc="GNU Fortran Compiler"
+ depends="gcc=$_gccrel libgfortran=$_gccrel"
+ $LIBQUADMATH && depends="$depends libquadmath=$_gccrel"
+ replaces="gcc"
+
+ mkdir -p "$subpkgdir"/$_gcclibexec \
+ "$subpkgdir"/$_gcclibdir \
+ "$subpkgdir"/usr/lib \
+ "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/*gfortran "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/lib/libgfortran.a \
+ "$pkgdir"/usr/lib/libgfortran.so \
+ "$subpkgdir"/usr/lib/
+ if $LIBQUADMATH; then
+ mv "$pkgdir"/usr/lib/libquadmath.a \
+ "$pkgdir"/usr/lib/libquadmath.so \
+ "$subpkgdir"/usr/lib/
+ fi
+ mv "$pkgdir"/$_gcclibexec/f951 "$subpkgdir"/$_gcclibexec
+ mv "$pkgdir"/usr/lib/libgfortran.spec "$subpkgdir"/$_gcclibdir
+}
+
+libgnat() {
+ pkgdesc="GNU Ada runtime shared libraries"
+ depends=
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libgna*.so "$subpkgdir"/usr/lib/
+}
+
+gnat() {
+ pkgdesc="Ada support for GCC"
+ depends="gcc=$_gccrel"
+ [ "$CHOST" = "$CTARGET" ] && depends="$depends libgnat=$_gccrel"
+
+ mkdir -p "$subpkgdir"/$_gcclibexec \
+ "$subpkgdir"/$_gcclibdir \
+ "$subpkgdir"/usr/bin
+ mv "$pkgdir"/$_gcclibexec/*gnat* "$subpkgdir"/$_gcclibexec/
+ mv "$pkgdir"/$_gcclibdir/*ada* "$subpkgdir"/$_gcclibdir/
+ mv "$pkgdir"/usr/bin/*gnat* "$subpkgdir"/usr/bin/
+}
+
+sha512sums="02c60e54527c7adf584798d5251f8a0b80c93d5deafce82501b2c28e6692e0bd783927bbfc4bc527a863c0cccc025150a34740a9e29badb02d4b48e56a8aba90 gcc-6.4.0.tar.xz
+28f8c6fdbcb19e950b1d0bafb3bcc7a8cba87bc673aa6027cece116599cdee80f0cf5e95a1440544890239f5c754e8a93ab46d9daedd937faef445d7ea33b226 ecj-4.9.jar
+a1335adc2fbee98e36c4437ff2587771b98ed4180726779020f65039498235626a411cdb0100dbd20cd19d12f0d94f9a21af179ff624676c28cead9d60598b5d 001_all_default-ssp-strong.patch
+e36e95b81489163abd6fe9d58f7867bdca43e61143afacbfb17f4698c0b16ec5fd0061d8fab7b2ae615540bebd721c2e2227f80401b4e7fc253da9da62e6b513 002_all_default-relro.patch
+f86466c62b8291fac46f9c250c7ad8fa5ab7b1cce2504442fd07ddc4543665b317ae28951f244e39aba29aeaf3fff252ec4f6a147aa16adb2b7aed747dd89188 003_all_default-fortify-source.patch
+51282fea54c7e616367bbeb2479ba13fec6f24eb47bd04e2071907b3b36273b2ff24676f46ef8d22f241c8ab4857307861eee076eab66797c3a50a8ecaa1809a 005_all_default-as-needed.patch
+3398386dd1e079d6545dd9799adc799c6b80e3984fac6899d0e1a7ee21b66d0c7e53cddf17a65d590c883db750f9f79aaedd857355a8b9f7fb9476c906237919 011_all_default-warn-format-security.patch
+9adb0d2b9b67dd957df6c609b8714c7c078efb52cd88770905c37c67827be8fc83d1125037b9c29d77db21ce78756aa2bb0bacdb0b98d869ac126da76a298e21 012_all_default-warn-trampolines.patch
+d35a3ac7e13a4446921a90e1ff3eec1079840c845f9d523c868e24ae21f94cf69ba041de5341ebef96432a6f57598e223381d4286e8fb8baaa25906707f29fbd 020_all_msgfmt-libstdc++-link.patch
+840070a3c423e6206aaa6e63e1d9a0fcd6efd53626cd1240a193f0b60aa5d84216acc4a2a4fa8bce74549b07e6a316b01d638f20cea13dc62473491a302fb3d6 050_all_libiberty-asprintf.patch
+0a0bc72b9366158f5d23fff1928e756fdd212433bac6ab1f00d632f241382820db8db5d475ddf11ea020eaf7e2e71b12fb9b1c3c870cf84adf6c2b16f15aabca 051_all_libiberty-pic.patch
+e7a2eb1b1870e199d6fd753d065781575656fa12baa264f96c5d179689d88c31b8a3f92a5dae96088c05e96aa2bda138364ad7dbcc79e1819a102f192cbb7bab 053_all_libitm-no-fortify-source.patch
+e87da18aa7ab92b02b06168658c63b42a6c73a08fad2a30f81ef6296100fdbe3c3a91548fd0cb24eaf591e862bb08e4b67249bc4b977b07da33523aee0c686bc 067_all_gcc-poison-system-directories.patch
+4a328d1e1a56c20166307edcfa322068915784d9c08025b7f81cf69714da48fc266b6d34f77b9135c2f10da830d9df408276a1b78d1fd218637c2823506593c2 090_all_pr55930-dependency-tracking.patch
+ef052d0c3c9642fcb5ed570069c5a49c8ef523c47ac8ce3f201a801766f72ae4ff7c3725a70ee66e52c0fb559621e35fe0cf5b88b901d71ceadd381f49653a08 201-cilkrts.patch
+808e206f5e107084156fba333d4e091dcbd62f5d7756142bc292d4b0a52619f8c2aaca3617defc2f5b6552ba0439aebd33f4141329d88eab6ddf2dd637d92c08 203-libgcc_s.patch
+fc0de05b36613b732a0222ea005c90653c6a40d6761b6894af2419272f4e74875f37e26af33a9b9940669ef89269c44c46d17ca5bcd54b5cd1176e5eaf2992c1 204-linux_libc_has_function.patch
+98473bcaa77903a223ca9b0d2087c0921b287a2816d308cc32c8fe009e6cbf5dd1ae7fba27794ab8d9c09e117fe534413d91a464d1218474fc123ce0adfdc2c1 205-nopie.patch
+3287d5b443bea8ec64132bcabe869c738ae98ea8f1a86df1c5d18c927f8816edbfcefeefc47792dbbb2bcacf50319af00e01b3735d34525913b64350770ad453 207-static-pie.patch
+d08d7ead2de0429e5c9055d5b029ec2be9a8c821d22cecaf9b51f633652c493333f98963d9267fa2fa63850c50ae5eefd5f59e5910ec10d20044dac082182a8b libgcc-always-build-gcceh.a.patch
+600fe5098dc54edaa9808fd5717af9dec058953f9ad37d49cfba1db4f7e9a7a8f02019342f75157fc575946fa693259422184de27b7ecc8386d9f3ecc0f7cc5d gcc-4.9-musl-fortify.patch
+dbe0ee917fc7668571722364ab7c806731e3a31e8bfa30b4941b28b16b877d2a32b4a3897ef533399a28f82d43cac9b28e92de0493f0e779046db56584e07fa4 gcc-6.1-musl-libssp.patch
+bda845a6aa1854d2c883910b115f79ccfa93dfc2b5eac69a3a236d83eb34cadc140731d616ffc24698c7abc8878dd15f231bcc5119f1860e575a120b311706c7 boehm-gc-musl.patch
+fa62556719449caec6b2b434355bfbcaa5ae55ffe017b3e1f827f66a2aae21b79c571ee7a4ce723ea69169bc3a6447e73650991a200cc372adf2f102677518d7 gcc-pure64.patch
+2253941f3d19b6d08801d3782f5f5ed56c3b73fbc9d3561a8f01c702963ac4fab91599c686076e7081eb6a80c37ccd33591ae978996d6eee1dc0ce0f1c50259a fix-gcj-stdgnu14-link.patch
+f89ddeb21bc8f97e6a850a6b70b4501a8f3e49a4bc8cc82897488decda5d98ad01cb7f6c8b392d452e9579924a523bc75da6e0648c1c976d42e40af48b10343b fix-gcj-musl.patch
+54d67cc008b735e47771314171930c5d8b8f5f5dc97fcf4214824c105c808f3e75d22d5a4fdf5068ed0457fa0d46c60cfb442e276259a4a5e9b8722a027d18e6 fix-gcj-iconv-musl.patch
+abe9aaf9aa956058d0386a4396a511d176a46bb3906b90e952383646cdc158cbeb0a5dc616a1ccb1ca7d49fd0b5e351532aa15a3b13362abbf1ca4266f54a687 gcc-4.8-build-args.patch
+35d6d59f0b7b968f282f56767c9e0823a7bdc5aa0d450aca50fbd802649a7ca608b47671244a3faa208a9b0d6832cabb5a22724157dc817b2c0ad63d09f93282 fix-cxxflags-passing.patch
+9016b257abd8fa981de44a49512e35db814d1cbb47c1a87cd31c12d4ae20b13e9e149fe41691a7ec3c95bbcfde8a79194a8d2eaf547ceade3a246fad67c47dd8 ada-fixes.patch
+3f5bc334d9f73d06f5f7c876738d02356acdd08958bea0e4d2095ebf15c2c2ec4e411abdae0297505ae9a1699ca01b17338e853184e84663203b192b0d35fc19 ada-shared.patch
+631d4bdef6d8bde34df7978bb53ec28c3c909cf1f87139e5f148138d0f09adc58b41ecf0148bbf50fb4bc916c411e9bf8a2b6c046c75c0e77d754d8c35bcd4d7 ada-musl.patch
+fa44c8158111627aa0e91c43e7cc3aa38642c2041c96532dd4f0932dae4d6f92ea2850b683abcf10e7e120299d42ea6b69adc00002a514c76be8e39e99fa052b ada-aarch64-multiarch.patch
+4b4a0ff306a8ef34ff6e3284fbfca869012164a47ba7cb099085c1dd03e6ca0cdd462f82710e08c9a02895adc7484e4c5eef17b5aa264cf5d978fe8ad78eea93 300-main-gcc-add-musl-s390x-dynamic-linker.patch
+385bc2fa50204f678964e5148c6170f572701dab920fbec8301f505bda34d182cde0adb7da042fee71719e12fb59f59181897f9b1bb4f4716ff59aad46ca1998 310-build-gcj-s390x.patch
+f4ef08454e28c8732db69115e4998ec153399e8d229dd27f923dbdcf57b68128a65640d026cc7f45b58ba8764ab1eb575d4eb6d6dfc550a87a183f8b94e76181 320-libffi-gnulinux.patch
+01c71cd5881fc07ea3b9b980697e89b3ca0fe98502958ceafc3fca18b2604c844e2f457feab711baf8e03f00a5383b0e38aac7eb954034e306f43d4a37f165ed fix-rs6000-pie.patch
+1860593584f629d24d5b6db14b0a3412e9f93449b663aaa4981301a0923db0159314905e694f27366fbfef72dce06636ab6df86862b7e9e9564847e03bee82c1 add-classic_table-support.patch
+4e1b421ed72668b66ecbcb0a34afa99d2a34cb2ea9ee51c4aad605fc8a0e94e3bfbabae4ebe236efc5ec86fc01a472cbe93f36fe25cf579714939d8102a9b84a lra-pentium.patch"
diff --git a/system/gcc/ada-aarch64-multiarch.patch b/system/gcc/ada-aarch64-multiarch.patch
new file mode 100644
index 000000000..ac60b6f6a
--- /dev/null
+++ b/system/gcc/ada-aarch64-multiarch.patch
@@ -0,0 +1,16 @@
+--- gcc-6.4.0/gcc/ada/gcc-interface/Makefile.in.orig
++++ gcc-6.4.0/gcc/ada/gcc-interface/Makefile.in
+@@ -2042,13 +2042,8 @@
+ system.ads<system-linux-x86_64.ads
+ ## ^^ Note the above is a pretty-close placeholder.
+
+- ifneq (,$(or $(filter aarch64-linux-gnu, $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multiarch)), $(filter ../lib64, $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory))))
+ LIBGNAT_TARGET_PAIRS = \
+ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
+- else
+- LIBGNAT_TARGET_PAIRS = \
+- $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
+- endif
+
+ TOOLS_TARGET_PAIRS = \
+ mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
diff --git a/system/gcc/ada-fixes.patch b/system/gcc/ada-fixes.patch
new file mode 100644
index 000000000..ba4ea42b4
--- /dev/null
+++ b/system/gcc/ada-fixes.patch
@@ -0,0 +1,35 @@
+--- gcc-6.1.0.orig/gcc/ada/cal.c
++++ gcc-6.1.0/gcc/ada/cal.c
+@@ -49,6 +49,7 @@
+ #include <time.h>
+ #else
+ #include <sys/time.h>
++#include <time.h>
+ #endif
+
+ #ifdef __MINGW32__
+--- gcc-6.1.0.orig/gcc/ada/terminals.c
++++ gcc-6.1.0/gcc/ada/terminals.c
+@@ -1068,13 +1068,6 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+
+-/* On some system termio is either absent or including it will disable termios
+- (HP-UX) */
+-#if !defined (__hpux__) && !defined (BSD) && !defined (__APPLE__) \
+- && !defined (__rtems__)
+-# include <termio.h>
+-#endif
+-
+ #include <sys/ioctl.h>
+ #include <termios.h>
+ #include <fcntl.h>
+@@ -1169,7 +1162,7 @@
+ char *slave_name = NULL;
+
+ #ifdef USE_GETPT
+- master_fd = getpt ();
++ master_fd = posix_openpt (O_RDWR);
+ #elif defined (USE_OPENPTY)
+ status = openpty (&master_fd, &slave_fd, NULL, NULL, NULL);
+ #elif defined (USE_CLONE_DEVICE)
diff --git a/system/gcc/ada-musl.patch b/system/gcc/ada-musl.patch
new file mode 100644
index 000000000..464c3d57d
--- /dev/null
+++ b/system/gcc/ada-musl.patch
@@ -0,0 +1,137 @@
+diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
+--- gcc-5.1.0/gcc.orig/ada/adaint.c 2015-02-20 11:48:57.000000000 +0000
++++ gcc-5.1.0/gcc/ada/adaint.c 2015-06-02 10:47:51.672767476 +0000
+@@ -70,6 +70,11 @@
+ #include <sys/param.h>
+ #include <sys/pstat.h>
+ #endif
++
++#if defined (linux)
++#define _GNU_SOURCE 1
++#include <sched.h>
++#endif
+
+ #ifdef __PikeOS__
+ #define __BSD_VISIBLE 1
+@@ -3057,8 +3062,6 @@ __gnat_lwp_self (void)
+ return (void *) syscall (__NR_gettid);
+ }
+
+-#include <sched.h>
+-
+ /* glibc versions earlier than 2.7 do not define the routines to handle
+ dynamically allocated CPU sets. For these targets, we use the static
+ versions. */
+@@ -3067,7 +3070,7 @@ __gnat_lwp_self (void)
+
+ /* Dynamic cpu sets */
+
+-cpu_set_t *
++void *
+ __gnat_cpu_alloc (size_t count)
+ {
+ return CPU_ALLOC (count);
+@@ -3080,33 +3083,33 @@ __gnat_cpu_alloc_size (size_t count)
+ }
+
+ void
+-__gnat_cpu_free (cpu_set_t *set)
++__gnat_cpu_free (void *set)
+ {
+- CPU_FREE (set);
++ CPU_FREE ((cpu_set_t *) set);
+ }
+
+ void
+-__gnat_cpu_zero (size_t count, cpu_set_t *set)
++__gnat_cpu_zero (size_t count, void *set)
+ {
+- CPU_ZERO_S (count, set);
++ CPU_ZERO_S (count, (cpu_set_t *) set);
+ }
+
+ void
+-__gnat_cpu_set (int cpu, size_t count, cpu_set_t *set)
++__gnat_cpu_set (int cpu, size_t count, void *set)
+ {
+ /* Ada handles CPU numbers starting from 1, while C identifies the first
+ CPU by a 0, so we need to adjust. */
+- CPU_SET_S (cpu - 1, count, set);
++ CPU_SET_S (cpu - 1, count, (cpu_set_t *) set);
+ }
+
+ #else /* !CPU_ALLOC */
+
+ /* Static cpu sets */
+
+-cpu_set_t *
++void *
+ __gnat_cpu_alloc (size_t count ATTRIBUTE_UNUSED)
+ {
+- return (cpu_set_t *) xmalloc (sizeof (cpu_set_t));
++ return xmalloc (sizeof (cpu_set_t));
+ }
+
+ size_t
+@@ -3116,23 +3119,23 @@ __gnat_cpu_alloc_size (size_t count ATTR
+ }
+
+ void
+-__gnat_cpu_free (cpu_set_t *set)
++__gnat_cpu_free (void *set)
+ {
+ free (set);
+ }
+
+ void
+-__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
++__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, void *set)
+ {
+- CPU_ZERO (set);
++ CPU_ZERO ((cpu_set_t *) set);
+ }
+
+ void
+-__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
++__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, void *set)
+ {
+ /* Ada handles CPU numbers starting from 1, while C identifies the first
+ CPU by a 0, so we need to adjust. */
+- CPU_SET (cpu - 1, set);
++ CPU_SET (cpu - 1, (cpu_set_t *) set);
+ }
+ #endif /* !CPU_ALLOC */
+ #endif /* linux */
+diff -rup gcc-5.1.0/gcc.orig/ada/adaint.h gcc-5.1.0/gcc/ada/adaint.h
+--- gcc-5.1.0/gcc.orig/ada/adaint.h 2015-01-27 17:20:27.000000000 +0000
++++ gcc-5.1.0/gcc/ada/adaint.h 2015-06-02 10:47:23.188910894 +0000
+@@ -287,13 +287,11 @@ extern void *__gnat_lwp_self (voi
+
+ /* Routines for interface to required CPU set primitives */
+
+-#include <sched.h>
+-
+-extern cpu_set_t *__gnat_cpu_alloc (size_t);
++extern void * __gnat_cpu_alloc (size_t);
+ extern size_t __gnat_cpu_alloc_size (size_t);
+-extern void __gnat_cpu_free (cpu_set_t *);
+-extern void __gnat_cpu_zero (size_t, cpu_set_t *);
+-extern void __gnat_cpu_set (int, size_t, cpu_set_t *);
++extern void __gnat_cpu_free (void *);
++extern void __gnat_cpu_zero (size_t, void *);
++extern void __gnat_cpu_set (int, size_t, void *);
+ #endif
+
+ #if defined (_WIN32)
+diff -rup gcc-5.1.0/gcc.orig/ada/gcc-interface/Makefile.in gcc-5.1.0/gcc/ada/gcc-interface/Makefile.in
+--- gcc-5.1.0/gcc.orig/ada/gcc-interface/Makefile.in 2015-04-09 20:29:28.000000000 +0000
++++ gcc-5.1.0/gcc/ada/gcc-interface/Makefile.in 2015-06-02 10:47:23.188910894 +0000
+@@ -1910,7 +1910,7 @@ ifeq ($(strip $(filter-out powerpc% linu
+ endif
+
+ # ARM linux, GNU eabi
+-ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
++ifeq ($(strip $(filter-out arm% linux-gnueabi% linux-musleabi% linux-muslgnueabi%,$(target_cpu) $(target_os))),)
+ LIBGNAT_TARGET_PAIRS = \
+ a-intnam.ads<a-intnam-linux.ads \
+ s-inmaop.adb<s-inmaop-posix.adb \
diff --git a/system/gcc/ada-shared.patch b/system/gcc/ada-shared.patch
new file mode 100644
index 000000000..6f1c16aff
--- /dev/null
+++ b/system/gcc/ada-shared.patch
@@ -0,0 +1,30 @@
+Index: b/gcc/ada/link.c
+===================================================================
+--- a/gcc/ada/link.c
++++ b/gcc/ada/link.c
+@@ -105,9 +105,9 @@
+
+ #elif defined (__FreeBSD__)
+ const char *__gnat_object_file_option = "-Wl,@";
+-const char *__gnat_run_path_option = "-Wl,-rpath,";
+-char __gnat_shared_libgnat_default = STATIC;
+-char __gnat_shared_libgcc_default = STATIC;
++const char *__gnat_run_path_option = "";
++char __gnat_shared_libgnat_default = SHARED;
++char __gnat_shared_libgcc_default = SHARED;
+ int __gnat_link_max = 8192;
+ unsigned char __gnat_objlist_file_supported = 1;
+ const char *__gnat_object_library_extension = ".a";
+@@ -127,9 +127,9 @@
+
+ #elif defined (linux) || defined(__GLIBC__)
+ const char *__gnat_object_file_option = "-Wl,@";
+-const char *__gnat_run_path_option = "-Wl,-rpath,";
+-char __gnat_shared_libgnat_default = STATIC;
+-char __gnat_shared_libgcc_default = STATIC;
++const char *__gnat_run_path_option = "";
++char __gnat_shared_libgnat_default = SHARED;
++char __gnat_shared_libgcc_default = SHARED;
+ int __gnat_link_max = 8192;
+ unsigned char __gnat_objlist_file_supported = 1;
+ const char *__gnat_object_library_extension = ".a";
diff --git a/system/gcc/add-classic_table-support.patch b/system/gcc/add-classic_table-support.patch
new file mode 100644
index 000000000..e74929302
--- /dev/null
+++ b/system/gcc/add-classic_table-support.patch
@@ -0,0 +1,152 @@
+--- gcc-6.4.0/libstdc++-v3/config/os/generic/ctype_base.h.old 2016-01-04 08:30:50.652828000 -0600
++++ gcc-6.4.0/libstdc++-v3/config/os/generic/ctype_base.h 2017-10-16 07:51:26.226276759 -0500
+@@ -40,19 +40,27 @@
+
+ // NB: Offsets into ctype<char>::_M_table force a particular size
+ // on the mask type. Because of this, we don't use an enum.
+- typedef unsigned int mask;
+- static const mask upper = 1 << 0;
+- static const mask lower = 1 << 1;
+- static const mask alpha = 1 << 2;
+- static const mask digit = 1 << 3;
+- static const mask xdigit = 1 << 4;
+- static const mask space = 1 << 5;
+- static const mask print = 1 << 6;
+- static const mask graph = (1 << 2) | (1 << 3) | (1 << 9); // alnum|punct
+- static const mask cntrl = 1 << 8;
+- static const mask punct = 1 << 9;
+- static const mask alnum = (1 << 2) | (1 << 3); // alpha|digit
+- static const mask blank = 1 << 10;
++ typedef unsigned short int mask;
++/* horrible ugly code from glibc */
++#ifndef _ISbit
++# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
++# define _ISbit(i) (1 << (i))
++# else
++# define _ISbit(i) (i < 8 ? (1 << i << 8) : (1 << i >> 8))
++# endif
++#endif
++ static const mask upper = _ISbit(0);
++ static const mask lower = _ISbit(1);
++ static const mask alpha = _ISbit(2);
++ static const mask digit = _ISbit(3);
++ static const mask xdigit = _ISbit(4);
++ static const mask space = _ISbit(5);
++ static const mask print = _ISbit(6);
++ static const mask graph = _ISbit(7);
++ static const mask cntrl = _ISbit(9);
++ static const mask punct = _ISbit(10);
++ static const mask alnum = _ISbit(11);
++ static const mask blank = _ISbit(8);
+ };
+
+ _GLIBCXX_END_NAMESPACE_VERSION
+--- gcc-6.4.0/libstdc++-v3/config/os/generic/ctype_configure_char.cc.old 2016-01-04 08:30:50.652828000 -0600
++++ gcc-6.4.0/libstdc++-v3/config/os/generic/ctype_configure_char.cc 2017-10-16 08:37:57.986260218 -0500
+@@ -40,7 +40,105 @@
+
+ const ctype_base::mask*
+ ctype<char>::classic_table() throw()
+- { return 0; }
++ {
++ static ctype_base::mask mask[256] = {
++ cntrl, cntrl, cntrl, cntrl, cntrl, cntrl, cntrl, cntrl,
++ cntrl, cntrl | blank | space, cntrl | space, cntrl | space,
++ cntrl | space, cntrl | space, cntrl, cntrl,
++ cntrl, cntrl, cntrl, cntrl, cntrl, cntrl, cntrl, cntrl,
++ cntrl, cntrl, cntrl, cntrl, cntrl, cntrl, cntrl, cntrl,
++ print | space | blank,
++ print | punct, print | punct,
++ print | punct, print | punct,
++ print | punct, print | punct,
++ print | punct, print | punct,
++ print | punct, print | punct,
++ print | punct, print | punct,
++ print | punct, print | punct,
++ print | punct,
++ print | alnum | digit | xdigit, print | alnum | digit | xdigit,
++ print | alnum | digit | xdigit, print | alnum | digit | xdigit,
++ print | alnum | digit | xdigit, print | alnum | digit | xdigit,
++ print | alnum | digit | xdigit, print | alnum | digit | xdigit,
++ print | alnum | digit | xdigit, print | alnum | digit | xdigit,
++ print | punct, print | punct,
++ print, print, print,
++ print | punct, print,
++ print | alnum | xdigit | alpha | upper,
++ print | alnum | xdigit | alpha | upper,
++ print | alnum | xdigit | alpha | upper,
++ print | alnum | xdigit | alpha | upper,
++ print | alnum | xdigit | alpha | upper,
++ print | alnum | xdigit | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | alnum | alpha | upper,
++ print | punct, print | punct, print | punct,
++ print | punct, print | punct, print | punct,
++ print | alnum | xdigit | alpha | lower,
++ print | alnum | xdigit | alpha | lower,
++ print | alnum | xdigit | alpha | lower,
++ print | alnum | xdigit | alpha | lower,
++ print | alnum | xdigit | alpha | lower,
++ print | alnum | xdigit | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | alnum | alpha | lower,
++ print | punct, print | punct, print | punct, print | punct,
++ cntrl,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0
++ };
++ return mask;
++ }
+
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ size_t __refs)
diff --git a/system/gcc/boehm-gc-musl.patch b/system/gcc/boehm-gc-musl.patch
new file mode 100644
index 000000000..2f106cba1
--- /dev/null
+++ b/system/gcc/boehm-gc-musl.patch
@@ -0,0 +1,62 @@
+--- gcc-4.8.1/boehm-gc/os_dep.c.orig 2013-09-17 07:46:00.969884340 +0000
++++ gcc-4.8.1/boehm-gc/os_dep.c 2013-09-17 06:53:53.629884946 +0000
+@@ -26,7 +26,7 @@
+ # define __KERNEL__
+ # include <asm/signal.h>
+ # undef __KERNEL__
+-# else
++# elif defined(__GLIBC__)
+ /* Kernels prior to 2.1.1 defined struct sigcontext_struct instead of */
+ /* struct sigcontext. libc6 (glibc2) uses "struct sigcontext" in */
+ /* prototypes, so we have to include the top-level sigcontext.h to */
+--- gcc-4.8.2/boehm-gc/dyn_load.c.orig 2014-02-17 14:13:09.519850231 +0200
++++ gcc-4.8.2/boehm-gc/dyn_load.c 2014-02-17 14:14:27.906093514 +0200
+@@ -459,9 +459,7 @@
+ /* For glibc 2.2.4+. Unfortunately, it doesn't work for older */
+ /* versions. Thanks to Jakub Jelinek for most of the code. */
+
+-# if (defined(LINUX) || defined (__GLIBC__)) /* Are others OK here, too? */ \
+- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
+- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
++# if (defined(LINUX) || defined (__GLIBC__))
+
+ /* We have the header files for a glibc that includes dl_iterate_phdr. */
+ /* It may still not be available in the library on the target system. */
+--- gcc-4.8.2/boehm-gc/include/private/gcconfig.h.orig 2014-02-17 14:14:36.026049422 +0200
++++ gcc-4.8.2/boehm-gc/include/private/gcconfig.h 2014-02-17 14:17:11.345207887 +0200
+@@ -684,7 +684,7 @@
+ # ifdef __ELF__
+ # define DYNAMIC_LOADING
+ # include <features.h>
+-# if defined(__GLIBC__)&& __GLIBC__>=2
++# if 1
+ # define SEARCH_FOR_DATA_START
+ # else /* !GLIBC2 */
+ extern char **__environ;
+@@ -1147,7 +1147,7 @@
+ # define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
+ # endif
+ # include <features.h>
+-# if defined(__GLIBC__) && __GLIBC__ >= 2
++# if 1
+ # define SEARCH_FOR_DATA_START
+ # else
+ extern char **__environ;
+@@ -1367,7 +1367,7 @@
+ # define HBLKSIZE 4096
+ # endif
+ # define USE_GENERIC_PUSH_REGS
+-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
++# if 1
+ # define LINUX_STACKBOTTOM
+ # else
+ # define STACKBOTTOM 0x80000000
+@@ -1858,7 +1858,7 @@
+ # ifdef __ELF__
+ # define DYNAMIC_LOADING
+ # include <features.h>
+-# if defined(__GLIBC__) && __GLIBC__ >= 2
++# if 1
+ # define SEARCH_FOR_DATA_START
+ # else
+ extern char **__environ;
diff --git a/system/gcc/fix-cxxflags-passing.patch b/system/gcc/fix-cxxflags-passing.patch
new file mode 100644
index 000000000..8eb1de77d
--- /dev/null
+++ b/system/gcc/fix-cxxflags-passing.patch
@@ -0,0 +1,10 @@
+--- gcc-4.8.1/Makefile.in.orig
++++ gcc-4.8.1/Makefile.in
+@@ -169,6 +169,7 @@
+ # built for the build system to override those in BASE_FLAGS_TO_PASSS.
+ EXTRA_BUILD_FLAGS = \
+ CFLAGS="$(CFLAGS_FOR_BUILD)" \
++ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
+ LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+
+ # This is the list of directories to built for the host system.
diff --git a/system/gcc/fix-gcj-iconv-musl.patch b/system/gcc/fix-gcj-iconv-musl.patch
new file mode 100644
index 000000000..b0015751e
--- /dev/null
+++ b/system/gcc/fix-gcj-iconv-musl.patch
@@ -0,0 +1,120 @@
+--- gcc-4.8.2/libjava/gnu/gcj/convert/natIconv.cc.orig 2014-02-18 18:46:14.897880526 +0200
++++ gcc-4.8.2/libjava/gnu/gcj/convert/natIconv.cc 2014-02-18 18:50:08.766613550 +0200
+@@ -24,6 +24,13 @@
+
+ #ifdef HAVE_ICONV
+ #include <iconv.h>
++#include <endian.h>
++
++#if __BYTE_ORDER == __BIG_ENDIAN
++#define UCS2_CHARSET "UCS-2BE"
++#else
++#define UCS2_CHARSET "UCS-2LE"
++#endif
+
+ template<typename T>
+ static inline size_t
+@@ -45,7 +52,7 @@
+ _Jv_GetStringUTFRegion (encoding, 0, encoding->length(), buffer);
+ buffer[len] = '\0';
+
+- iconv_t h = iconv_open ("UCS-2", buffer);
++ iconv_t h = iconv_open (UCS2_CHARSET, buffer);
+ if (h == (iconv_t) -1)
+ throw new ::java::io::UnsupportedEncodingException (encoding);
+
+@@ -99,18 +106,6 @@
+ throw new ::java::io::CharConversionException ();
+ }
+
+- if (iconv_byte_swap)
+- {
+- size_t max = (old_out - outavail) / sizeof (jchar);
+- for (size_t i = 0; i < max; ++i)
+- {
+- // Byte swap.
+- jchar c = (((out[outpos + i] & 0xff) << 8)
+- | ((out[outpos + i] >> 8) & 0xff));
+- outbuf[i] = c;
+- }
+- }
+-
+ inpos += old_in - inavail;
+ return (old_out - outavail) / sizeof (jchar);
+ #else /* HAVE_ICONV */
+@@ -145,7 +140,7 @@
+ _Jv_GetStringUTFRegion (encoding, 0, encoding->length(), buffer);
+ buffer[len] = '\0';
+
+- iconv_t h = iconv_open (buffer, "UCS-2");
++ iconv_t h = iconv_open (buffer, UCS2_CHARSET);
+ if (h == (iconv_t) -1)
+ throw new ::java::io::UnsupportedEncodingException (encoding);
+
+@@ -187,20 +182,6 @@
+ char *inbuf = (char *) &chars[inpos];
+ char *outbuf = (char *) &out[count];
+
+- if (iconv_byte_swap)
+- {
+- // Ugly performance penalty -- don't use losing systems!
+- temp_buffer = (jchar *) _Jv_Malloc (inlength * sizeof (jchar));
+- for (int i = 0; i < inlength; ++i)
+- {
+- // Byte swap.
+- jchar c = (((chars[inpos + i] & 0xff) << 8)
+- | ((chars[inpos + i] >> 8) & 0xff));
+- temp_buffer[i] = c;
+- }
+- inbuf = (char *) temp_buffer;
+- }
+-
+ size_t loop_old_in = old_in;
+ while (1)
+ {
+@@ -252,44 +233,7 @@
+ jboolean
+ gnu::gcj::convert::IOConverter::iconv_init (void)
+ {
+- // Some versions of iconv() always return their UCS-2 results in
+- // big-endian order, and they also require UCS-2 inputs to be in
+- // big-endian order. For instance, glibc 2.1.3 does this. If the
+- // UTF-8=>UCS-2 iconv converter has this feature, then we assume
+- // that all UCS-2 converters do. (This might not be the best
+- // heuristic, but is is all we've got.)
+- jboolean result = false;
+-#ifdef HAVE_ICONV
+- iconv_t handle = iconv_open ("UCS-2", "UTF-8");
+- if (handle != (iconv_t) -1)
+- {
+- jchar c;
+- unsigned char in[4];
+- char *inp, *outp;
+- size_t inc, outc, r;
+-
+- // This is the UTF-8 encoding of \ufeff. At least Tru64 UNIX libiconv
+- // needs the trailing NUL byte, otherwise iconv fails with EINVAL.
+- in[0] = 0xef;
+- in[1] = 0xbb;
+- in[2] = 0xbf;
+- in[3] = 0x00;
+-
+- inp = (char *) in;
+- inc = 4;
+- outp = (char *) &c;
+- outc = 2;
+-
+- r = iconv_adapter (iconv, handle, &inp, &inc, &outp, &outc);
+- // Conversion must be complete for us to use the result.
+- if (r != (size_t) -1 && inc == 0 && outc == 0)
+- result = (c != 0xfeff);
+-
+- // Release iconv handle.
+- iconv_close (handle);
+- }
+-#endif /* HAVE_ICONV */
+- return result;
++ return false;
+ }
+
+ void
diff --git a/system/gcc/fix-gcj-musl.patch b/system/gcc/fix-gcj-musl.patch
new file mode 100644
index 000000000..d26f510c0
--- /dev/null
+++ b/system/gcc/fix-gcj-musl.patch
@@ -0,0 +1,49 @@
+--- gcc-4.8.2/libjava/gnu/classpath/natSystemProperties.cc.orig 2014-02-18 10:55:08.617678779 +0200
++++ gcc-4.8.2/libjava/gnu/classpath/natSystemProperties.cc 2014-02-18 10:56:31.927227453 +0200
+@@ -289,7 +289,7 @@
+ // just default to `en_US'.
+ setlocale (LC_ALL, "");
+ char *locale = setlocale (LC_MESSAGES, "");
+- if (locale && strlen (locale) >= 2)
++ if (locale && strlen (locale) >= 2 && (locale[2] == '\0' || locale[2] == '_'))
+ {
+ char buf[3];
+ buf[2] = '\0';
+--- gcc-4.8.2/libjava/posix-threads.cc.orig 2014-02-18 13:22:01.789933726 +0200
++++ gcc-4.8.2/libjava/posix-threads.cc 2014-02-18 13:29:50.924058875 +0200
+@@ -657,6 +657,7 @@
+ struct sched_param param;
+ pthread_attr_t attr;
+ struct starter *info;
++ size_t ss;
+
+ if (data->flags & FLAG_START)
+ return;
+@@ -675,8 +676,25 @@
+ // Set stack size if -Xss option was given.
+ if (gcj::stack_size > 0)
+ {
+- int e = pthread_attr_setstacksize (&attr, gcj::stack_size);
++ ss = gcj::stack_size;
++ }
++ else
++ {
++ int e = pthread_attr_getstacksize (&attr, &ss);
++ if (e != 0)
++ JvFail (strerror (e));
++
++ // Request at least 1meg of stack
++ if (ss >= 1024 * 1024)
++ ss = 0;
++ else
++ ss = 1024 * 1024;
++ }
++
++ if (ss)
++ {
++ int e = pthread_attr_setstacksize (&attr, ss);
+ if (e != 0)
+ JvFail (strerror (e));
+ }
+
+ info = (struct starter *) _Jv_AllocBytes (sizeof (struct starter));
diff --git a/system/gcc/fix-gcj-stdgnu14-link.patch b/system/gcc/fix-gcj-stdgnu14-link.patch
new file mode 100644
index 000000000..2b2ce0fa5
--- /dev/null
+++ b/system/gcc/fix-gcj-stdgnu14-link.patch
@@ -0,0 +1,35 @@
+--- gcc-6.1.0/libjava/Makefile.am
++++ gcc-6.1.0/libjava/Makefile.am
+@@ -488,10 +488,14 @@
+ nat_files = $(nat_source_files:.cc=.lo)
+ xlib_nat_files = $(xlib_nat_source_files:.cc=.lo)
+
++libgcj_la_CPPFLAGS = \
++ $(AM_CPPFLAGS) \
++ $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
++
+ # Include THREADLIBS here to ensure that the correct version of
+ # certain linuxthread functions get linked:
+ ## The mysterious backslash in the grep pattern is consumed by make.
+-libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
++libgcj_la_LDFLAGS = $(LIBSTDCXX_RAW_CXX_LDFLAGS) -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
+ $(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBGCJ_LD_EXPORT_ALL)
+--- gcc-6.1.0/libjava/Makefile.in
++++ gcc-6.1.0/libjava/Makefile.in
+@@ -1103,9 +1103,13 @@
+ nat_files = $(nat_source_files:.cc=.lo)
+ xlib_nat_files = $(xlib_nat_source_files:.cc=.lo)
+
++libgcj_la_CPPFLAGS = \
++ $(AM_CPPFLAGS) \
++ $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
++
+ # Include THREADLIBS here to ensure that the correct version of
+ # certain linuxthread functions get linked:
+-libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
++libgcj_la_LDFLAGS = $(LIBSTDCXX_RAW_CXX_LDFLAGS) -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
+ $(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBGCJ_LD_EXPORT_ALL)
diff --git a/system/gcc/fix-rs6000-pie.patch b/system/gcc/fix-rs6000-pie.patch
new file mode 100644
index 000000000..1fbc31a56
--- /dev/null
+++ b/system/gcc/fix-rs6000-pie.patch
@@ -0,0 +1,59 @@
+--- gcc-6.3.0.orig/gcc/config/rs6000/sysv4.h
++++ gcc-6.3.0/gcc/config/rs6000/sysv4.h
+@@ -753,23 +753,42 @@
+ #endif
+
+ #ifdef HAVE_LD_PIE
+-#define STARTFILE_LINUX_SPEC "\
+-%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
+-%{mnewlib:ecrti.o%s;:crti.o%s} \
+-%{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
+-" CRTOFFLOADBEGIN
++#define STARTFILE_LINUX_SPEC \
++ "%{!shared: %{pg|p|profile:gcrt1.o%s;: \
++ %{" PIE_SPEC ":%{static:rcrt1.o%s;:Scrt1.o%s}} %{" NO_PIE_SPEC ":crt1.o%s}}} \
++ crti.o%s %{shared:crtbeginS.o%s;: \
++ %{" PIE_SPEC ":crtbeginS.o%s} \
++ %{" NO_PIE_SPEC ":%{static:crtbeginT.o%s;:crtbegin.o%s}}} \
++ %{fvtable-verify=none:%s; \
++ fvtable-verify=preinit:vtv_start_preinit.o%s; \
++ fvtable-verify=std:vtv_start.o%s} \
++ " CRTOFFLOADBEGIN
+ #else
+-#define STARTFILE_LINUX_SPEC "\
+-%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \
+-%{mnewlib:ecrti.o%s;:crti.o%s} \
+-%{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
+-" CRTOFFLOADBEGIN
++#define STARTFILE_LINUX_SPEC \
++ "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \
++ crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
++ %{fvtable-verify=none:%s; \
++ fvtable-verify=preinit:vtv_start_preinit.o%s; \
++ fvtable-verify=std:vtv_start.o%s} \
++ " CRTOFFLOADBEGIN
+ #endif
+
+-#define ENDFILE_LINUX_SPEC "\
+-%{shared|pie:crtendS.o%s;:crtend.o%s} \
+-%{mnewlib:ecrtn.o%s;:crtn.o%s} \
+-" CRTOFFLOADEND
++#ifdef HAVE_LD_PIE
++#define ENDFILE_LINUX_SPEC \
++ "%{fvtable-verify=none:%s; \
++ fvtable-verify=preinit:vtv_end_preinit.o%s; \
++ fvtable-verify=std:vtv_end.o%s} \
++ %{shared:crtendS.o%s;: %{" PIE_SPEC ":crtendS.o%s} \
++ %{" NO_PIE_SPEC ":crtend.o%s}} crtn.o%s \
++ " CRTOFFLOADEND
++#else
++#define ENDFILE_LINUX_SPEC \
++ "%{fvtable-verify=none:%s; \
++ fvtable-verify=preinit:vtv_end_preinit.o%s; \
++ fvtable-verify=std:vtv_end.o%s} \
++ %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s \
++ " CRTOFFLOADEND
++#endif
+
+ #define LINK_START_LINUX_SPEC ""
+
diff --git a/system/gcc/gcc-4.8-build-args.patch b/system/gcc/gcc-4.8-build-args.patch
new file mode 100644
index 000000000..c27e00961
--- /dev/null
+++ b/system/gcc/gcc-4.8-build-args.patch
@@ -0,0 +1,41 @@
+When cross compiling a target gcc, target flags may be used on the host
+
+Configure identifies a number of warning flags (WARN_CFLAGS and
+WARN_CXXFLAGS) from the $CC value. The cross compiler may be different
+from the host compiler and may not support the same set of flags. This
+leads to problems such as:
+
+cc1plus: error: unrecognized command line option "-Wno-narrowing"
+cc1plus: error: unrecognized command line option "-Wno-overlength-strings"
+
+Work around this problem by removing the warning flags from the
+BUILD_CXXFLAGS value, in a way similar to the BUILD_CFLAGS.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: gcc-4.8.0/gcc/configure
+===================================================================
+--- gcc-4.8.0.orig/gcc/configure
++++ gcc-4.8.0/gcc/configure
+@@ -11720,6 +10581,7 @@ STMP_FIXINC=stmp-fixinc
+ if test x$build != x$host || test "x$coverage_flags" != x
+ then
+ BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
++ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
+ BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
+ fi
+
+Index: gcc-4.8.0/gcc/configure.ac
+===================================================================
+--- gcc-4.8.0.orig/gcc/configure.ac
++++ gcc-4.8.0/gcc/configure.ac
+@@ -1901,6 +1901,7 @@ STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_F
+ if test x$build != x$host || test "x$coverage_flags" != x
+ then
+ BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
++ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
+ BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
+ fi
+
diff --git a/system/gcc/gcc-4.9-musl-fortify.patch b/system/gcc/gcc-4.9-musl-fortify.patch
new file mode 100644
index 000000000..daae954c8
--- /dev/null
+++ b/system/gcc/gcc-4.9-musl-fortify.patch
@@ -0,0 +1,11 @@
+--- gcc-4.9.2/gcc/config/linux.h.orig 2015-03-09 13:27:13.289736710 +0000
++++ gcc-4.9.2/gcc/config/linux.h 2015-03-09 13:29:32.295625046 +0000
+@@ -146,6 +146,8 @@
+
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+ #define INCLUDE_DEFAULTS_MUSL_NATIVE \
++ { NATIVE_SYSTEM_HEADER_DIR "/fortify", 0, 0, 0, 1, 2 }, \
++ { NATIVE_SYSTEM_HEADER_DIR "/fortify", 0, 0, 0, 1, 0 }, \
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
+ #else
diff --git a/system/gcc/gcc-6.1-musl-libssp.patch b/system/gcc/gcc-6.1-musl-libssp.patch
new file mode 100644
index 000000000..fe5c61434
--- /dev/null
+++ b/system/gcc/gcc-6.1-musl-libssp.patch
@@ -0,0 +1,20 @@
+Author: Timo Teräs <timo.teras@iki.fi>
+
+Alpine musl package provides libssp_nonshared.a. We link to it unconditionally,
+as otherwise we get link failures if some objects are -fstack-protector built
+and final link happens with -fno-stack-protector. This seems to be the common
+case when bootstrapping gcc, the piepatches do not seem to fully fix the
+crosstoolchain and bootstrap sequence wrt. stack-protector flag usage.
+
+--- gcc-6.1.0/gcc/gcc.c.orig
++++ gcc-6.1.0/gcc/gcc.c
+@@ -870,8 +870,7 @@
+
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+-#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+- "|fstack-protector-strong|fstack-protector-explicit:}"
++#define LINK_SSP_SPEC "-lssp_nonshared"
+ #else
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+ "|fstack-protector-strong|fstack-protector-explicit" \
diff --git a/system/gcc/gcc-pure64.patch b/system/gcc/gcc-pure64.patch
new file mode 100644
index 000000000..2c350fe5a
--- /dev/null
+++ b/system/gcc/gcc-pure64.patch
@@ -0,0 +1,89 @@
+--- ./gcc/config/i386/t-linux64.orig 2013-01-14 16:32:37.000000000 +0000
++++ ./gcc/config/i386/t-linux64 2013-04-22 06:12:32.984439677 +0000
+@@ -34,6 +34,6 @@
+ comma=,
+ MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+ MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
++MULTILIB_OSDIRNAMES = m64=../lib
++MULTILIB_OSDIRNAMES+= m32=../lib32
+ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
+--- ./gcc/config/aarch64/t-aarch64-linux.orig
++++ ./gcc/config/aarch64/t-aarch64-linux
+@@ -22,7 +22,7 @@
+ LIB1ASMFUNCS = _aarch64_sync_cache_range
+
+ AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
+-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
++MULTILIB_OSDIRNAMES = mabi.lp64=../lib
+ MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
+
+ MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32
+--- ./gcc/config/s390/t-linux64.orig
++++ ./gcc/config/s390/t-linux64
+@@ -7,5 +7,5 @@
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
+-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
++MULTILIB_OSDIRNAMES = m64=../lib
++MULTILIB_OSDIRNAMES+= m32=../lib32
+
+--- ./gcc/config/rs6000/t-linux.orig
++++ ./gcc/config/rs6000/t-linux
+@@ -2,7 +2,8 @@
+ # or soft-float.
+ ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float)))
+ ifneq (,$(findstring powerpc64,$(target)))
+-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
++MULTILIB_OSDIRNAMES := m64=../lib
++MULTILIB_OSDIRNAMES += m32=../lib32
+ else
+ ifneq (,$(findstring spe,$(target)))
+ MULTIARCH_DIRNAME := powerpc-linux-gnuspe$(if $(findstring 8548,$(with_cpu)),,v1)
+@@ -14,7 +15,8 @@
+ MULTIARCH_DIRNAME := $(subst -linux,le-linux,$(MULTIARCH_DIRNAME))
+ endif
+ ifneq (,$(findstring powerpc64le,$(target)))
+-MULTILIB_OSDIRNAMES := $(subst -linux,le-linux,$(MULTILIB_OSDIRNAMES))
++MULTILIB_OSDIRNAMES := m64=../lib
++MULTILIB_OSDIRNAMES += m32=../lib32
+ endif
+ endif
+
+--- ./gcc/config/rs6000/t-linux64.orig
++++ ./gcc/config/rs6000/t-linux64
+@@ -28,8 +28,8 @@
+ MULTILIB_OPTIONS := m64/m32
+ MULTILIB_DIRNAMES := 64 32
+ MULTILIB_EXTRA_OPTS :=
+-MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
++MULTILIB_OSDIRNAMES := m64=../lib
++MULTILIB_OSDIRNAMES += m32=../lib32
+
+ rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
+ $(COMPILE) $<
+--- ./gcc/config/rs6000/t-linux64bele.orig
++++ ./gcc/config/rs6000/t-linux64bele
+@@ -2,6 +2,6 @@
+
+ MULTILIB_OPTIONS += mlittle
+ MULTILIB_DIRNAMES += le
+-MULTILIB_OSDIRNAMES += $(subst =,.mlittle=,$(subst lible32,lib32le,$(subst lible64,lib64le,$(subst lib,lible,$(subst -linux,le-linux,$(MULTILIB_OSDIRNAMES))))))
+-MULTILIB_OSDIRNAMES += $(subst $(if $(findstring 64,$(target)),m64,m32).,,$(filter $(if $(findstring 64,$(target)),m64,m32).mlittle%,$(MULTILIB_OSDIRNAMES)))
++MULTILIB_OSDIRNAMES = m64=../lib
++MULTILIB_OSDIRNAMES+= m32=../lib32
+ MULTILIB_MATCHES := ${MULTILIB_MATCHES_ENDIAN}
+--- ./gcc/config/rs6000/t-linux64lebe.orig
++++ ./gcc/config/rs6000/t-linux64lebe
+@@ -2,6 +2,6 @@
+
+ MULTILIB_OPTIONS += mbig
+ MULTILIB_DIRNAMES += be
+-MULTILIB_OSDIRNAMES += $(subst =,.mbig=,$(subst libbe32,lib32be,$(subst libbe64,lib64be,$(subst lib,libbe,$(subst le-linux,-linux,$(MULTILIB_OSDIRNAMES))))))
+-MULTILIB_OSDIRNAMES += $(subst $(if $(findstring 64,$(target)),m64,m32).,,$(filter $(if $(findstring 64,$(target)),m64,m32).mbig%,$(MULTILIB_OSDIRNAMES)))
++MULTILIB_OSDIRNAMES := m64=../lib
++MULTILIB_OSDIRNAMES += m32=../lib32
+ MULTILIB_MATCHES := ${MULTILIB_MATCHES_ENDIAN}
diff --git a/system/gcc/libgcc-always-build-gcceh.a.patch b/system/gcc/libgcc-always-build-gcceh.a.patch
new file mode 100644
index 000000000..74ae89730
--- /dev/null
+++ b/system/gcc/libgcc-always-build-gcceh.a.patch
@@ -0,0 +1,39 @@
+Highly inspired by:
+ http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch
+
+diff -durN gcc-4.6.0.orig/libgcc/Makefile.in gcc-4.6.0/libgcc/Makefile.in
+--- gcc-4.6.0.orig/libgcc/Makefile.in 2011-01-26 05:19:58.000000000 +0100
++++ gcc-4.6.0/libgcc/Makefile.in 2011-09-12 18:17:12.743718974 +0200
+@@ -772,8 +772,9 @@
+ libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
+ endif
+
++all: libgcc_eh.a
+ ifeq ($(enable_shared),yes)
+-all: libgcc_eh.a libgcc_s$(SHLIB_EXT)
++all: libgcc_s$(SHLIB_EXT)
+ ifneq ($(LIBUNWIND),)
+ all: libunwind$(SHLIB_EXT)
+ endif
+@@ -950,10 +951,6 @@
+ install-shared:
+ $(mkinstalldirs) $(DESTDIR)$(inst_libdir)
+
+- $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/
+- chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
+- $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
+-
+ $(subst @multilib_dir@,$(MULTIDIR),$(subst \
+ @shlib_base_name@,libgcc_s,$(subst \
+ @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL))))
+@@ -968,6 +965,10 @@
+ chmod 644 $(DESTDIR)$(inst_libdir)/libgcov.a
+ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcov.a
+
++ $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/
++ chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
++ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
++
+ parts="$(INSTALL_PARTS)"; \
+ for file in $$parts; do \
+ rm -f $(DESTDIR)$(inst_libdir)/$$file; \
diff --git a/system/gcc/lra-pentium.patch b/system/gcc/lra-pentium.patch
new file mode 100644
index 000000000..e876bcc39
--- /dev/null
+++ b/system/gcc/lra-pentium.patch
@@ -0,0 +1,48 @@
+--- trunk/gcc/lra-assigns.c 2017/03/10 20:53:18 246058
++++ trunk/gcc/lra-assigns.c 2017/03/10 21:17:13 246059
+@@ -889,6 +889,30 @@
+ live_pseudos_reg_renumber[regno] = hard_regno;
+ }
+
++/* Return true iff there is a reason why pseudo SPILL_REGNO should not
++ be spilled. */
++static bool
++must_not_spill_p (unsigned spill_regno)
++{
++ if ((pic_offset_table_rtx != NULL
++ && spill_regno == REGNO (pic_offset_table_rtx))
++ || ((int) spill_regno >= lra_constraint_new_regno_start
++ && ! bitmap_bit_p (&lra_inheritance_pseudos, spill_regno)
++ && ! bitmap_bit_p (&lra_split_regs, spill_regno)
++ && ! bitmap_bit_p (&lra_subreg_reload_pseudos, spill_regno)
++ && ! bitmap_bit_p (&lra_optional_reload_pseudos, spill_regno)))
++ return true;
++ /* A reload pseudo that requires a singleton register class should
++ not be spilled.
++ FIXME: this mitigates the issue on certain i386 patterns, but
++ does not solve the general case where existing reloads fully
++ cover a limited register class. */
++ if (!bitmap_bit_p (&non_reload_pseudos, spill_regno)
++ && reg_class_size [reg_preferred_class (spill_regno)] == 1)
++ return true;
++ return false;
++}
++
+ /* Array used for sorting reload pseudos for subsequent allocation
+ after spilling some pseudo. */
+ static int *sorted_reload_pseudos;
+@@ -960,13 +984,7 @@
+ /* Spill pseudos. */
+ static_p = false;
+ EXECUTE_IF_SET_IN_BITMAP (&spill_pseudos_bitmap, 0, spill_regno, bi)
+- if ((pic_offset_table_rtx != NULL
+- && spill_regno == REGNO (pic_offset_table_rtx))
+- || ((int) spill_regno >= lra_constraint_new_regno_start
+- && ! bitmap_bit_p (&lra_inheritance_pseudos, spill_regno)
+- && ! bitmap_bit_p (&lra_split_regs, spill_regno)
+- && ! bitmap_bit_p (&lra_subreg_reload_pseudos, spill_regno)
+- && ! bitmap_bit_p (&lra_optional_reload_pseudos, spill_regno)))
++ if (must_not_spill_p (spill_regno))
+ goto fail;
+ else if (non_spilled_static_chain_regno_p (spill_regno))
+ static_p = true;
diff --git a/system/libarchive/APKBUILD b/system/libarchive/APKBUILD
new file mode 100644
index 000000000..a8310cbd4
--- /dev/null
+++ b/system/libarchive/APKBUILD
@@ -0,0 +1,55 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libarchive
+pkgver=3.3.2
+pkgrel=3
+pkgdesc="library that can create and read several streaming archive formats"
+url="http://libarchive.org/"
+arch="all"
+license="BSD"
+makedepends="zlib-dev bzip2-dev xz-dev lz4-dev acl-dev openssl-dev expat-dev attr-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
+source="http://www.libarchive.org/downloads/$pkgname-$pkgver.tar.gz
+ penis.patch
+ CVE-2017-14166.patch"
+options="!check" # needs EUC-JP and KOI8R support in iconv
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 3.3.2-r1:
+# - CVE-2017-14166
+
+build () {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --with-expat \
+ --without-xml2 \
+ --with-bz2lib \
+ --with-zlib \
+ --with-lzma \
+ --with-lz4 \
+ --enable-acl \
+ --enable-xattr \
+ ac_cv_header_linux_fiemap_h=no
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+tools() {
+ pkgdesc="libarchive tools - bsdtar and bsdcpio"
+
+ mkdir -p "$subpkgdir"/usr/
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+ ln -s bsdtar "$subpkgdir"/usr/bin/tar
+}
+
+sha512sums="1e538cd7d492f54b11c16c56f12c1632ba14302a3737ec0db786272aec0c8020f1e27616a7654d57e26737e5ed9bfc9a62f1fdda61a95c39eb726aa7c2f673e4 libarchive-3.3.2.tar.gz
+3de98af0f97063999a6a06bb7a3d8cfa10b350237497eaf25a990178fe7ff74355445deb21ec9e883faad8ffc7f4e008cd9ac916be63c79b3f4ed2d5741e4336 penis.patch
+7cc9dbafd970c07fb4421b7a72a075cc0a000db77df4432222539c58625c93c45f01a144838b551980bc0c6dc5b4c3ab852eb1433006c3174581ba0897010dbe CVE-2017-14166.patch"
diff --git a/system/libarchive/CVE-2017-14166.patch b/system/libarchive/CVE-2017-14166.patch
new file mode 100644
index 000000000..b729ae41e
--- /dev/null
+++ b/system/libarchive/CVE-2017-14166.patch
@@ -0,0 +1,36 @@
+From fa7438a0ff4033e4741c807394a9af6207940d71 Mon Sep 17 00:00:00 2001
+From: Joerg Sonnenberger <joerg@bec.de>
+Date: Tue, 5 Sep 2017 18:12:19 +0200
+Subject: [PATCH] Do something sensible for empty strings to make fuzzers
+ happy.
+
+---
+ libarchive/archive_read_support_format_xar.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/libarchive/archive_read_support_format_xar.c b/libarchive/archive_read_support_format_xar.c
+index 7a22beb9d..93eeacc5e 100644
+--- a/libarchive/archive_read_support_format_xar.c
++++ b/libarchive/archive_read_support_format_xar.c
+@@ -1040,6 +1040,9 @@ atol10(const char *p, size_t char_cnt)
+ uint64_t l;
+ int digit;
+
++ if (char_cnt == 0)
++ return (0);
++
+ l = 0;
+ digit = *p - '0';
+ while (digit >= 0 && digit < 10 && char_cnt-- > 0) {
+@@ -1054,7 +1057,10 @@ atol8(const char *p, size_t char_cnt)
+ {
+ int64_t l;
+ int digit;
+-
++
++ if (char_cnt == 0)
++ return (0);
++
+ l = 0;
+ while (char_cnt-- > 0) {
+ if (*p >= '0' && *p <= '7')
diff --git a/system/libarchive/penis.patch b/system/libarchive/penis.patch
new file mode 100644
index 000000000..c3745979e
--- /dev/null
+++ b/system/libarchive/penis.patch
@@ -0,0 +1,11 @@
+--- libarchive-3.3.1/libarchive/archive_read_disk_entry_from_file.c.old 2017-02-25 17:37:08.000000000 +0000
++++ libarchive-3.3.1/libarchive/archive_read_disk_entry_from_file.c 2017-07-04 01:31:03.297134418 +0000
+@@ -1865,7 +1865,7 @@
+ #endif
+ #endif /* defined(HAVE_LINUX_FIEMAP_H) */
+
+-#if defined(SEEK_HOLE) && defined(SEEK_DATA)
++#if defined(SEEK_HOLE) && defined(SEEK_DATA) && defined(__PENIS__)
+
+ /*
+ * SEEK_HOLE sparse interface (FreeBSD, Linux, Solaris)
diff --git a/system/llvm4/APKBUILD b/system/llvm4/APKBUILD
new file mode 100644
index 000000000..236fb1fc5
--- /dev/null
+++ b/system/llvm4/APKBUILD
@@ -0,0 +1,253 @@
+# Contributor: Travis Tilley <ttilley@gmail.com>
+# Contributor: Mitch Tishmack <mitch.tishmack@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
+_pkgname=llvm
+pkgver=4.0.0
+_majorver=${pkgver%%.*}
+pkgname=$_pkgname$_majorver
+pkgrel=5
+pkgdesc="Low Level Virtual Machine compiler system, version $_majorver"
+arch="all"
+url="http://llvm.org/"
+license="UOI-NCSA"
+depends_dev="$pkgname=$pkgver-r$pkgrel"
+makedepends="binutils-dev chrpath cmake file libffi-dev paxmark 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
+ llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch
+ cmake-fix-libLLVM-name.patch
+ disable-FileSystemTest.CreateDir-perms-assert.patch
+ silent-amdgpu-test-failing.patch
+ fix-CheckAtomic.cmake.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="!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_DYLIB_EXPORT_ALL=ON \
+ -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
+
+ paxmark m \
+ bin/llvm-rtdyld \
+ bin/lli \
+ bin/lli-child-target \
+ unittests/ExecutionEngine/MCJIT/MCJITTests \
+ unittests/ExecutionEngine/Orc/OrcJITTests \
+ unittests/Support/SupportTests
+
+ 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/
+}
+
+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/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="cf681f0626ef6d568d951cdc3e143471a1d7715a0ba11e52aa273cf5d8d421e1357ef2645cc85879eaefcd577e99e74d07b01566825b3d0461171ef2cbfc7704 llvm-4.0.0.src.tar.xz
+f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71 llvm-fix-build-with-musl-libc.patch
+19bfb9282455d39d07dbb2b1293b03a45c57d522fbb9c5e58dac034200669628b97e7a90cd4ff5d52d9bb79acfccbef653d8a1140a7f0589ecd6f9b7c4ba0eb6 llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch
+6d1a716e5aa24e6b9a3acf4cc11e2504b1b01abf574074e9e5617b991de87d5e4e687eb18e85e73d5e632568afe2fc357771c4c96f9e136502071991496fb78c cmake-fix-libLLVM-name.patch
+49c47f125014b60d0ea7870f981a2c1708ad705793f89287ed846ee881a837a4dc0170bf467e03f2ef56177473128945287749ac80dc2d13cfabcf8b929ba58a disable-FileSystemTest.CreateDir-perms-assert.patch
+97f788110abbb9e6add2e3a3d3b606dc2817ab726b74ead71241fc5433ba42d5d58e23be91a3b2444eb687c4f56a7c879bf5453e96f9785ce3541301329dda9c silent-amdgpu-test-failing.patch
+3bcfeccc1f14567f99029a131b1289290226d48855857f2eb6a251e041981a8b8b2d7965099df16ebf0a406e48130679f97235ef3f3524577413bb51cf40e613 fix-CheckAtomic.cmake.patch"
diff --git a/system/llvm4/cmake-fix-libLLVM-name.patch b/system/llvm4/cmake-fix-libLLVM-name.patch
new file mode 100644
index 000000000..cb29fe2ef
--- /dev/null
+++ b/system/llvm4/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/system/llvm4/disable-FileSystemTest.CreateDir-perms-assert.patch b/system/llvm4/disable-FileSystemTest.CreateDir-perms-assert.patch
new file mode 100644
index 000000000..e73ce9b6f
--- /dev/null
+++ b/system/llvm4/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/system/llvm4/fix-CheckAtomic.cmake.patch b/system/llvm4/fix-CheckAtomic.cmake.patch
new file mode 100644
index 000000000..a5309de6c
--- /dev/null
+++ b/system/llvm4/fix-CheckAtomic.cmake.patch
@@ -0,0 +1,22 @@
+This cmake file uses command CHECK_LIBRARY_EXISTS that is defined in
+module CheckLibraryExists, but it does not include that module.
+
+This caused build error in lldb, but only on x86 (not x86_64)...
+
+ -- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Failed
+ CMake Error at /usr/lib/llvm4/lib/cmake/llvm/CheckAtomic.cmake:66 (check_library_exists):
+ Unknown CMake command "check_library_exists".
+ Call Stack (most recent call first):
+ cmake/modules/LLDBStandalone.cmake:90 (include)
+ CMakeLists.txt:3 (include)
+
+--- a/cmake/modules/CheckAtomic.cmake
++++ b/cmake/modules/CheckAtomic.cmake
+@@ -1,6 +1,7 @@
+ # atomic builtins are required for threading support.
+
+ INCLUDE(CheckCXXSourceCompiles)
++INCLUDE(CheckLibraryExists)
+
+ # Sometimes linking against libatomic is required for atomic ops, if
+ # the platform doesn't support lock-free atomics.
diff --git a/system/llvm4/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch b/system/llvm4/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch
new file mode 100644
index 000000000..d5d7f07b5
--- /dev/null
+++ b/system/llvm4/llvm-fix-DynamicLibrary-to-build-with-musl-libc.patch
@@ -0,0 +1,33 @@
+From d12ecb83d01dcb580dd94f4d57828f33d3eb4c35 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 18 Feb 2016 15:33:21 +0100
+Subject: [PATCH 3/3] Fix DynamicLibrary to build with musl libc
+
+stdin/out/err is part of the libc and not the kernel so we check for the
+specific libc that does the unexpected instead of linux.
+
+This is needed for making it build with musl libc.
+---
+ lib/Support/DynamicLibrary.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp
+index 9a7aeb5..0c1c8f8 100644
+--- a/lib/Support/DynamicLibrary.cpp
++++ b/lib/Support/DynamicLibrary.cpp
+@@ -140,10 +140,10 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) {
+ #define EXPLICIT_SYMBOL(SYM) \
+ if (!strcmp(symbolName, #SYM)) return &SYM
+
+-// On linux we have a weird situation. The stderr/out/in symbols are both
++// On GNU libc we have a weird situation. The stderr/out/in symbols are both
+ // macros and global variables because of standards requirements. So, we
+ // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first.
+-#if defined(__linux__) and !defined(__ANDROID__)
++#if defined(__GLIBC__)
+ {
+ EXPLICIT_SYMBOL(stderr);
+ EXPLICIT_SYMBOL(stdout);
+--
+2.7.3
+
diff --git a/system/llvm4/llvm-fix-build-with-musl-libc.patch b/system/llvm4/llvm-fix-build-with-musl-libc.patch
new file mode 100644
index 000000000..6ee91ea44
--- /dev/null
+++ b/system/llvm4/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/system/llvm4/silent-amdgpu-test-failing.patch b/system/llvm4/silent-amdgpu-test-failing.patch
new file mode 100644
index 000000000..e20cee595
--- /dev/null
+++ b/system/llvm4/silent-amdgpu-test-failing.patch
@@ -0,0 +1,40 @@
+See https://bugs.llvm.org//show_bug.cgi?id=31610
+
+--- a/test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll
++++ b/test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll
+@@ -2,5 +2,6 @@
+ ; check llc does not crash for invalid opencl version metadata
+
+ ; CHECK: { amd.MDVersion: [ 2, 0 ] }
++; XFAIL: *
+
+ !opencl.ocl.version = !{}
+--- a/test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll
++++ b/test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll
+@@ -2,6 +2,7 @@
+ ; check llc does not crash for invalid opencl version metadata
+
+ ; CHECK: { amd.MDVersion: [ 2, 0 ] }
++; XFAIL: *
+
+ !opencl.ocl.version = !{!0}
+ !0 = !{}
+--- a/test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll
++++ b/test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll
+@@ -2,6 +2,7 @@
+ ; check llc does not crash for invalid opencl version metadata
+
+ ; CHECK: { amd.MDVersion: [ 2, 0 ] }
++; XFAIL: *
+
+ !opencl.ocl.version = !{!0}
+ !0 = !{i32 1}
+--- a/test/CodeGen/AMDGPU/runtime-metadata.ll
++++ b/test/CodeGen/AMDGPU/runtime-metadata.ll
+@@ -1,5 +1,6 @@
+ ; RUN: llc -mtriple=amdgcn--amdhsa -filetype=obj -o - < %s | llvm-readobj -amdgpu-runtime-metadata | FileCheck %s
+ ; RUN: llc -mtriple=amdgcn--amdhsa -filetype=obj -amdgpu-dump-rtmd -amdgpu-check-rtmd-parser %s -o - 2>&1 | FileCheck --check-prefix=CHECK --check-prefix=PARSER %s
++; XFAIL: *
+
+ %struct.A = type { i8, float }
+ %opencl.image1d_t = type opaque
diff --git a/system/mesa/APKBUILD b/system/mesa/APKBUILD
new file mode 100644
index 000000000..ceb22c20f
--- /dev/null
+++ b/system/mesa/APKBUILD
@@ -0,0 +1,252 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=mesa
+pkgver=17.3.1
+pkgrel=1
+pkgdesc="Mesa DRI OpenGL library"
+url="http://www.mesa3d.org"
+arch="all"
+license="LGPL"
+depends=
+subpackages="$pkgname-dev
+ $pkgname-dri-ati:_dri
+ $pkgname-dri-nouveau:_dri
+ $pkgname-dri-freedreno:_dri
+ $pkgname-dri-swrast:_dri
+ $pkgname-dri-virtio:_dri
+ $pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles
+ $pkgname-xatracker $pkgname-osmesa $pkgname-gbm
+ $pkgname-libwayland-egl:_wayland
+ "
+_llvmver=4
+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
+ flex bison llvm$_llvmver-dev eudev-dev libvdpau-dev python3 py-libxml2
+ libxvmc-dev gettext zlib-dev wayland-dev libelf-dev wayland-protocols
+ autoconf automake libtool libxxf86vm-dev libx11-dev libxfixes-dev"
+source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz
+ glx_ro_text_segm.patch
+ musl-fixes.patch
+ musl-fix-includes.patch
+ disk_cache-stack-overflow.patch
+ drmdeps.patch
+ python3-compat.patch
+ "
+replaces="mesa-dricore"
+
+_dri_driverdir=/usr/lib/xorg/modules/dri
+_dri_drivers="r200,radeon,nouveau,swrast"
+_gallium_drivers="r300,r600,radeonsi,nouveau,freedreno,swrast,virgl"
+_vulkan_drivers="radeon"
+
+builddir="$srcdir/mesa-$pkgver"
+
+_arch_opts=
+
+case "$CARCH" in
+x86* | pmmx)
+ _dri_drivers="${_dri_drivers},i915,i965"
+ _gallium_drivers="${_gallium_drivers},svga"
+ _vulkan_drivers="${_vulkan_drivers},intel"
+ subpackages="$subpackages $pkgname-dri-intel:_dri $pkgname-dri-vmwgfx:_dri"
+ ;;
+arm*)
+ _gallium_drivers="${_gallium_drivers},vc4"
+ case "$CARCH" in
+ armhf) CFLAGS="$CFLAGS -mfpu=neon";;
+ esac
+ ;;
+esac
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ libtoolize --force \
+ && aclocal \
+ && automake --add-missing \
+ && autoreconf
+}
+
+build() {
+ cd "$builddir"
+
+ export CFLAGS="$CFLAGS -D_XOPEN_SOURCE=700"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-dri-driverdir=$_dri_driverdir \
+ --disable-asm \
+ --disable-xvmc \
+ --enable-glx-rts \
+ --with-gallium-drivers=${_gallium_drivers} \
+ --with-dri-drivers=${_dri_drivers} \
+ --with-vulkan-drivers=${_vulkan_drivers} \
+ --with-llvm-prefix=/usr/lib/llvm$_llvmver \
+ --enable-llvm-shared-libs \
+ --enable-llvm \
+ --with-platforms=x11,drm,wayland \
+ --enable-shared-glapi \
+ --enable-gbm \
+ --disable-glx-tls \
+ --disable-nine \
+ --enable-dri \
+ --enable-dri3 \
+ --enable-glx \
+ --enable-osmesa \
+ --enable-gles1 \
+ --enable-gles2 \
+ --enable-egl \
+ --enable-texture-float \
+ --enable-xa \
+ --enable-vdpau \
+ $_arch_opts
+
+ make
+}
+
+check() {
+ cd "$builddir"
+ # Compiler test requires LLVM 3.8 and Python 2
+ for i in gtest util mapi; do
+ make -C "src/$i" check
+ done
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+egl() {
+ replaces="mesa"
+ pkgdesc="Mesa libEGL runtime libraries"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libEGL.so* \
+ "$subpkgdir"/usr/lib/
+}
+
+gl() {
+ replaces="mesa"
+ pkgdesc="Mesa libGL runtime libraries"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libGL.so* \
+ "$subpkgdir"/usr/lib/
+}
+
+glapi() {
+ replaces="$pkgname-gles"
+ pkgdesc="Mesa shared glapi"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libglapi.so.* \
+ "$subpkgdir"/usr/lib/
+}
+
+gles() {
+ replaces="mesa"
+ pkgdesc="Mesa libGLESv2 runtime libraries"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libGLES*.so* \
+ "$subpkgdir"/usr/lib/
+}
+
+xatracker() {
+ pkgdesc="Mesa XA state tracker for vmware"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libxatracker*.so.* \
+ "$subpkgdir"/usr/lib/
+}
+
+osmesa() {
+ pkgdesc="Mesa offscreen rendering libraries"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libOSMesa.so.* \
+ "$subpkgdir"/usr/lib/
+}
+
+gbm() {
+ pkgdesc="Mesa gbm library"
+ replaces="mesa"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libgbm.so.* \
+ "$subpkgdir"/usr/lib/
+}
+
+_mv_dri() {
+ install -d "$subpkgdir"/$_dri_driverdir
+
+ while [ $# -gt 0 ]; do
+ mv "$pkgdir"/$_dri_driverdir/${1}.so \
+ "$subpkgdir"/$_dri_driverdir/ || return 1
+ shift
+ done
+}
+
+_mv_vdpau() {
+ local i
+ install -d "$subpkgdir"/usr/lib/vdpau
+ for i in "$@"; do
+ mv "$pkgdir"/usr/lib/vdpau/libvdpau_$i.* \
+ "$subpkgdir"/usr/lib/vdpau/ || return 1
+ done
+}
+
+_mv_gpipe() {
+ return 0
+ # http://cgit.freedesktop.org/mesa/mesa/commit/?id=44ec468e8033553c26a112cebba41c343db00eb1
+ # https://code.google.com/p/chromium/issues/detail?id=412089
+# local i
+# install -d "$subpkgdir"/usr/lib/gallium-pipe
+# for i in "$@"; do
+# mv "$pkgdir"/usr/lib/gallium-pipe/pipe_$i.* \
+# "$subpkgdir"/usr/lib/gallium-pipe/ || return 1
+# done
+}
+
+_dri() {
+ local n=${subpkgname##*-dri-}
+ pkgdesc="Mesa DRI driver for $n"
+ case $n in
+ ati)
+ _mv_dri radeon_dri r200_dri r300_dri r600_dri radeonsi_dri \
+ && _mv_vdpau r300 r600 radeonsi \
+ && _mv_gpipe r300 r600
+ ;;
+ intel)
+ _mv_dri i915_dri i965_dri
+ ;;
+ nouveau)
+ _mv_dri nouveau_dri nouveau_vieux_dri \
+ && _mv_vdpau nouveau \
+ && _mv_gpipe nouveau
+ ;;
+ freedreno)
+ _mv_dri msm_dri kgsl_dri
+ ;;
+ swrast)
+ _mv_dri swrast_dri kms_swrast_dri && _mv_gpipe swrast
+ ;;
+ vmwgfx)
+ _mv_dri vmwgfx_dri && _mv_gpipe vmwgfx
+ ;;
+ virtio)
+ _mv_dri virtio_gpu_dri
+ ;;
+ esac
+}
+
+_wayland() {
+ pkgdesc="Mesa libwayland-egl library"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libwayland-egl.so.* "$subpkgdir"/usr/lib/ \
+ || return 1
+}
+
+sha512sums="a2bd0123bf2df0db03197001a9e001b25f2609f3c6bf1bae66f3bc50c51d2558b5b77e232e81c1658c3a4dec88eda32a8b5a85c1fedc937a7441476228ef8238 mesa-17.3.1.tar.xz
+c3d4804ebc24c7216e4c9d4995fb92e116be7f478024b44808ee134a4c93bb51d1f66fe5fb6eca254f124c4abf6f81272b027824b3e2650a9607818bf793035a glx_ro_text_segm.patch
+edb9c221b093117f48fa298ae557f1d6ed9bbf32d7d262ad4ddb51d26ece94e3efac17670784606052b2ebe8d3dc2b221164f6b52f5282eb3318e6377932be04 musl-fixes.patch
+c7d91a660a033df91fac9c557039efc8669f0c26b2d35997d50753938b70d1af0bd110dcab3f8236eafab7d4be5dd7cd128a3e057e67e7e6a38a73fd6a7ef62e musl-fix-includes.patch
+f40ff04ac73c090c74d1955de6013c5aa41fb77f28b2b82d89cfc1880306a9ca1dde4581592db19f0a0ec6d85032f1ed5d953103ab0d075f9f0b7e459a028c45 disk_cache-stack-overflow.patch
+6800bc62aebfba22a2562c858c27391b47c5675020bd67f040da93ffe4d5d8ac828907a44c7cee6a4ebe63821b58c2515b4012f1f23473670b1de8670426a430 drmdeps.patch
+be91c579111e4ceadf094fcd55fff46ff12c360e2d89c98fac50fbd3bb2459dbd1209d562d27338b94b20bbeae5fca2dd881694bd0da55fca8cdfe253ae384f1 python3-compat.patch"
diff --git a/system/mesa/disk_cache-stack-overflow.patch b/system/mesa/disk_cache-stack-overflow.patch
new file mode 100644
index 000000000..3fad95259
--- /dev/null
+++ b/system/mesa/disk_cache-stack-overflow.patch
@@ -0,0 +1,42 @@
+The disk cache code tries to allocate a 256 Kbyte buffer on the stack.
+Since musl only gives 80 Kbyte of stack space per thread, this causes a trap.
+
+--- mesa-17.3.1/src/util/disk_cache.c.old 2017-12-21 11:31:22.000000000 -0600
++++ mesa-17.3.1/src/util/disk_cache.c 2017-12-29 01:17:15.625633901 -0600
+@@ -716,7 +716,7 @@
+ deflate_and_write_to_disk(const void *in_data, size_t in_data_size, int dest,
+ const char *filename)
+ {
+- unsigned char out[BUFSIZE];
++ unsigned char *out;
+
+ /* allocate deflate state */
+ z_stream strm;
+@@ -733,6 +733,11 @@
+ /* compress until end of in_data */
+ size_t compressed_size = 0;
+ int flush;
++
++ out = calloc(1, BUFSIZE);
++ if (out == NULL)
++ return 0;
++
+ do {
+ int remaining = in_data_size - BUFSIZE;
+ flush = remaining > 0 ? Z_NO_FLUSH : Z_FINISH;
+@@ -754,6 +759,7 @@
+ ssize_t written = write_all(dest, out, have);
+ if (written == -1) {
+ (void)deflateEnd(&strm);
++ free(out);
+ return 0;
+ }
+ } while (strm.avail_out == 0);
+@@ -768,6 +774,7 @@
+
+ /* clean up and return */
+ (void)deflateEnd(&strm);
++ free(out);
+ return compressed_size;
+ }
+
diff --git a/system/mesa/drmdeps.patch b/system/mesa/drmdeps.patch
new file mode 100644
index 000000000..edcb80643
--- /dev/null
+++ b/system/mesa/drmdeps.patch
@@ -0,0 +1,41 @@
+--- a/src/gallium/winsys/radeon/drm/Makefile.am 2017-08-10 11:45:20.737377457 -0400
++++ b/src/gallium/winsys/radeon/drm/Makefile.am 2017-08-10 11:50:23.414534307 -0400
+@@ -7,4 +7,6 @@
+
+ noinst_LTLIBRARIES = libradeonwinsys.la
+
++libradeonwinsys_la_LIBADD = -ldrm_radeon
++
+ libradeonwinsys_la_SOURCES = $(C_SOURCES)
+--- a/src/gallium/winsys/radeon/drm/Makefile.in 2017-08-10 11:45:25.577298181 -0400
++++ b/src/gallium/winsys/radeon/drm/Makefile.in 2017-08-10 11:57:11.151189074 -0400
+@@ -119,7 +119,7 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LTLIBRARIES = $(noinst_LTLIBRARIES)
+-libradeonwinsys_la_LIBADD =
++libradeonwinsys_la_LIBADD = -ldrm_radeon
+ am__objects_1 = radeon_drm_bo.lo radeon_drm_cs.lo \
+ radeon_drm_surface.lo radeon_drm_winsys.lo
+ am_libradeonwinsys_la_OBJECTS = $(am__objects_1)
+--- a/src/gallium/winsys/amdgpu/drm/Makefile.am 2017-12-21 11:31:21.000000000 -0600
++++ b/src/gallium/winsys/amdgpu/drm/Makefile.am 2017-12-28 19:24:48.613693400 -0600
+@@ -11,6 +11,6 @@
+ noinst_LTLIBRARIES = libamdgpuwinsys.la
+
+ libamdgpuwinsys_la_LIBADD = \
+- $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la
++ $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -ldrm_amdgpu
+
+ libamdgpuwinsys_la_SOURCES = $(C_SOURCES)
+--- a/src/gallium/winsys/amdgpu/drm/Makefile.in 2017-12-21 11:31:30.000000000 -0600
++++ b/src/gallium/winsys/amdgpu/drm/Makefile.in 2017-12-28 19:25:22.553597353 -0600
+@@ -572,7 +572,7 @@
+ AM_CXXFLAGS = $(AM_CFLAGS)
+ noinst_LTLIBRARIES = libamdgpuwinsys.la
+ libamdgpuwinsys_la_LIBADD = \
+- $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la
++ $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -ldrm_amdgpu
+
+ libamdgpuwinsys_la_SOURCES = $(C_SOURCES)
+ all: all-am
diff --git a/system/mesa/glx_ro_text_segm.patch b/system/mesa/glx_ro_text_segm.patch
new file mode 100644
index 000000000..8cad4876b
--- /dev/null
+++ b/system/mesa/glx_ro_text_segm.patch
@@ -0,0 +1,28 @@
+2011-02-09 Jeremy Huddleston <jeremyhu@freedesktop.org
+
+ #240956
+ * configure.ac add support to enable readonly test segment on x86
+
+--- ./configure.ac.orig 2008-11-17 23:19:38.000000000 +0100
++++ ./configure.ac 2008-11-17 23:20:17.000000000 +0100
+@@ -499,6 +499,20 @@
+ enable_xcb=no
+ fi
+
++
++dnl readonly text segment on x86 hardened platforms
++AC_ARG_ENABLE([glx_rts],
++ [AS_HELP_STRING([--enable-glx-rts],
++ [on x86, use a readonly text segment for libGL @<:@default=disabled@:>@])],
++ [enable_glx_rts="$enableval"],
++ [enable_glx_rts=no])
++if test "x$enable_glx_rts" = xyes; then
++ DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
++else
++ enable_glx_rts=no
++fi
++
++
+ dnl
+ dnl libGL configuration per driver
+ dnl
diff --git a/system/mesa/musl-fix-includes.patch b/system/mesa/musl-fix-includes.patch
new file mode 100644
index 000000000..2f6cc1d13
--- /dev/null
+++ b/system/mesa/musl-fix-includes.patch
@@ -0,0 +1,14 @@
+diff --git a/src/util/rand_xor.c b/src/util/rand_xor.c
+index de05fa6..016703c 100644
+--- a/src/util/rand_xor.c
++++ b/src/util/rand_xor.c
+@@ -24,6 +24,9 @@
+
+ #if defined(__linux__)
+ #include <sys/file.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ #include <unistd.h>
+ #else
+ #include <time.h>
diff --git a/system/mesa/musl-fixes.patch b/system/mesa/musl-fixes.patch
new file mode 100644
index 000000000..60140d445
--- /dev/null
+++ b/system/mesa/musl-fixes.patch
@@ -0,0 +1,22 @@
+--- ./src/gallium/winsys/svga/drm/vmw_screen.h.orig
++++ ./src/gallium/winsys/svga/drm/vmw_screen.h
+@@ -34,7 +34,7 @@
+ #ifndef VMW_SCREEN_H_
+ #define VMW_SCREEN_H_
+
+-
++#include <sys/stat.h>
+ #include "pipe/p_compiler.h"
+ #include "pipe/p_state.h"
+
+--- a/src/util/u_endian.h.orig 2016-11-04 12:16:00.480356454 +0100
++++ b/src/util/u_endian.h 2016-11-04 12:16:11.984347944 +0100
+@@ -27,7 +27,7 @@
+ #ifndef U_ENDIAN_H
+ #define U_ENDIAN_H
+
+-#if defined(__GLIBC__) || defined(ANDROID) || defined(__CYGWIN__)
++#if defined(__linux__) || defined(ANDROID) || defined(__CYGWIN__)
+ #include <endian.h>
+
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
diff --git a/system/mesa/python3-compat.patch b/system/mesa/python3-compat.patch
new file mode 100644
index 000000000..8532f8c0c
--- /dev/null
+++ b/system/mesa/python3-compat.patch
@@ -0,0 +1,106 @@
+--- mesa-17.3.1/src/gallium/drivers/r600/egd_tables.py (original)
++++ mesa-17.3.1/src/gallium/drivers/r600/egd_tables.py (refactored)
+@@ -60,7 +60,7 @@
+ """
+ fragments = [
+ '"%s\\0" /* %s */' % (
+- te[0].encode('string_escape'),
++ te[0].encode('unicode-escape'),
+ ', '.join(str(idx) for idx in te[2])
+ )
+ for te in self.table
+@@ -217,10 +217,10 @@
+ strings = StringTable()
+ strings_offsets = IntTable("int")
+
+- print '/* This file is autogenerated by egd_tables.py from evergreend.h. Do not edit directly. */'
+- print
+- print CopyRight.strip()
+- print '''
++ print('/* This file is autogenerated by egd_tables.py from evergreend.h. Do not edit directly. */')
++ print()
++ print(CopyRight.strip())
++ print('''
+ #ifndef EG_TABLES_H
+ #define EG_TABLES_H
+
+@@ -242,20 +242,20 @@
+ unsigned name_offset;
+ unsigned op;
+ };
+-'''
+-
+- print 'static const struct eg_packet3 packet3_table[] = {'
++''')
++
++ print('static const struct eg_packet3 packet3_table[] = {')
+ for pkt in packets:
+- print '\t{%s, %s},' % (strings.add(pkt[5:]), pkt)
+- print '};'
+- print
+-
+- print 'static const struct eg_field egd_fields_table[] = {'
++ print('\t{%s, %s},' % (strings.add(pkt[5:]), pkt))
++ print('};')
++ print()
++
++ print('static const struct eg_field egd_fields_table[] = {')
+
+ fields_idx = 0
+ for reg in regs:
+ if len(reg.fields) and reg.own_fields:
+- print '\t/* %s */' % (fields_idx)
++ print('\t/* %s */' % (fields_idx))
+
+ reg.fields_idx = fields_idx
+
+@@ -266,34 +266,34 @@
+ while value[1] >= len(values_offsets):
+ values_offsets.append(-1)
+ values_offsets[value[1]] = strings.add(strip_prefix(value[0]))
+- print '\t{%s, %s(~0u), %s, %s},' % (
++ print('\t{%s, %s(~0u), %s, %s},' % (
+ strings.add(field.name), field.s_name,
+- len(values_offsets), strings_offsets.add(values_offsets))
++ len(values_offsets), strings_offsets.add(values_offsets)))
+ else:
+- print '\t{%s, %s(~0u)},' % (strings.add(field.name), field.s_name)
++ print('\t{%s, %s(~0u)},' % (strings.add(field.name), field.s_name))
+ fields_idx += 1
+
+- print '};'
+- print
+-
+- print 'static const struct eg_reg egd_reg_table[] = {'
++ print('};')
++ print()
++
++ print('static const struct eg_reg egd_reg_table[] = {')
+ for reg in regs:
+ if len(reg.fields):
+- print '\t{%s, %s, %s, %s},' % (strings.add(reg.name), reg.r_name,
+- len(reg.fields), reg.fields_idx if reg.own_fields else reg.fields_owner.fields_idx)
++ print('\t{%s, %s, %s, %s},' % (strings.add(reg.name), reg.r_name,
++ len(reg.fields), reg.fields_idx if reg.own_fields else reg.fields_owner.fields_idx))
+ else:
+- print '\t{%s, %s},' % (strings.add(reg.name), reg.r_name)
+- print '};'
+- print
++ print('\t{%s, %s},' % (strings.add(reg.name), reg.r_name))
++ print('};')
++ print()
+
+ strings.emit(sys.stdout, "egd_strings")
+
+- print
++ print()
+
+ strings_offsets.emit(sys.stdout, "egd_strings_offsets")
+
+- print
+- print '#endif'
++ print()
++ print('#endif')
+
+
+ def main():
diff --git a/system/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch b/system/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch
new file mode 100644
index 000000000..f6996b3fc
--- /dev/null
+++ b/system/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch
@@ -0,0 +1,25 @@
+From 94742e085ac96d366401df883df96d35d0eafd5a Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 1 Feb 2017 04:04:52 +0000
+Subject: [PATCH 1/7] call /sbin/mkmntdirs in localmount OpenRC service
+
+---
+ init.d/localmount.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/init.d/localmount.in b/init.d/localmount.in
+index cae80c34..3dbb375b 100644
+--- a/init.d/localmount.in
++++ b/init.d/localmount.in
+@@ -21,6 +21,8 @@ depend()
+
+ start()
+ {
++ [ -x /sbin/mkmntdirs ] && mkmntdirs
++
+ # Mount local filesystems in /etc/fstab.
+ # The types variable must start with no, and must be a type
+ local critical= types="noproc" x= no_netdev= rc=
+--
+2.11.0
+
diff --git a/system/openrc/0002-force-root-be-rw-before-localmount.patch b/system/openrc/0002-force-root-be-rw-before-localmount.patch
new file mode 100644
index 000000000..1c9f12c1a
--- /dev/null
+++ b/system/openrc/0002-force-root-be-rw-before-localmount.patch
@@ -0,0 +1,30 @@
+From 228df9f1f21e08ec659d5fcf1f716393e563a3a5 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 1 Feb 2017 04:05:44 +0000
+Subject: [PATCH 2/7] force root be rw before localmount
+
+The service that pulls in root remount is mtab which we dont need/use.
+---
+ init.d/localmount.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/init.d/localmount.in b/init.d/localmount.in
+index 9c8da2d0..c349c951 100644
+--- a/init.d/localmount.in
++++ b/init.d/localmount.in
+@@ -13,9 +13,9 @@ description="Mounts disks and swap according to /etc/fstab."
+
+ depend()
+ {
+- need fsck
+- use lvm modules mtab root
+- after lvm modules root
++ need fsck root
++ use lvm modules mtab
++ after lvm modules
+ keyword -docker -jail -lxc -prefix -systemd-nspawn -vserver
+ }
+
+--
+2.11.1
+
diff --git a/system/openrc/0003-sysctl-add-compatibility-for-busybox-sysctl.patch b/system/openrc/0003-sysctl-add-compatibility-for-busybox-sysctl.patch
new file mode 100644
index 000000000..3803bcca8
--- /dev/null
+++ b/system/openrc/0003-sysctl-add-compatibility-for-busybox-sysctl.patch
@@ -0,0 +1,46 @@
+From ed120780512b6dd0bfabba0ea59d06d1099924b0 Mon Sep 17 00:00:00 2001
+From: William Pitcock <nenolod@dereferenced.org>
+Date: Wed, 1 Feb 2017 04:08:33 +0000
+Subject: [PATCH 3/7] sysctl: add compatibility for busybox sysctl
+
+---
+ init.d/sysctl.in | 21 +++++++++++++++++++--
+ 1 file changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/init.d/sysctl.in b/init.d/sysctl.in
+index cb756f3a..fc22364b 100644
+--- a/init.d/sysctl.in
++++ b/init.d/sysctl.in
+@@ -38,10 +38,27 @@ BSD_sysctl()
+
+ Linux_sysctl()
+ {
+- local quiet
++ local quiet retval=0
+ yesno $rc_verbose || quiet=-q
+
+- sysctl ${quiet} --system
++ set --
++ eindent
++ for i in /run/sysctl.d/*.conf \
++ /etc/sysctl.d/*.conf \
++ /usr/local/lib/sysctl.d/*.conf \
++ /usr/lib/sysctl.d/*.conf \
++ /lib/sysctl.d/*.conf \
++ /etc/sysctl.conf; do
++ if [ -e "$i" ]; then
++ vebegin "applying $conf"
++ sysctl ${quiet} -p "$i"
++ retval=$(( $retval + $? ))
++ veend $retval
++ fi
++ done
++ eoutdent
++
++ return $retval
+ }
+
+ start()
+--
+2.11.0
+
diff --git a/system/openrc/0004-hide-error-when-migrating-var-run-to-run.patch b/system/openrc/0004-hide-error-when-migrating-var-run-to-run.patch
new file mode 100644
index 000000000..801d3b236
--- /dev/null
+++ b/system/openrc/0004-hide-error-when-migrating-var-run-to-run.patch
@@ -0,0 +1,28 @@
+From 496b984f889531bf629d77a5fa2211f8cb0a1183 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 17 Aug 2016 17:18:21 +0200
+Subject: [PATCH 4/7] hide error when migrating /var/run to /run
+
+The script tries to copy non-existing files. We simply hide the error
+
+http://bugs.alpinelinux.org/issues/3160
+---
+ init.d/bootmisc.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/init.d/bootmisc.in b/init.d/bootmisc.in
+index efc1c572..6e473ade 100644
+--- a/init.d/bootmisc.in
++++ b/init.d/bootmisc.in
+@@ -112,7 +112,7 @@ migrate_to_run()
+ rm $src
+ elif [ ! -L $src -a -d $src ]; then
+ ebegin "Migrating $src to $dst"
+- cp -a $src/* $dst/
++ cp -a $src/* $dst/ 2>/dev/null
+ rm -rf $src
+ eend $?
+ fi
+--
+2.11.0
+
diff --git a/system/openrc/0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch b/system/openrc/0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch
new file mode 100644
index 000000000..eb1ad1408
--- /dev/null
+++ b/system/openrc/0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch
@@ -0,0 +1,71 @@
+From b62d7b9438af6dac50d52708777070f312e6650c Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 1 Feb 2017 04:17:14 +0000
+Subject: [PATCH 5/7] rc: pull in sysinit and boot as stacked levels when
+ needed
+
+We need start services from sysinit and boot runlevel, even if the new
+runlevel is empty.
+
+This fixes problem introduced with commit 7716bf31 (Fix stacked runlevel
+support), at which the start_services list are no longer used to start
+the services.
+
+This also make sure that all services in sysinit and boot runlevels are
+started before switching to next. This was not guaranteed when switching
+to a non-empty runlevel.
+
+Fixes issue #54.
+---
+ src/rc/rc.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/rc/rc.c b/src/rc/rc.c
+index 110591e4..13a7e0d4 100644
+--- a/src/rc/rc.c
++++ b/src/rc/rc.c
+@@ -738,6 +738,7 @@ int main(int argc, char **argv)
+ const char *bootlevel = NULL;
+ char *newlevel = NULL;
+ const char *systype = NULL;
++ RC_STRINGLIST *runlevel_chain;
+ RC_STRINGLIST *deporder = NULL;
+ RC_STRINGLIST *tmplist;
+ RC_STRING *service;
+@@ -993,6 +994,7 @@ int main(int argc, char **argv)
+ main_hotplugged_services = rc_services_in_state(RC_SERVICE_HOTPLUGGED);
+ main_start_services = rc_services_in_runlevel_stacked(newlevel ?
+ newlevel : runlevel);
++ runlevel_chain = rc_runlevel_stacks(newlevel ? newlevel : runlevel);
+ if (strcmp(newlevel ? newlevel : runlevel, RC_LEVEL_SHUTDOWN) != 0 &&
+ strcmp(newlevel ? newlevel : runlevel, RC_LEVEL_SYSINIT) != 0)
+ {
+@@ -1010,6 +1012,7 @@ int main(int argc, char **argv)
+ tmplist = rc_services_in_runlevel(bootlevel);
+ TAILQ_CONCAT(main_start_services, tmplist, entries);
+ free(tmplist);
++ rc_stringlist_add(runlevel_chain, bootlevel);
+ }
+ if (main_hotplugged_services) {
+ TAILQ_FOREACH(service, main_hotplugged_services,
+@@ -1018,6 +1021,7 @@ int main(int argc, char **argv)
+ service->value);
+ }
+ }
++ rc_stringlist_add(runlevel_chain, RC_LEVEL_SYSINIT);
+ }
+
+ parallel = rc_conf_yesno("rc_parallel");
+@@ -1074,9 +1078,6 @@ int main(int argc, char **argv)
+
+ /* If we have a list of services to start then... */
+ if (main_start_services) {
+- /* Get a list of the chained runlevels which compose the target runlevel */
+- RC_STRINGLIST *runlevel_chain = rc_runlevel_stacks(runlevel);
+-
+ /* Loop through them in reverse order. */
+ RC_STRING *rlevel;
+ TAILQ_FOREACH_REVERSE(rlevel, runlevel_chain, rc_stringlist, entries)
+--
+2.11.0
+
diff --git a/system/openrc/0006-mount-efivars-read-only.patch b/system/openrc/0006-mount-efivars-read-only.patch
new file mode 100644
index 000000000..ec2321dd2
--- /dev/null
+++ b/system/openrc/0006-mount-efivars-read-only.patch
@@ -0,0 +1,27 @@
+From 37feb4b716525f0c5c5469f21686ab4efcf06fab Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 1 Feb 2017 04:18:53 +0000
+Subject: [PATCH 6/7] mount efivars read-only
+
+unintentional writes to efivars may result in bricked hardware. mount it
+read-only to play safe.
+---
+ init.d/sysfs.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/init.d/sysfs.in b/init.d/sysfs.in
+index e493f584..bfd0d438 100644
+--- a/init.d/sysfs.in
++++ b/init.d/sysfs.in
+@@ -101,7 +101,7 @@ mount_misc()
+ if [ -d /sys/firmware/efi/efivars ] &&
+ ! mountinfo -q /sys/firmware/efi/efivars; then
+ ebegin "Mounting efivarfs filesystem"
+- mount -n -t efivarfs -o ${sysfs_opts} \
++ mount -n -t efivarfs -o ro,${sysfs_opts} \
+ efivarfs /sys/firmware/efi/efivars 2> /dev/null
+ eend 0
+ fi
+--
+2.11.1
+
diff --git a/system/openrc/0007-make-consolefont-service-compatible-with-busyboxs-se.patch b/system/openrc/0007-make-consolefont-service-compatible-with-busyboxs-se.patch
new file mode 100644
index 000000000..6c23e2ab0
--- /dev/null
+++ b/system/openrc/0007-make-consolefont-service-compatible-with-busyboxs-se.patch
@@ -0,0 +1,70 @@
+From 3d0d2b89745597ea973129eafa3f999cf19d761f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net>
+Date: Wed, 17 Aug 2016 17:52:58 +0200
+Subject: [PATCH 7/7] make consolefont service compatible with busyboxs setfont
+ applet
+
+Compared to kdbs setfont program it doesn't support -O and -m.
+---
+ conf.d/consolefont | 11 ++---------
+ init.d/consolefont.in | 7 ++-----
+ 2 files changed, 4 insertions(+), 14 deletions(-)
+
+diff --git a/conf.d/consolefont b/conf.d/consolefont
+index e01ae842..75544b2f 100644
+--- a/conf.d/consolefont
++++ b/conf.d/consolefont
+@@ -3,16 +3,9 @@
+ #
+ # consolefont specifies the default font that you'd like Linux to use on the
+ # console. You can find a good selection of fonts in /usr/share/consolefonts;
+-# you shouldn't specify the trailing ".psf.gz", just the font name below.
+-# To use the default console font, comment out the CONSOLEFONT setting below.
+-consolefont="default8x16"
++consolefont="default8x16.psf.gz"
+
+ # consoletranslation is the charset map file to use. Leave commented to use
+ # the default one. Have a look in /usr/share/consoletrans for a selection of
+ # map files you can use.
+-#consoletranslation="8859-1_to_uni"
+-
+-# unicodemap is the unicode map file to use. Leave commented to use the
+-# default one. Have a look in /usr/share/unimaps for a selection of map files
+-# you can use.
+-#unicodemap="iso01"
++#consoletranslation="8859-1_to_uni.trans"
+diff --git a/init.d/consolefont.in b/init.d/consolefont.in
+index 9fe95afa..173ed426 100644
+--- a/init.d/consolefont.in
++++ b/init.d/consolefont.in
+@@ -22,7 +22,6 @@ start()
+ {
+ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+ consolefont=${consolefont:-${CONSOLEFONT}}
+- unicodemap=${unicodemap:-${UNICODEMAP}}
+ consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}}
+
+ if [ -z "$consolefont" ]; then
+@@ -43,9 +42,6 @@ start()
+ if [ -n "$consoletranslation" ]; then
+ param="$param -m $consoletranslation"
+ fi
+- if [ -n "${unicodemap}" ]; then
+- param="$param -u $unicodemap"
+- fi
+
+ # Set the console font
+ ebegin "Setting console font [$consolefont]"
+@@ -63,7 +59,8 @@ start()
+ # Store the font so we can use it ASAP on boot
+ if [ $retval -eq 0 ] && checkpath -W "$RC_LIBEXECDIR"; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+- setfont -O "$RC_LIBEXECDIR"/console/font
++ zcat "/usr/share/consolefonts/$consolefont" \
++ > "$RC_LIBEXECDIR"/console/font
+ fi
+
+ return $retval
+--
+2.11.0
+
diff --git a/system/openrc/APKBUILD b/system/openrc/APKBUILD
new file mode 100644
index 000000000..31e6adee6
--- /dev/null
+++ b/system/openrc/APKBUILD
@@ -0,0 +1,93 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=openrc
+pkgver=0.24.1
+_ver=${pkgver/_git*/}
+pkgrel=6
+pkgdesc="OpenRC manages the services, startup and shutdown of a host"
+url="http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git"
+arch="all"
+license='BSD-2'
+depends="psmisc /sbin/init"
+makedepends="bsd-compat-headers"
+subpackages="$pkgname-doc $pkgname-dev"
+install="$pkgname.post-install $pkgname.post-upgrade"
+source="$pkgname-$pkgver.tar.gz::https://github.com/OpenRC/openrc/archive/$pkgver.tar.gz
+
+ 0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch
+ 0002-force-root-be-rw-before-localmount.patch
+ 0003-sysctl-add-compatibility-for-busybox-sysctl.patch
+ 0004-hide-error-when-migrating-var-run-to-run.patch
+ 0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch
+ 0006-mount-efivars-read-only.patch
+ 0007-make-consolefont-service-compatible-with-busyboxs-se.patch
+
+ openrc-configuration.patch
+
+ openrc.logrotate
+ hostname.initd
+ hwdrivers.initd
+ keymaps.initd
+ modules.initd
+ modloop.initd
+ modloop.confd
+ sysfsconf.initd
+ "
+
+builddir="$srcdir/$pkgname-$_ver"
+prepare() {
+ default_prepare
+ sed -i -e '/^sed/d' "$builddir"/pkgconfig/Makefile
+}
+
+build() {
+ cd "$builddir"
+ export BRANDING="Adélie Linux"
+ make LIBEXECDIR=/lib/rc MKNET=no
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make LIBEXECDIR=/lib/rc DESTDIR="$pkgdir/" install
+
+ # we cannot have anything turned on by default
+ mkdir -p "$pkgdir"/usr/share/openrc || true
+ mv "$pkgdir"/etc/runlevels "$pkgdir"/usr/share/openrc/runlevels
+
+ # we override some of the scripts
+ for i in "$srcdir"/*.initd; do
+ j=${i##*/}
+ install -Dm755 $i "$pkgdir"/etc/init.d/${j%.initd}
+ done
+
+ # we override some of the conf.d files
+ for i in "$srcdir"/*.confd; do
+ j=${i##*/}
+ install -Dm644 $i "$pkgdir"/etc/conf.d/${j%.confd}
+ done
+
+ install -Dm644 "$srcdir/$pkgname.logrotate" "$pkgdir/etc/logrotate.d/$pkgname"
+ install -d "$pkgdir"/etc/local.d "$pkgdir"/run
+}
+
+sha512sums="8d2aec029cb675ae5d446fe4a2f9613fac2fc5ea74b091d93e62b1f7bd4f8e3a96893bafa39a301129dad4623cc30acdcfd9e383a74f98c69f29820adb6d9aa0 openrc-0.24.1.tar.gz
+71fce711adbcb411189a089f1d49567c50348e12c42b7a9c9b582dae5d18051f88ccf81c768337e87d6792d953e84d1e8b93d7978a1947d7d20ef3b1cd330875 0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch
+aedf77f9159fefb4bd5f30a29a33b6aedbc986c9a0f993aa928cc79fbe24aac76bd9e5974dcce52ee8736c22d7e90375930d4bb5c66af3519d8e46590df00fe1 0002-force-root-be-rw-before-localmount.patch
+9dea3fcdb90e3e8078a771beefeba3ca91b9966a1b8ee9ff96cf460e7dd21abbc4a46a501a960c3edf5a76c083c2cf60ccb06d9da7a4c6df2a50660745beb278 0003-sysctl-add-compatibility-for-busybox-sysctl.patch
+d54630d40a2d6b10a325cb012d4efcda997a60c008ca953ce5d60059d3f267308a59dabddf93a5fc0d301aa91967137d144effbe5f574394af768ce4ebc48738 0004-hide-error-when-migrating-var-run-to-run.patch
+39a35c54ec9112fe84c901ed155a711cec8e194af02d5483ee60b80743dab12391e6fdc7b3da2f86844dd4edcf53e681ff95bd4d6fa1101a89ce54dce2ddbb7c 0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch
+7221dd2daccd8844f6f9481b7b5921abc2711c8abd1a4bb72f04db8fd8e734b817f5d0d571daea0e2e05d3bc687f75ee1d8025249996bdee0b3328e18d9da7d3 0006-mount-efivars-read-only.patch
+234c4f3cf39df3350dbea25c00b8d584794b28194f44c726767a6a16d91a26fee1b5d2dd16635f19803fc015b4e9d99c52b23128e6b815938b88365feba8cf59 0007-make-consolefont-service-compatible-with-busyboxs-se.patch
+2dde266f3176456724e4b0c40476e7061e31986b67744b4a53c71ba0d3896860b4569e3af2ea4777a9d8fe3b6282ff869666570f1daa86cdc410c0e09805c990 openrc-configuration.patch
+12bb6354e808fbf47bbab963de55ee7901738b4a912659982c57ef2777fff9a670e867fcb8ec316a76b151032c92dc89a950d7d1d835ef53f753a8f3b41d2cec openrc.logrotate
+99b542c0903ad6874b8c308b2e0660a4fe2ff9db962dfec65325cd12c368873a2ae800d5e6d42dc4deff775e1d5c0068869eb72581f7ab16e88d5738afe1d3dd hostname.initd
+c06eac7264f6cc6888563feeae5ca745aae538323077903de1b19102e4f16baa34c18b8c27af5dd5423e7670834e2261e9aa55f2b1ec8d8fdc2be105fe894d55 hwdrivers.initd
+584ecbbcecb284527d7616790b6e337ace610e4b3cedf2993eca294bfbef54674aeaee3078b6c17d746a0c48b5a64a813c3534136915947e6f62a6fa206cd3ca keymaps.initd
+b04058ec630e19de0bafefe06198dc1bff8c8d5d2c89e4660dd83dda8bb82a76cdb1d8661cce88e4a406aa6b4152e17efff52d3eb18ffaec0751d0b6cdbcc48a modules.initd
+92c0245ba4d7cc6828a9b68510fb541cf3b21b9b844a858336af60e84d1db62ddb4471aad0d82ef05d639335a81014f8350a71a746c2bcd90697daa6a8c03408 modloop.initd
+aa702a7da8e6c0e5d8738febaf6b4e4cb021b30ce5c1809b530abf2b36739079446b16fc054740da8d86ed099942cf5deed6597cedb64c058f3def587a8b4689 modloop.confd
+d76c75c58e6f4b0801edac4e081b725ef3d50a9a8c9bbb5692bf4d0f804af7d383bf71a73d5d03ed348a89741ef0b2427eb6a7cbf5a9b9ff60a240639fa6ec88 sysfsconf.initd"
diff --git a/system/openrc/hostname.initd b/system/openrc/hostname.initd
new file mode 100644
index 000000000..c1580db08
--- /dev/null
+++ b/system/openrc/hostname.initd
@@ -0,0 +1,18 @@
+#!/sbin/openrc-run
+
+description="Sets the hostname of the machine."
+
+depend() {
+ keyword -prefix -lxc
+}
+
+start() {
+ if [ -s /etc/hostname ] ; then
+ opts="-F /etc/hostname"
+ else
+ opts="localhost"
+ fi
+ ebegin "Setting hostname"
+ hostname $opts
+ eend $?
+}
diff --git a/system/openrc/hwdrivers.initd b/system/openrc/hwdrivers.initd
new file mode 100644
index 000000000..80184c971
--- /dev/null
+++ b/system/openrc/hwdrivers.initd
@@ -0,0 +1,32 @@
+#!/sbin/openrc-run
+
+depend() {
+ need sysfs dev
+ before checkfs fsck
+ after modloop
+ keyword -vserver -lxc
+}
+
+# Load hardware drivers
+start() {
+ # check for boot option "nocoldplug"
+ if get_bootparam noautodetect; then
+ ewarn "Autodetection of hardware disabled from boot cmdline"
+ return 0
+ fi
+
+ ebegin "Loading hardware drivers"
+ find /sys -name modalias -type f -print0 | xargs -0 sort -u \
+ | xargs modprobe -b -a 2> /dev/null
+ # we run it twice so we detect all devices
+ find /sys -name modalias -type f -print0 | xargs -0 sort -u \
+ | xargs modprobe -b -a 2> /dev/null
+
+ # check if framebuffer drivers got pulled in
+ if [ -e /dev/fb0 ] && ! [ -e /sys/module/fbcon ]; then
+ modprobe -b -q fbcon
+ fi
+
+ eend 0
+}
+
diff --git a/system/openrc/keymaps.initd b/system/openrc/keymaps.initd
new file mode 100644
index 000000000..24d1e8777
--- /dev/null
+++ b/system/openrc/keymaps.initd
@@ -0,0 +1,20 @@
+#!/sbin/openrc-run
+
+description="Applies a keymap for the consoles."
+
+depend()
+{
+ need localmount
+ keyword -openvz -prefix -uml -vserver -xenu -lxc
+}
+
+start() {
+ [ -z "$KEYMAP" ] && return
+ ebegin "Setting keymap"
+ zcat "$KEYMAP" | loadkmap
+ eend $?
+}
+
+stop() {
+ return
+}
diff --git a/system/openrc/modloop.confd b/system/openrc/modloop.confd
new file mode 100644
index 000000000..de4cbb62b
--- /dev/null
+++ b/system/openrc/modloop.confd
@@ -0,0 +1,3 @@
+# enable loadable module support when running from RAM
+# when unionfs support is available in the kernel
+unionfs_size="32M"
diff --git a/system/openrc/modloop.initd b/system/openrc/modloop.initd
new file mode 100644
index 000000000..9d664dd40
--- /dev/null
+++ b/system/openrc/modloop.initd
@@ -0,0 +1,124 @@
+#!/sbin/openrc-run
+
+# script that will mount image with modules
+
+depend() {
+ after dev-mount
+ before checkfs fsck hwdrivers modules hwclock dev sysfs
+ keyword -vserver -lxc
+}
+
+# read kernel options
+init_KOPT() {
+ for opt in $(cat /proc/cmdline 2>/dev/null); do
+ case "$opt" in
+ modloop=*)
+ eval "KOPT_${opt%%=*}='${opt#*=}'" ;;
+ esac
+ done
+}
+
+mountdirs() {
+ awk '$2 !~ /^\/(sys|proc|dev|run)/ && $2 != "/" {print $2}' /proc/mounts
+}
+
+find_modloop() {
+ local dir="$1"
+ local kver=$(uname -r)
+ local oifs="$IFS"
+ IFS=$'\n'
+ set -- $(blkid "$dir"/boot/* "$dir"/*)
+ IFS="$oifs"
+ for line; do
+ img=${line%%:*}
+ mount "$img" -o loop,ro /.modloop || continue
+ if [ -d /.modloop/modules/$kver ]; then
+ return 0
+ fi
+ umount /.modloop
+ done
+ return 1
+}
+
+find_backing_file() {
+ local dir="$1"
+ local dev=$(df -P "$dir" | tail -1 | awk '{print $1}')
+ cat /sys/block/${dev#/dev/}/loop/backing_file 2>/dev/null
+}
+
+start() {
+ local modloop= mount_opts= modloop_dldir="/lib"
+ init_KOPT
+
+ mkdir -p /.modloop /lib
+ case "$KOPT_modloop" in
+ http://*|https://*|ftp://*)
+ wget -P "$modloop_dldir" "$KOPT_modloop" \
+ && modloop=$modloop_dldir/$(basename $KOPT_modloop)
+ ;;
+ *)
+ for dir in $(mountdirs); do
+ if [ -f "$dir"/$KOPT_modloop ]; then
+ modloop="$dir/${KOPT_modloop##/}"
+ alpine_mnt="$dir"
+ break
+ fi
+ done
+ ;;
+ esac
+
+ ebegin "Mounting modloop $modloop"
+ if [ -n "$modloop" ]; then
+ mount -o loop,ro $modloop /.modloop
+ eend $? || return 1
+ else
+ for dir in $(mountdirs); do
+ if find_modloop "$dir"; then
+ alpine_mnt="$dir"
+ break
+ fi
+ done
+ if [ -d /.modloop/modules/$(uname -r) ]; then
+ eend 0
+ else
+ eend 1 || return 1
+ fi
+ fi
+
+ #use overlayfs if available and configured
+ if grep -q -w "overlay$" /proc/filesystems && [ -n "$unionfs_size" ]; then
+ ebegin "OverlayFS detected, mounting modloop rw"
+ mkdir -p /.modunisonfs /lib/modules
+ mount -t tmpfs -o size="$unionfs_size" tmpfs /.modunisonfs
+ mkdir -p /.modunisonfs/modules /.modunisonfs/work
+ mount -t overlay -o upperdir=/.modunisonfs/modules,lowerdir=/.modloop/modules,workdir=/.modunisonfs/work overlay /lib/modules
+ eend $? || return 1
+ else
+ rm -rf /lib/modules && ln -sf /.modloop/modules /lib/
+ fi
+
+ # copy firmware if there are any
+ if [ -d $alpine_mnt/firmware ]; then
+ ebegin "Copying firmware from $alpine_mnt/firmware"
+ cp -R -a $alpine_mnt/firmware /lib/
+ eend $?
+ elif [ -d /lib/modules/firmware ]; then
+ rmdir /lib/firmware 2>/dev/null \
+ && ln -s /lib/modules/firmware /lib/
+ fi
+ return 0
+}
+
+stop() {
+ local rc=0
+ if mountinfo --quiet /.modunisonfs/modules && mountinfo --quiet /lib/modules; then
+ umount /lib/modules
+ umount /.modunisonfs/modules
+ fi
+ if mountinfo --quiet /.modloop; then
+ ebegin "Unmounting /.modloop"
+ umount -d /.modloop
+ eend $? || return 1
+ fi
+}
+
diff --git a/system/openrc/modules.initd b/system/openrc/modules.initd
new file mode 100644
index 000000000..d90a3e687
--- /dev/null
+++ b/system/openrc/modules.initd
@@ -0,0 +1,29 @@
+#!/sbin/openrc-run
+
+description="Loads a user defined list of kernel modules."
+
+depend()
+{
+ before hwclock hwdrivers
+ keyword -openvz -prefix -vserver -lxc
+}
+
+start() {
+ ebegin "Loading modules"
+ for f in /etc/modules \
+ /etc/modules-load.d/*.conf \
+ /run/modules-load.d/*.conf \
+ /usr/lib/modules-load.d/*.conf \
+ /lib/modules-load.d/*.conf; do
+ if ! [ -f "$f" ]; then
+ continue
+ fi
+
+ sed -e 's/\#.*//g' -e '/^[[:space:]]*$/d' < "$f" \
+ | while read module args; do
+ modprobe -q $module $args
+ done
+ done
+ eend $?
+}
+
diff --git a/system/openrc/openrc-configuration.patch b/system/openrc/openrc-configuration.patch
new file mode 100644
index 000000000..ff2ce5f34
--- /dev/null
+++ b/system/openrc/openrc-configuration.patch
@@ -0,0 +1,20 @@
+--- openrc-0.24.1/etc/rc.conf.original 2017-03-14 19:58:26.000000000 -0500
++++ openrc-0.24.1/etc/rc.conf 2017-08-22 23:48:32.903169635 -0500
+@@ -48,7 +48,7 @@
+ # /var/log/rc.log
+ # NOTE: Linux systems require the devfs service to be started before
+ # logging can take place and as such cannot log the sysinit runlevel.
+-#rc_logger="NO"
++rc_logger="YES"
+
+ # Through rc_log_path you can specify a custom log file.
+ # The default value is: /var/log/rc.log
+@@ -89,7 +89,7 @@
+ # There variables are shared between many init scripts
+
+ # Set unicode to YES to turn on unicode support for keyboards and screens.
+-#unicode="NO"
++unicode="YES"
+
+ # This is how long fuser should wait for a remote server to respond. The
+ # default is 60 seconds, but it can be adjusted here.
diff --git a/system/openrc/openrc.logrotate b/system/openrc/openrc.logrotate
new file mode 100644
index 000000000..5e5e64b9b
--- /dev/null
+++ b/system/openrc/openrc.logrotate
@@ -0,0 +1,4 @@
+/var/log/rc.log {
+ missingok
+ notifempty
+}
diff --git a/system/openrc/openrc.post-install b/system/openrc/openrc.post-install
new file mode 100644
index 000000000..1057eed41
--- /dev/null
+++ b/system/openrc/openrc.post-install
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+rc_update() {
+ local svc="$1"
+ local level="$2"
+ mkdir -p /etc/runlevels/$level
+ ln -sf /etc/init.d/$svc /etc/runlevels/$level
+}
+
+if [ ! -d etc/rcS.d ] && [ ! -d etc/rcL.d ]; then
+ exit 0
+fi
+
+for i in etc/rc[SL].d/*; do
+ [ -L "$i" ] || continue
+ oldsvc=${i##*/S[0-9][0-9]}
+ # some services are renamed
+ case "$oldsvc" in
+ modutils) svc=modules;;
+ procps) svc=sysctl;;
+ bootmisc.sh) svc=bootmisc;;
+ keymap) svc=keymaps;;
+ rc.local) svc=local;;
+ *) svc=$oldsvc;;
+ esac
+
+ # add the service to correct "runlevel"
+ case "$svc" in
+ hwclock|modules|sysctl|hostname|keymaps|syslog|bootmisc)
+ rc_update $svc boot;;
+ *) rc_update $svc default;;
+ esac
+
+ rm $i
+done
+
diff --git a/system/openrc/openrc.post-upgrade b/system/openrc/openrc.post-upgrade
new file mode 100644
index 000000000..8884202be
--- /dev/null
+++ b/system/openrc/openrc.post-upgrade
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# in 0.8.0-r1 the state dir moved from /libexec/rc/init.d to /lib/rc/init.d
+# and with 0.10 it moved to /run/openrc
+
+mkdir -p /run/openrc
+for dir in /libexec /lib; do
+ [ -d $dir/rc/init.d ] || continue
+
+ for i in $dir/rc/init.d/* ; do
+ [ -e "$i" ] || continue
+ if [ -e /run/openrc/${i##*/} ]; then
+ rm -r $i
+ else
+ mv $i /run/openrc/
+ fi
+ done
+
+ rmdir $dir/rc/init.d $dir/rc /libexec 2>/dev/null
+done
+
+# create rc.local compat
+if [ -f /etc/rc.local ]; then
+ cat >/etc/local.d/rc.local-compat.start<<__EOF__
+#!/bin/sh
+
+# this is only here for compatibility reasons
+if [ -f /etc/rc.local ]; then
+ . /etc/rc.local
+fi
+__EOF__
+ chmod +x /etc/local.d/rc.local-compat.start
+fi
+
+exit 0
diff --git a/system/openrc/sysfsconf.initd b/system/openrc/sysfsconf.initd
new file mode 100644
index 000000000..433e51d63
--- /dev/null
+++ b/system/openrc/sysfsconf.initd
@@ -0,0 +1,66 @@
+#!/sbin/openrc-run
+
+description="Set sysfs variables from /etc/sysfs.conf and /etc/sysfs.d/*.conf"
+conffile=/etc/sysfs.conf
+confdir=/etc/sysfs.d
+
+depend() {
+ need sysfs
+}
+
+setval() {
+ local value="$1" attrib="$2"
+ # Some fields need a terminating newline, others
+ # need the terminating newline to be absent :-(
+ echo -n "$value" > "$attrib" 2>/dev/null \
+ || echo "$value" > "$attrib"
+}
+
+load_conffile() {
+ local file="$1"
+ while read line; do
+ local line=${line%%#*}
+ local cmd= attrib= value=
+ set -- $line
+ if [ $# -eq 0 ]; then
+ continue
+ fi
+ case "$1$3" in
+ mode=) cmd=chmod
+ attrib="$2"
+ value="$4"
+ ;;
+ owner=) cmd=chown
+ attrib="$2"
+ value="$4"
+ ;;
+ *) if [ "$2" = "=" ]; then
+ cmd=setval
+ attrib="$1"
+ value="$3"
+ fi
+ ;;
+ esac
+ if ! [ -e "/sys/$attrib" ]; then
+ eerror "$attrib: unknown attribute"
+ continue
+ fi
+ if [ -z "$attrib" ] || [ -z "$value" ]; then
+ eerror "syntax error in $file: '$line'"
+ continue
+ fi
+ $cmd "$value" "/sys/$attrib"
+ done < "$file"
+}
+
+start() {
+ [ -r "$conffile" -o -d "$confdir" ] || return 0
+ ebegin "Setting sysfs variables"
+ for file in $confdir/*.conf $conffile; do
+ [ -r "$file" ] || continue
+ load_conffile "$file" || return 1
+ done
+ eend 0
+
+}
+
diff --git a/system/openssh/APKBUILD b/system/openssh/APKBUILD
new file mode 100644
index 000000000..90a628d27
--- /dev/null
+++ b/system/openssh/APKBUILD
@@ -0,0 +1,181 @@
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=openssh
+pkgver=7.5_p1
+_myver=${pkgver%_*}${pkgver#*_}
+pkgrel=5
+pkgdesc="Port of OpenBSD's free SSH release"
+url="http://www.openssh.org/portable.html"
+arch="all"
+license="as-is"
+options="suid !check"
+depends="openssh-client openssh-sftp-server openssh-server"
+makedepends_build="linux-pam-dev"
+makedepends_host="openssl-dev zlib-dev linux-headers linux-pam-dev"
+makedepends="$makedepends_build $makedepends_host"
+subpackages="$pkgname-doc
+ $pkgname-keygen
+ $pkgname-client
+ $pkgname-keysign
+ $pkgname-sftp-server:sftp
+ $pkgname-server-common:server_common:noarch
+ $pkgname-server
+ "
+
+source="http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$pkgname-$_myver.tar.gz
+ openssh7.4-peaktput.patch
+ openssh7.4-dynwindows.patch
+ fix-utmp.patch
+ bsd-compatible-realpath.patch
+ sshd.initd
+ sshd.confd
+ sftp-interactive.patch
+ openssh-7.5p1-sandbox.patch
+ "
+# secfixes:
+# 7.4_p1:
+# - CVE-2016-10009
+# - CVE-2016-10010
+# - CVE-2016-10011
+# - CVE-2016-10012
+
+# HPN patches are from: http://hpnssh.sourceforge.net/
+
+builddir="$srcdir"/$pkgname-$_myver
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ for _flavour in $_pkgsupport; do
+ cp -R "$srcdir"/$pkgname-$_myver "$srcdir"/$pkgname-${_myver}-$_flavour
+ done
+}
+
+build() {
+ cd "$builddir"
+ export LD="$CC"
+ ./configure --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc/ssh \
+ --libexecdir=/usr/lib/ssh \
+ --mandir=/usr/share/man \
+ --with-pid-dir=/run \
+ --with-mantype=man \
+ --with-ldflags="${LDFLAGS}" \
+ --disable-lastlog \
+ --disable-strip \
+ --disable-wtmp \
+ --with-privsep-path=/var/empty \
+ --with-xauth=/usr/bin/xauth \
+ --with-privsep-user=sshd \
+ --with-md5-passwords \
+ --with-ssl-engine \
+ --with-pam
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ mkdir -p "$pkgdir"/var/empty
+ install -D -m755 "$srcdir"/sshd.initd \
+ "$pkgdir"/etc/init.d/sshd
+ install -D -m644 "$srcdir"/sshd.confd \
+ "$pkgdir"/etc/conf.d/sshd
+ install -Dm644 "$builddir"/contrib/ssh-copy-id.1 \
+ "$pkgdir"/usr/share/man/man1/ssh-copy-id.1
+}
+
+keygen() {
+ pkgdesc="ssh helper program for generating keys"
+ depends=
+ install -d "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/ssh-keygen \
+ "$subpkgdir"/usr/bin/
+}
+
+client() {
+ pkgdesc="OpenBSD's SSH client"
+ depends="openssh-keygen"
+ install -d "$subpkgdir"/usr/bin \
+ "$subpkgdir"/usr/lib/ssh \
+ "$subpkgdir"/etc/ssh \
+ "$subpkgdir"/var/empty
+
+ mv "$pkgdir"/usr/bin/* \
+ "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/etc/ssh/ssh_config \
+ "$pkgdir"/etc/ssh/moduli \
+ "$subpkgdir"/etc/ssh/
+ install -Dm755 "$builddir"/contrib/findssl.sh \
+ "$subpkgdir"/usr/bin/findssl.sh
+ install -Dm755 "$builddir"/contrib/ssh-copy-id \
+ "$subpkgdir"/usr/bin/ssh-copy-id
+ install -Dm755 "$builddir"/ssh-pkcs11-helper \
+ "$subpkgdir"/usr/bin/ssh-pkcs11-helper
+}
+
+keysign() {
+ pkgdesc="ssh helper program for host-based authentication"
+ depends="openssh-client"
+ install -d "$subpkgdir"/usr/lib/ssh
+ mv "$pkgdir"/usr/lib/ssh/ssh-keysign \
+ "$subpkgdir"/usr/lib/ssh/
+}
+
+sftp() {
+ pkgdesc="ssh sftp server module"
+ depends=""
+ install -d "$subpkgdir"/usr/lib/ssh
+ mv "$pkgdir"/usr/lib/ssh/sftp-server \
+ "$subpkgdir"/usr/lib/ssh/
+}
+
+server_common() {
+ pkgdesc="OpenSSH server configuration files"
+ depends=""
+ for i in etc/ssh/sshd_config \
+ etc/init.d/sshd \
+ etc/conf.d/sshd; do
+
+ install -d "$subpkgdir"/${i%/*}
+ mv "$pkgdir"/$i \
+ "$subpkgdir"/${i%/*}/
+
+ done
+}
+
+server() {
+ pkgdesc="OpenSSH server"
+ depends="openssh-keygen openssh-server-common"
+ cd "$builddir"
+ install -d "$subpkgdir"/usr/sbin
+ mv "$pkgdir"/usr/sbin/sshd "$subpkgdir"/usr/sbin/
+}
+
+_server() {
+ cd "$builddir"
+ install -d "$subpkgdir"/usr/sbin
+ mv "$1"/sshd "$subpkgdir"/usr/sbin/
+}
+
+_pkg_flavour() {
+ pkgdesc="OpenSSH server with $_flavour support"
+ depends="openssh-keygen openssh-server-common"
+ for _flavour in $_pkgsupport; do
+ cd "${builddir}"-$_flavour
+ _server "${builddir}"-$_flavour
+ done
+}
+
+sha512sums="58c542e8a110fb4316a68db94abb663fa1c810becd0638d45281df8aeca62c1f705090437a80e788e6c29121769b72a505feced537d3118c933fde01b5285c81 openssh-7.5p1.tar.gz
+398096a89aa104abeff31aa043ac406a6348e0fdd4d313b7888ee0b931d38fd71fc21bceee46145e88f03bc27e00890e068442faee2d33f86cfbc04d58ffa4b6 openssh7.4-peaktput.patch
+b9d736eae9b43de91fa3eb277ba8abc6290a8436b0fb00ae3b0f1b2eabba9983e4d2a1e3c68f5514247d0a3f120037f0795fd88fbf302aabd2d1b54a325a04ee openssh7.4-dynwindows.patch
+f35fffcd26635249ce5d820e7b3e406e586f2d2d7f6a045f221e2f9fb53aebc1ab1dd1e603b3389462296ed77921a1d08456e7aaa3825cbed08f405b381a58e1 fix-utmp.patch
+f2b8daa537ea3f32754a4485492cc6eb3f40133ed46c0a5a29a89e4bcf8583d82d891d94bf2e5eb1c916fa68ec094abf4e6cd641e9737a6c05053808012b3a73 bsd-compatible-realpath.patch
+394a420a36880bb0dd37dfd8727cea91fd9de6534050169e21212a46513ef3aaafe2752c338699b3d4ccd14871b26cf01a152df8060cd37f86ce0665fd53c63f sshd.initd
+ce0abddbd2004891f88efd8522c4b37a4989290269fab339c0fa9aacc051f7fd3b20813e192e92e0e64315750041cb74012d4321260f4865ff69d7a935b259d4 sshd.confd
+c1d09c65dbc347f0904edc30f91aa9a24b0baee50309536182455b544f1e3f85a8cecfa959e32be8b101d8282ef06dde3febbbc3f315489339dcf04155c859a9 sftp-interactive.patch
+15c5478bcae56c019a2fbd82ec04808537fd4ba1f1ba4a0a88c0343c16c698c45dbfac59eebc3fcfd3c15b302ebec43e60ffa02442a6c77673b14818ad3f7b60 openssh-7.5p1-sandbox.patch"
diff --git a/system/openssh/bsd-compatible-realpath.patch b/system/openssh/bsd-compatible-realpath.patch
new file mode 100644
index 000000000..1cdb4f7c5
--- /dev/null
+++ b/system/openssh/bsd-compatible-realpath.patch
@@ -0,0 +1,62 @@
+fix issues with fortify-headers and the way openssh handles the needed
+BSD compatible realpath(3).
+
+unconditionally use the provided realpath() as otherwise cross-builds
+would try to use musl realpath() which is posix compliant and not
+working to openssh expectations.
+
+diff -ru openssh-7.2p2.orig/openbsd-compat/openbsd-compat.h openssh-7.2p2/openbsd-compat/openbsd-compat.h
+--- openssh-7.2p2.orig/openbsd-compat/openbsd-compat.h 2016-03-09 20:04:48.000000000 +0200
++++ openssh-7.2p2/openbsd-compat/openbsd-compat.h 2016-07-18 13:33:16.260357745 +0300
+@@ -68,17 +68,7 @@
+ void *reallocarray(void *, size_t, size_t);
+ #endif
+
+-#if !defined(HAVE_REALPATH) || defined(BROKEN_REALPATH)
+-/*
+- * glibc's FORTIFY_SOURCE can redefine this and prevent us picking up the
+- * compat version.
+- */
+-# ifdef BROKEN_REALPATH
+-# define realpath(x, y) _ssh_compat_realpath(x, y)
+-# endif
+-
+-char *realpath(const char *path, char *resolved);
+-#endif
++char *ssh_realpath(const char *path, char *resolved);
+
+ #ifndef HAVE_RRESVPORT_AF
+ int rresvport_af(int *alport, sa_family_t af);
+diff -ru openssh-7.2p2.orig/openbsd-compat/realpath.c openssh-7.2p2/openbsd-compat/realpath.c
+--- openssh-7.2p2.orig/openbsd-compat/realpath.c 2016-03-09 20:04:48.000000000 +0200
++++ openssh-7.2p2/openbsd-compat/realpath.c 2016-07-18 13:33:45.420721690 +0300
+@@ -31,7 +31,7 @@
+
+ #include "includes.h"
+
+-#if !defined(HAVE_REALPATH) || defined(BROKEN_REALPATH)
++#if 1
+
+ #include <sys/types.h>
+ #include <sys/param.h>
+@@ -58,7 +58,7 @@
+ * in which case the path which caused trouble is left in (resolved).
+ */
+ char *
+-realpath(const char *path, char *resolved)
++ssh_realpath(const char *path, char *resolved)
+ {
+ struct stat sb;
+ char *p, *q, *s;
+diff -ru openssh-7.2p2.orig/sftp-server.c openssh-7.2p2/sftp-server.c
+--- openssh-7.2p2.orig/sftp-server.c 2016-03-09 20:04:48.000000000 +0200
++++ openssh-7.2p2/sftp-server.c 2016-07-18 13:34:29.131267241 +0300
+@@ -1162,7 +1162,7 @@
+ }
+ debug3("request %u: realpath", id);
+ verbose("realpath \"%s\"", path);
+- if (realpath(path, resolvedname) == NULL) {
++ if (ssh_realpath(path, resolvedname) == NULL) {
+ send_status(id, errno_to_portable(errno));
+ } else {
+ Stat s;
diff --git a/system/openssh/fix-utmp.patch b/system/openssh/fix-utmp.patch
new file mode 100644
index 000000000..275e80590
--- /dev/null
+++ b/system/openssh/fix-utmp.patch
@@ -0,0 +1,11 @@
+--- openssh-6.8p1.orig/loginrec.c 2015-03-17 07:49:20.000000000 -0200
++++ openssh-6.8p1/loginrec.c 2015-03-19 10:45:45.780276841 -0200
+@@ -783,7 +783,7 @@
+ if (li->hostaddr.sa.sa_family == AF_INET)
+ utx->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr;
+ # endif
+-# ifdef HAVE_ADDR_V6_IN_UTMP
++# ifdef HAVE_ADDR_V6_IN_UTMPX
+ /* this is just a 128-bit IPv6 address */
+ if (li->hostaddr.sa.sa_family == AF_INET6) {
+ sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa);
diff --git a/system/openssh/openssh-7.5p1-sandbox.patch b/system/openssh/openssh-7.5p1-sandbox.patch
new file mode 100644
index 000000000..7d09632c8
--- /dev/null
+++ b/system/openssh/openssh-7.5p1-sandbox.patch
@@ -0,0 +1,23 @@
+diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
+index 3a1aedce72c2..a8d472a63ccb 100644
+--- a/sandbox-seccomp-filter.c
++++ b/sandbox-seccomp-filter.c
+@@ -50,6 +50,9 @@
+ #include <elf.h>
+
+ #include <asm/unistd.h>
++#ifdef __s390__
++#include <asm/zcrypt.h>
++#endif
+
+ #include <errno.h>
+ #include <signal.h>
+@@ -235,7 +235,7 @@ static const struct sock_filter preauth_insns[] = {
+ * x86-64 syscall under some circumstances, e.g.
+ * https://bugs.debian.org/849923
+ */
+- SC_ALLOW(__NR_clock_gettime & ~__X32_SYSCALL_BIT);
++ SC_ALLOW(__NR_clock_gettime & ~__X32_SYSCALL_BIT),
+ #endif
+
+ /* Default deny */
diff --git a/system/openssh/openssh7.4-dynwindows.patch b/system/openssh/openssh7.4-dynwindows.patch
new file mode 100644
index 000000000..45c42159e
--- /dev/null
+++ b/system/openssh/openssh7.4-dynwindows.patch
@@ -0,0 +1,835 @@
+--- a/buffer.h
++++ b/buffer.h
+@@ -16,6 +16,9 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++/* move the following to a more appropriate place and name */
++#define BUFFER_MAX_LEN_HPN 0x4000000 /* 64MB */
++
+ /* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
+
+ #ifndef BUFFER_H
+--- a/channels.c
++++ b/channels.c
+@@ -191,8 +191,14 @@
+ static int connect_next(struct channel_connect *);
+ static void channel_connect_ctx_free(struct channel_connect *);
+
++
++static int hpn_disabled = 0;
++static int hpn_buffer_size = 2 * 1024 * 1024;
++
+ /* -- channel core */
+
++
++
+ Channel *
+ channel_by_id(int id)
+ {
+@@ -356,6 +362,7 @@
+ c->local_window_max = window;
+ c->local_consumed = 0;
+ c->local_maxpacket = maxpack;
++ c->dynamic_window = 0;
+ c->remote_id = -1;
+ c->remote_name = xstrdup(remote_name);
+ c->remote_window = 0;
+@@ -904,11 +911,35 @@
+ FD_SET(c->sock, writeset);
+ }
+
++int channel_tcpwinsz () {
++ u_int32_t tcpwinsz = 0;
++ socklen_t optsz = sizeof(tcpwinsz);
++ int ret = -1;
++
++ /* if we aren't on a socket return 128KB*/
++ if(!packet_connection_is_on_socket())
++ return(128*1024);
++ ret = getsockopt(packet_get_connection_in(),
++ SOL_SOCKET, SO_RCVBUF, &tcpwinsz, &optsz);
++ /* return no more than 64MB */
++ if ((ret == 0) && tcpwinsz > BUFFER_MAX_LEN_HPN)
++ tcpwinsz = BUFFER_MAX_LEN_HPN;
++ debug2("tcpwinsz: %d for connection: %d", tcpwinsz,
++ packet_get_connection_in());
++ return(tcpwinsz);
++}
++
+ static void
+ channel_pre_open(Channel *c, fd_set *readset, fd_set *writeset)
+ {
+ u_int limit = compat20 ? c->remote_window : packet_get_maxsize();
+
++ /* check buffer limits */
++ if ((!c->tcpwinsz) || (c->dynamic_window > 0))
++ c->tcpwinsz = channel_tcpwinsz();
++
++ limit = MIN(limit, 2 * c->tcpwinsz);
++
+ if (c->istate == CHAN_INPUT_OPEN &&
+ limit > 0 &&
+ buffer_len(&c->input) < limit &&
+@@ -1926,14 +1957,21 @@
+ c->local_maxpacket*3) ||
+ c->local_window < c->local_window_max/2) &&
+ c->local_consumed > 0) {
++ u_int addition = 0;
++ /* adjust max window size if we are in a dynamic environment */
++ if (c->dynamic_window && (c->tcpwinsz > c->local_window_max)) {
++ /* grow the window somewhat aggressively to maintain pressure */
++ addition = 1.5*(c->tcpwinsz - c->local_window_max);
++ c->local_window_max += addition;
++ }
+ packet_start(SSH2_MSG_CHANNEL_WINDOW_ADJUST);
+ packet_put_int(c->remote_id);
+- packet_put_int(c->local_consumed);
++ packet_put_int(c->local_consumed + addition);
+ packet_send();
+ debug2("channel %d: window %d sent adjust %d",
+ c->self, c->local_window,
+ c->local_consumed);
+- c->local_window += c->local_consumed;
++ c->local_window += c->local_consumed + addition;
+ c->local_consumed = 0;
+ }
+ return 1;
+@@ -3179,6 +3217,15 @@
+ return addr;
+ }
+
++
++void
++channel_set_hpn(int external_hpn_disabled, int external_hpn_buffer_size)
++{
++ hpn_disabled = external_hpn_disabled;
++ hpn_buffer_size = external_hpn_buffer_size;
++ debug("HPN Disabled: %d, HPN Buffer Size: %d", hpn_disabled, hpn_buffer_size);
++}
++
+ static int
+ channel_setup_fwd_listener_tcpip(int type, struct Forward *fwd,
+ int *allocated_listen_port, struct ForwardOptions *fwd_opts)
+@@ -3307,9 +3354,15 @@
+ }
+
+ /* Allocate a channel number for the socket. */
++ /* explicitly test for hpn disabled option. if true use smaller window size */
++ if (hpn_disabled)
+ c = channel_new("port listener", type, sock, sock, -1,
+ CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT,
+ 0, "port listener", 1);
++ else
++ c = channel_new("port listener", type, sock, sock, -1,
++ hpn_buffer_size, CHAN_TCP_PACKET_DEFAULT,
++ 0, "port listener", 1);
+ c->path = xstrdup(host);
+ c->host_port = fwd->connect_port;
+ c->listening_addr = addr == NULL ? NULL : xstrdup(addr);
+@@ -4313,10 +4366,17 @@
+ *chanids = xcalloc(num_socks + 1, sizeof(**chanids));
+ for (n = 0; n < num_socks; n++) {
+ sock = socks[n];
++ /* Is this really necassary? */
++ if (hpn_disabled)
+ nc = channel_new("x11 listener",
+ SSH_CHANNEL_X11_LISTENER, sock, sock, -1,
+ CHAN_X11_WINDOW_DEFAULT, CHAN_X11_PACKET_DEFAULT,
+ 0, "X11 inet listener", 1);
++ else
++ nc = channel_new("x11 listener",
++ SSH_CHANNEL_X11_LISTENER, sock, sock, -1,
++ hpn_buffer_size, CHAN_X11_PACKET_DEFAULT,
++ 0, "X11 inet listener", 1);
+ nc->single_connection = single_connection;
+ (*chanids)[n] = nc->self;
+ }
+--- a/channels.h
++++ b/channels.h
+@@ -135,8 +135,10 @@
+ u_int local_window_max;
+ u_int local_consumed;
+ u_int local_maxpacket;
++ int dynamic_window;
+ int extended_usage;
+ int single_connection;
++ u_int tcpwinsz;
+
+ char *ctype; /* type */
+
+@@ -173,8 +175,10 @@
+ /* default window/packet sizes for tcp/x11-fwd-channel */
+ #define CHAN_SES_PACKET_DEFAULT (32*1024)
+ #define CHAN_SES_WINDOW_DEFAULT (64*CHAN_SES_PACKET_DEFAULT)
++
+ #define CHAN_TCP_PACKET_DEFAULT (32*1024)
+ #define CHAN_TCP_WINDOW_DEFAULT (64*CHAN_TCP_PACKET_DEFAULT)
++
+ #define CHAN_X11_PACKET_DEFAULT (16*1024)
+ #define CHAN_X11_WINDOW_DEFAULT (4*CHAN_X11_PACKET_DEFAULT)
+
+@@ -318,5 +322,8 @@
+ void chan_rcvd_ieof(Channel *);
+ void chan_write_failed(Channel *);
+ void chan_obuf_empty(Channel *);
++
++/* hpn handler */
++void channel_set_hpn(int, int);
+
+ #endif
+--- a/clientloop.c
++++ b/clientloop.c
+@@ -1990,9 +1990,15 @@
+ sock = x11_connect_display();
+ if (sock < 0)
+ return NULL;
++ /* again is this really necessary for X11? */
++ if (options.hpn_disabled)
+ c = channel_new("x11",
+ SSH_CHANNEL_X11_OPEN, sock, sock, -1,
+ CHAN_TCP_WINDOW_DEFAULT, CHAN_X11_PACKET_DEFAULT, 0, "x11", 1);
++ else
++ c = channel_new("x11",
++ SSH_CHANNEL_X11_OPEN, sock, sock, -1,
++ options.hpn_buffer_size, CHAN_X11_PACKET_DEFAULT, 0, "x11", 1);
+ c->force_drain = 1;
+ return c;
+ }
+@@ -2015,10 +2021,16 @@
+ __func__, ssh_err(r));
+ return NULL;
+ }
++ if (options.hpn_disabled)
+ c = channel_new("authentication agent connection",
+ SSH_CHANNEL_OPEN, sock, sock, -1,
+- CHAN_X11_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0,
++ CHAN_X11_WINDOW_DEFAULT, CHAN_TCP_WINDOW_DEFAULT, 0,
+ "authentication agent connection", 1);
++ else
++ c = channel_new("authentication agent connection",
++ SSH_CHANNEL_OPEN, sock, sock, -1,
++ options.hpn_buffer_size, options.hpn_buffer_size, 0,
++ "authentication agent connection", 1);
+ c->force_drain = 1;
+ return c;
+ }
+@@ -2045,9 +2057,17 @@
+ return -1;
+ }
+
++ if(options.hpn_disabled)
+ c = channel_new("tun", SSH_CHANNEL_OPENING, fd, fd, -1,
+- CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0, "tun", 1);
++ CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT,
++ 0, "tun", 1);
++ else
++ c = channel_new("tun", SSH_CHANNEL_OPENING, fd, fd, -1,
++ options.hpn_buffer_size, CHAN_TCP_PACKET_DEFAULT,
++ 0, "tun", 1);
+ c->datagram = 1;
++
++
+
+ #if defined(SSH_TUN_FILTER)
+ if (options.tun_open == SSH_TUNMODE_POINTOPOINT)
+--- a/compat.c
++++ b/compat.c
+@@ -40,7 +40,7 @@
+
+ int compat13 = 0;
+ int compat20 = 0;
+-int datafellows = 0;
++unsigned int datafellows = 0;
+
+ void
+ enable_compat20(void)
+@@ -63,7 +63,7 @@ compat_datafellows(const char *version)
+ int i;
+ static struct {
+ char *pat;
+- int bugs;
++ unsigned int bugs;
+ } check[] = {
+ { "OpenSSH-2.0*,"
+ "OpenSSH-2.1*,"
+@@ -210,6 +210,12 @@ compat_datafellows(const char *version)
+ debug("match: %s pat %s compat 0x%08x",
+ version, check[i].pat, check[i].bugs);
+ datafellows = check[i].bugs; /* XXX for now */
++ /* Check to see if the remote side is OpenSSH and not HPN */
++ if (strstr(version,"OpenSSH") != NULL &&
++ strstr(version,"hpn") == NULL) {
++ datafellows |= SSH_BUG_LARGEWINDOW;
++ debug("Remote is NON-HPN aware");
++ }
+ return check[i].bugs;
+ }
+ }
+diff --git a/compat.h b/compat.h
+index 2be290a..453c85e 100644
+--- a/compat.h
++++ b/compat.h
+@@ -62,6 +62,7 @@
+ #define SSH_BUG_CURVE25519PAD 0x10000000
+ #define SSH_BUG_HOSTKEYS 0x20000000
+ #define SSH_BUG_DHGEX_LARGE 0x40000000
++#define SSH_BUG_LARGEWINDOW 0x80000000
+
+ void enable_compat13(void);
+ void enable_compat20(void);
+@@ -73,5 +74,5 @@ char *compat_kex_proposal(char *);
+
+ extern int compat13;
+ extern int compat20;
+-extern int datafellows;
++extern unsigned int datafellows;
+ #endif
+--- a/readconf.c
++++ b/readconf.c
+@@ -154,6 +154,7 @@
+ oCompressionLevel, oTCPKeepAlive, oNumberOfPasswordPrompts,
+ oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oMacs,
+ oPubkeyAuthentication,
++ oTcpRcvBufPoll, oTcpRcvBuf, oHPNDisabled, oHPNBufferSize,
+ oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias,
+ oDynamicForward, oPreferredAuthentications, oHostbasedAuthentication,
+ oHostKeyAlgorithms, oBindAddress, oPKCS11Provider,
+@@ -297,6 +298,11 @@
+ { "ignoreunknown", oIgnoreUnknown },
+ { "proxyjump", oProxyJump },
+
++ { "tcprcvbufpoll", oTcpRcvBufPoll },
++ { "tcprcvbuf", oTcpRcvBuf },
++ { "hpndisabled", oHPNDisabled },
++ { "hpnbuffersize", oHPNBufferSize },
++
+ { NULL, oBadOption }
+ };
+
+@@ -973,6 +979,18 @@
+ intptr = &options->check_host_ip;
+ goto parse_flag;
+
++ case oHPNDisabled:
++ intptr = &options->hpn_disabled;
++ goto parse_flag;
++
++ case oHPNBufferSize:
++ intptr = &options->hpn_buffer_size;
++ goto parse_int;
++
++ case oTcpRcvBufPoll:
++ intptr = &options->tcp_rcv_buf_poll;
++ goto parse_flag;
++
+ case oVerifyHostKeyDNS:
+ intptr = &options->verify_host_key_dns;
+ multistate_ptr = multistate_yesnoask;
+@@ -1165,6 +1183,10 @@
+ intptr = &options->connection_attempts;
+ goto parse_int;
+
++ case oTcpRcvBuf:
++ intptr = &options->tcp_rcv_buf;
++ goto parse_int;
++
+ case oCipher:
+ intptr = &options->cipher;
+ arg = strdelim(&s);
+@@ -1845,6 +1867,10 @@
+ options->ip_qos_interactive = -1;
+ options->ip_qos_bulk = -1;
+ options->request_tty = -1;
++ options->hpn_disabled = -1;
++ options->hpn_buffer_size = -1;
++ options->tcp_rcv_buf_poll = -1;
++ options->tcp_rcv_buf = -1;
+ options->proxy_use_fdpass = -1;
+ options->ignored_unknown = NULL;
+ options->num_canonical_domains = 0;
+@@ -2008,6 +2034,28 @@
+ options->server_alive_interval = 0;
+ if (options->server_alive_count_max == -1)
+ options->server_alive_count_max = 3;
++ if (options->hpn_disabled == -1)
++ options->hpn_disabled = 0;
++ if (options->hpn_buffer_size > -1)
++ {
++ /* if a user tries to set the size to 0 set it to 1KB */
++ if (options->hpn_buffer_size == 0)
++ options->hpn_buffer_size = 1;
++ /*limit the buffer to 64MB*/
++ if (options->hpn_buffer_size > 64*1024)
++ {
++ options->hpn_buffer_size = 64*1024*1024;
++ debug("User requested buffer larger than 64MB. Request reverted to 64MB");
++ }
++ else options->hpn_buffer_size *= 1024;
++ debug("hpn_buffer_size set to %d", options->hpn_buffer_size);
++ }
++ if (options->tcp_rcv_buf == 0)
++ options->tcp_rcv_buf = 1;
++ if (options->tcp_rcv_buf > -1)
++ options->tcp_rcv_buf *=1024;
++ if (options->tcp_rcv_buf_poll == -1)
++ options->tcp_rcv_buf_poll = 1;
+ if (options->control_master == -1)
+ options->control_master = 0;
+ if (options->control_persist == -1) {
+--- a/readconf.h
++++ b/readconf.h
+@@ -57,6 +57,10 @@ typedef struct {
+ int compression_level; /* Compression level 1 (fast) to 9
+ * (best). */
+ int tcp_keep_alive; /* Set SO_KEEPALIVE. */
++ int tcp_rcv_buf; /* user switch to set tcp recv buffer */
++ int tcp_rcv_buf_poll; /* Option to poll recv buf every window transfer */
++ int hpn_disabled; /* Switch to disable HPN buffer management */
++ int hpn_buffer_size; /* User definable size for HPN buffer window */
+ int ip_qos_interactive; /* IP ToS/DSCP/class for interactive */
+ int ip_qos_bulk; /* IP ToS/DSCP/class for bulk traffic */
+ LogLevel log_level; /* Level for logging. */
+--- a/scp.c
++++ b/scp.c
+@@ -763,7 +763,7 @@
+ off_t i, statbytes;
+ size_t amt, nr;
+ int fd = -1, haderr, indx;
+- char *last, *name, buf[2048], encname[PATH_MAX];
++ char *last, *name, buf[16384], encname[PATH_MAX];
+ int len;
+
+ for (indx = 0; indx < argc; ++indx) {
+@@ -931,7 +931,7 @@
+ off_t size, statbytes;
+ unsigned long long ull;
+ int setimes, targisdir, wrerrno = 0;
+- char ch, *cp, *np, *targ, *why, *vect[1], buf[2048], visbuf[2048];
++ char ch, *cp, *np, *targ, *why, *vect[1], buf[16384], visbuf[16384];
+ struct timeval tv[2];
+
+ #define atime tv[0]
+--- a/servconf.c
++++ b/servconf.c
+@@ -159,6 +159,9 @@
+ options->authorized_principals_file = NULL;
+ options->authorized_principals_command = NULL;
+ options->authorized_principals_command_user = NULL;
++ options->tcp_rcv_buf_poll = -1;
++ options->hpn_disabled = -1;
++ options->hpn_buffer_size = -1;
+ options->ip_qos_interactive = -1;
+ options->ip_qos_bulk = -1;
+ options->version_addendum = NULL;
+@@ -190,6 +193,7 @@
+ void
+ fill_default_server_options(ServerOptions *options)
+ {
++ int sock, socksize, socksizelen = sizeof(int);
+ int i;
+
+ /* Portable-specific options */
+@@ -319,6 +323,41 @@
+ }
+ if (options->permit_tun == -1)
+ options->permit_tun = SSH_TUNMODE_NO;
++ if (options->hpn_disabled == -1)
++ options->hpn_disabled = 0;
++
++ if (options->hpn_buffer_size == -1) {
++ /* option not explicitly set. Now we have to figure out */
++ /* what value to use */
++ if (options->hpn_disabled == 1) {
++ options->hpn_buffer_size = CHAN_SES_WINDOW_DEFAULT;
++ } else {
++ /* get the current RCV size and set it to that */
++ /*create a socket but don't connect it */
++ /* we use that the get the rcv socket size */
++ sock = socket(AF_INET, SOCK_STREAM, 0);
++ getsockopt(sock, SOL_SOCKET, SO_RCVBUF,
++ &socksize, &socksizelen);
++ close(sock);
++ options->hpn_buffer_size = socksize;
++ debug ("HPN Buffer Size: %d", options->hpn_buffer_size);
++ }
++ } else {
++ /* we have to do this incase the user sets both values in a contradictory */
++ /* manner. hpn_disabled overrrides hpn_buffer_size*/
++ if (options->hpn_disabled <= 0) {
++ if (options->hpn_buffer_size == 0)
++ options->hpn_buffer_size = 1;
++ /* limit the maximum buffer to 64MB */
++ if (options->hpn_buffer_size > 64*1024) {
++ options->hpn_buffer_size = 64*1024*1024;
++ } else {
++ options->hpn_buffer_size *= 1024;
++ }
++ } else
++ options->hpn_buffer_size = CHAN_TCP_WINDOW_DEFAULT;
++ }
++
+ if (options->ip_qos_interactive == -1)
+ options->ip_qos_interactive = IPTOS_LOWDELAY;
+ if (options->ip_qos_bulk == -1)
+@@ -413,6 +452,7 @@
+ sHostCertificate,
+ sRevokedKeys, sTrustedUserCAKeys, sAuthorizedPrincipalsFile,
+ sAuthorizedPrincipalsCommand, sAuthorizedPrincipalsCommandUser,
++ sTcpRcvBufPoll, sHPNDisabled, sHPNBufferSize,
+ sKexAlgorithms, sIPQoS, sVersionAddendum,
+ sAuthorizedKeysCommand, sAuthorizedKeysCommandUser,
+ sAuthenticationMethods, sHostKeyAgent, sPermitUserRC,
+@@ -548,6 +588,9 @@
+ { "revokedkeys", sRevokedKeys, SSHCFG_ALL },
+ { "trustedusercakeys", sTrustedUserCAKeys, SSHCFG_ALL },
+ { "authorizedprincipalsfile", sAuthorizedPrincipalsFile, SSHCFG_ALL },
++ { "hpndisabled", sHPNDisabled, SSHCFG_ALL },
++ { "hpnbuffersize", sHPNBufferSize, SSHCFG_ALL },
++ { "tcprcvbufpoll", sTcpRcvBufPoll, SSHCFG_ALL },
+ { "kexalgorithms", sKexAlgorithms, SSHCFG_GLOBAL },
+ { "ipqos", sIPQoS, SSHCFG_ALL },
+ { "authorizedkeyscommand", sAuthorizedKeysCommand, SSHCFG_ALL },
+@@ -587,6 +630,7 @@
+
+ for (i = 0; keywords[i].name; i++)
+ if (strcasecmp(cp, keywords[i].name) == 0) {
++ debug ("Config token is %s", keywords[i].name);
+ *flags = keywords[i].flags;
+ return keywords[i].opcode;
+ }
+@@ -1148,6 +1192,19 @@
+ if (*activep && *intptr == -1)
+ *intptr = value;
+ break;
++
++
++ case sTcpRcvBufPoll:
++ intptr = &options->tcp_rcv_buf_poll;
++ goto parse_flag;
++
++ case sHPNDisabled:
++ intptr = &options->hpn_disabled;
++ goto parse_flag;
++
++ case sHPNBufferSize:
++ intptr = &options->hpn_buffer_size;
++ goto parse_int;
+
+ case sIgnoreUserKnownHosts:
+ intptr = &options->ignore_user_known_hosts;
+--- a/servconf.h
++++ b/servconf.h
+@@ -166,6 +166,9 @@
+ char *adm_forced_command;
+
+ int use_pam; /* Enable auth via PAM */
++ int tcp_rcv_buf_poll; /* poll tcp rcv window in autotuning kernels*/
++ int hpn_disabled; /* disable hpn functionality. false by default */
++ int hpn_buffer_size; /* set the hpn buffer size - default 3MB */
+
+ int permit_tun;
+
+--- a/serverloop.c
++++ b/serverloop.c
+@@ -526,8 +526,12 @@
+ sock = tun_open(tun, mode);
+ if (sock < 0)
+ goto done;
++ if (options.hpn_disabled)
+ c = channel_new("tun", SSH_CHANNEL_OPEN, sock, sock, -1,
+ CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0, "tun", 1);
++ else
++ c = channel_new("tun", SSH_CHANNEL_OPEN, sock, sock, -1,
++ options.hpn_buffer_size, CHAN_TCP_PACKET_DEFAULT, 0, "tun", 1);
+ c->datagram = 1;
+ #if defined(SSH_TUN_FILTER)
+ if (mode == SSH_TUNMODE_POINTOPOINT)
+@@ -563,6 +567,8 @@
+ c = channel_new("session", SSH_CHANNEL_LARVAL,
+ -1, -1, -1, /*window size*/0, CHAN_SES_PACKET_DEFAULT,
+ 0, "server-session", 1);
++ if ((options.tcp_rcv_buf_poll) && (!options.hpn_disabled))
++ c->dynamic_window = 1;
+ if (session_open(the_authctxt, c->self) != 1) {
+ debug("session open failed, free channel %d", c->self);
+ channel_free(c);
+--- a/session.c
++++ b/session.c
+@@ -220,6 +220,7 @@
+ goto authsock_err;
+
+ /* Allocate a channel for the authentication agent socket. */
++ /* this shouldn't matter if its hpn or not - cjr */
+ nc = channel_new("auth socket",
+ SSH_CHANNEL_AUTH_SOCKET, sock, sock, -1,
+ CHAN_X11_WINDOW_DEFAULT, CHAN_X11_PACKET_DEFAULT,
+@@ -2121,10 +2122,16 @@
+ */
+ if (s->chanid == -1)
+ fatal("no channel for session %d", s->self);
++ if (options.hpn_disabled)
+ channel_set_fds(s->chanid,
+ fdout, fdin, fderr,
+ ignore_fderr ? CHAN_EXTENDED_IGNORE : CHAN_EXTENDED_READ,
+ 1, is_tty, CHAN_SES_WINDOW_DEFAULT);
++ else
++ channel_set_fds(s->chanid,
++ fdout, fdin, fderr,
++ ignore_fderr ? CHAN_EXTENDED_IGNORE : CHAN_EXTENDED_READ,
++ 1, is_tty, options.hpn_buffer_size);
+ }
+
+ /*
+--- a/sftp.1
++++ b/sftp.1
+@@ -266,7 +266,8 @@
+ Specify how many requests may be outstanding at any one time.
+ Increasing this may slightly improve file transfer speed
+ but will increase memory usage.
+-The default is 64 outstanding requests.
++The default is 256 outstanding requests providing for 8MB
++of outstanding data with a 32KB buffer.
+ .It Fl r
+ Recursively copy entire directories when uploading and downloading.
+ Note that
+--- a/sftp.c
++++ b/sftp.c
+@@ -72,7 +72,7 @@
+ #include "sftp-client.h"
+
+ #define DEFAULT_COPY_BUFLEN 32768 /* Size of buffer for up/download */
+-#define DEFAULT_NUM_REQUESTS 64 /* # concurrent outstanding requests */
++#define DEFAULT_NUM_REQUESTS 256 /* # concurrent outstanding requests */
+
+ /* File to read commands from */
+ FILE* infile;
+--- a/ssh.c
++++ b/ssh.c
+@@ -1910,6 +1910,9 @@
+ {
+ Channel *c;
+ int window, packetmax, in, out, err;
++ int sock;
++ int socksize;
++ int socksizelen = sizeof(int);
+
+ if (stdin_null_flag) {
+ in = open(_PATH_DEVNULL, O_RDONLY);
+@@ -1930,9 +1933,74 @@
+ if (!isatty(err))
+ set_nonblock(err);
+
+- window = CHAN_SES_WINDOW_DEFAULT;
++ /* we need to check to see if what they want to do about buffer */
++ /* sizes here. In a hpn to nonhpn connection we want to limit */
++ /* the window size to something reasonable in case the far side */
++ /* has the large window bug. In hpn to hpn connection we want to */
++ /* use the max window size but allow the user to override it */
++ /* lastly if they disabled hpn then use the ssh std window size */
++
++ /* so why don't we just do a getsockopt() here and set the */
++ /* ssh window to that? In the case of a autotuning receive */
++ /* window the window would get stuck at the initial buffer */
++ /* size generally less than 96k. Therefore we need to set the */
++ /* maximum ssh window size to the maximum hpn buffer size */
++ /* unless the user has specifically set the tcprcvbufpoll */
++ /* to no. In which case we *can* just set the window to the */
++ /* minimum of the hpn buffer size and tcp receive buffer size */
++
++ if (tty_flag)
++ options.hpn_buffer_size = CHAN_SES_WINDOW_DEFAULT;
++ else
++ options.hpn_buffer_size = 2*1024*1024;
++
++ if (datafellows & SSH_BUG_LARGEWINDOW)
++ {
++ debug("HPN to Non-HPN Connection");
++ }
++ else
++ {
++ if (options.tcp_rcv_buf_poll <= 0)
++ {
++ sock = socket(AF_INET, SOCK_STREAM, 0);
++ getsockopt(sock, SOL_SOCKET, SO_RCVBUF,
++ &socksize, &socksizelen);
++ close(sock);
++ debug("socksize %d", socksize);
++ options.hpn_buffer_size = socksize;
++ debug ("HPNBufferSize set to TCP RWIN: %d", options.hpn_buffer_size);
++ }
++ else
++ {
++ if (options.tcp_rcv_buf > 0)
++ {
++ /*create a socket but don't connect it */
++ /* we use that the get the rcv socket size */
++ sock = socket(AF_INET, SOCK_STREAM, 0);
++ /* if they are using the tcp_rcv_buf option */
++ /* attempt to set the buffer size to that */
++ if (options.tcp_rcv_buf)
++ setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (void *)&options.tcp_rcv_buf,
++ sizeof(options.tcp_rcv_buf));
++ getsockopt(sock, SOL_SOCKET, SO_RCVBUF,
++ &socksize, &socksizelen);
++ close(sock);
++ debug("socksize %d", socksize);
++ options.hpn_buffer_size = socksize;
++ debug ("HPNBufferSize set to user TCPRcvBuf: %d", options.hpn_buffer_size);
++ }
++ }
++ }
++
++ debug("Final hpn_buffer_size = %d", options.hpn_buffer_size);
++
++ window = options.hpn_buffer_size;
++
++ channel_set_hpn(options.hpn_disabled, options.hpn_buffer_size);
++
+ packetmax = CHAN_SES_PACKET_DEFAULT;
+ if (tty_flag) {
++ window = 4*CHAN_SES_PACKET_DEFAULT;
+ window >>= 1;
+ packetmax >>= 1;
+ }
+@@ -1941,6 +2009,10 @@
+ window, packetmax, CHAN_EXTENDED_WRITE,
+ "client-session", /*nonblock*/0);
+
++ if ((options.tcp_rcv_buf_poll > 0) && (!options.hpn_disabled)) {
++ c->dynamic_window = 1;
++ debug ("Enabled Dynamic Window Scaling");
++ }
+ debug3("ssh_session2_open: channel_new: %d", c->self);
+
+ channel_send_open(c->self);
+--- a/sshconnect.c
++++ b/sshconnect.c
+@@ -267,6 +267,31 @@
+ }
+
+ /*
++ * Set TCP receive buffer if requested.
++ * Note: tuning needs to happen after the socket is
++ * created but before the connection happens
++ * so winscale is negotiated properly -cjr
++ */
++static void
++ssh_set_socket_recvbuf(int sock)
++{
++ void *buf = (void *)&options.tcp_rcv_buf;
++ int sz = sizeof(options.tcp_rcv_buf);
++ int socksize;
++ int socksizelen = sizeof(int);
++
++ debug("setsockopt Attempting to set SO_RCVBUF to %d", options.tcp_rcv_buf);
++ if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, buf, sz) >= 0) {
++ getsockopt(sock, SOL_SOCKET, SO_RCVBUF, &socksize, &socksizelen);
++ debug("setsockopt SO_RCVBUF: %.100s %d", strerror(errno), socksize);
++ }
++ else
++ error("Couldn't set socket receive buffer to %d: %.100s",
++ options.tcp_rcv_buf, strerror(errno));
++}
++
++
++/*
+ * Creates a (possibly privileged) socket for use as the ssh connection.
+ */
+ static int
+@@ -282,6 +307,9 @@
+ }
+ fcntl(sock, F_SETFD, FD_CLOEXEC);
+
++ if (options.tcp_rcv_buf > 0)
++ ssh_set_socket_recvbuf(sock);
++
+ /* Bind the socket to an alternative local IP address */
+ if (options.bind_address == NULL && !privileged)
+ return sock;
+@@ -526,10 +554,10 @@
+ /* Send our own protocol version identification. */
+ if (compat20) {
+ xasprintf(&client_version_string, "SSH-%d.%d-%.100s\r\n",
+- PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION);
++ PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE);
+ } else {
+ xasprintf(&client_version_string, "SSH-%d.%d-%.100s\n",
+- PROTOCOL_MAJOR_1, minor1, SSH_VERSION);
++ PROTOCOL_MAJOR_1, minor1, SSH_RELEASE);
+ }
+ if (atomicio(vwrite, connection_out, client_version_string,
+ strlen(client_version_string)) != strlen(client_version_string))
+--- a/sshd.c
++++ b/sshd.c
+@@ -1020,6 +1020,8 @@
+ int ret, listen_sock, on = 1;
+ struct addrinfo *ai;
+ char ntop[NI_MAXHOST], strport[NI_MAXSERV];
++ int socksize;
++ int socksizelen = sizeof(int);
+
+ for (ai = options.listen_addrs; ai; ai = ai->ai_next) {
+ if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)
+@@ -1060,6 +1062,11 @@
+
+ debug("Bind to port %s on %s.", strport, ntop);
+
++ getsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF,
++ &socksize, &socksizelen);
++ debug("Server TCP RWIN socket size: %d", socksize);
++ debug("HPN Buffer Size: %d", options.hpn_buffer_size);
++
+ /* Bind the socket to the desired port. */
+ if (bind(listen_sock, ai->ai_addr, ai->ai_addrlen) < 0) {
+ error("Bind to port %s on %s failed: %.200s.",
+@@ -1977,6 +1984,9 @@
+ verbose("Connection from %s port %d on %s port %d",
+ remote_ip, remote_port, laddr, ssh_local_port(ssh));
+ free(laddr);
++
++ /* set the HPN options for the child */
++ channel_set_hpn(options.hpn_disabled, options.hpn_buffer_size);
+
+ /*
+ * We don't want to listen forever unless the other side
+--- a/sshd_config
++++ b/sshd_config
+@@ -99,7 +99,7 @@
+ #ClientAliveInterval 0
+ #ClientAliveCountMax 3
+ #UseDNS no
+-#PidFile /var/run/sshd.pid
++#PidFile /run/sshd.pid
+ #MaxStartups 10:30:100
+ #PermitTunnel no
+ #ChrootDirectory none
+@@ -109,7 +109,18 @@
+ #Banner none
+
+ # override default of no subsystems
+-Subsystem sftp /usr/libexec/sftp-server
++Subsystem sftp /usr/lib/ssh/sftp-server
++
++# the following are HPN related configuration options
++# tcp receive buffer polling. disable in non autotuning kernels
++#TcpRcvBufPoll yes
++
++# disable hpn performance boosts
++#HPNDisabled no
++
++# buffer size for hpn to non-hpn connections
++#HPNBufferSize 2048
++
+
+ # Example of overriding settings on a per-user basis
+ #Match User anoncvs
+--- a/version.h
++++ b/version.h
+@@ -3,4 +3,5 @@
+ #define SSH_VERSION "OpenSSH_7.4"
+
+ #define SSH_PORTABLE "p1"
+-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
++#define SSH_HPN "-hpn14v4"
++#define SSH_RELEASE SSH_VERSION SSH_PORTABLE SSH_HPN
diff --git a/system/openssh/openssh7.4-peaktput.patch b/system/openssh/openssh7.4-peaktput.patch
new file mode 100644
index 000000000..6fc6140a6
--- /dev/null
+++ b/system/openssh/openssh7.4-peaktput.patch
@@ -0,0 +1,62 @@
+--- a/progressmeter.c
++++ b/progressmeter.c
+@@ -69,6 +69,8 @@
+ static off_t start_pos; /* initial position of transfer */
+ static off_t end_pos; /* ending position of transfer */
+ static off_t cur_pos; /* transfer position as of last refresh */
++static off_t last_pos;
++static off_t max_delta_pos = 0;
+ static volatile off_t *counter; /* progress counter */
+ static long stalled; /* how long we have been stalled */
+ static int bytes_per_second; /* current speed in bytes per second */
+@@ -128,12 +130,17 @@
+ int hours, minutes, seconds;
+ int i, len;
+ int file_len;
++ off_t delta_pos;
+
+ transferred = *counter - (cur_pos ? cur_pos : start_pos);
+ cur_pos = *counter;
+ now = monotime_double();
+ bytes_left = end_pos - cur_pos;
+
++ delta_pos = cur_pos - last_pos;
++ if (delta_pos > max_delta_pos)
++ max_delta_pos = delta_pos;
++
+ if (bytes_left > 0)
+ elapsed = now - last_update;
+ else {
+@@ -158,7 +165,7 @@
+
+ /* filename */
+ buf[0] = '\0';
+- file_len = win_size - 35;
++ file_len = win_size - 45;
+ if (file_len > 0) {
+ len = snprintf(buf, file_len + 1, "\r%s", file);
+ if (len < 0)
+@@ -188,6 +195,15 @@
+ (off_t)bytes_per_second);
+ strlcat(buf, "/s ", win_size);
+
++ /* instantaneous rate */
++ if (bytes_left > 0)
++ format_rate(buf + strlen(buf), win_size - strlen(buf),
++ delta_pos);
++ else
++ format_rate(buf + strlen(buf), win_size - strlen(buf),
++ max_delta_pos);
++ strlcat(buf, "/s ", win_size);
++
+ /* ETA */
+ if (!transferred)
+ stalled += elapsed;
+@@ -224,6 +240,7 @@
+
+ atomicio(vwrite, STDOUT_FILENO, buf, win_size - 1);
+ last_update = now;
++ last_pos = cur_pos;
+ }
+
+ /*ARGSUSED*/
diff --git a/system/openssh/sftp-interactive.patch b/system/openssh/sftp-interactive.patch
new file mode 100644
index 000000000..ab14f3a6b
--- /dev/null
+++ b/system/openssh/sftp-interactive.patch
@@ -0,0 +1,14 @@
+--- a/sftp.c 2014-10-24 10:32:15.793544472 +0500
++++ b/sftp.c 2014-10-24 10:35:22.329199875 +0500
+@@ -2076,8 +2076,10 @@
+ signal(SIGINT, SIG_IGN);
+
+ if (el == NULL) {
+- if (interactive)
++ if (interactive) {
+ printf("sftp> ");
++ fflush(stdout);
++ }
+ if (fgets(cmd, sizeof(cmd), infile) == NULL) {
+ if (interactive)
+ printf("\n");
diff --git a/system/openssh/sshd.confd b/system/openssh/sshd.confd
new file mode 100644
index 000000000..dbe01daf5
--- /dev/null
+++ b/system/openssh/sshd.confd
@@ -0,0 +1,21 @@
+# /etc/conf.d/sshd: config file for /etc/init.d/sshd
+
+# Where is your sshd_config file stored?
+
+SSHD_CONFDIR="/etc/ssh"
+
+
+# Any random options you want to pass to sshd.
+# See the sshd(8) manpage for more info.
+
+SSHD_OPTS=""
+
+
+# Pid file to use (needs to be absolute path).
+
+#SSHD_PIDFILE="/run/sshd.pid"
+
+
+# Path to the sshd binary (needs to be absolute path).
+
+#SSHD_BINARY="/usr/sbin/sshd"
diff --git a/system/openssh/sshd.initd b/system/openssh/sshd.initd
new file mode 100755
index 000000000..065519174
--- /dev/null
+++ b/system/openssh/sshd.initd
@@ -0,0 +1,100 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/openssh/files/sshd.rc6.4,v 1.5 2015/05/04 02:56:25 vapier Exp $
+
+description="OpenBSD Secure Shell server"
+description_checkconfig="Verify configuration file"
+description_reload="Reload configuration"
+
+extra_commands="checkconfig"
+extra_started_commands="reload"
+
+: ${SSHD_CONFDIR:=/etc/ssh}
+: ${SSHD_CONFIG:=${SSHD_CONFDIR}/sshd_config}
+: ${SSHD_PIDFILE:=/run/${SVCNAME}.pid}
+: ${SSHD_BINARY:=/usr/sbin/sshd}
+
+depend() {
+ use logger dns
+ if [ "${rc_need+set}" = "set" ] ; then
+ : # Do nothing, the user has explicitly set rc_need
+ else
+ local x warn_addr
+ for x in $(awk '/^ListenAddress/{ print $2 }' "$SSHD_CONFIG" 2>/dev/null) ; do
+ case "${x}" in
+ 0.0.0.0|0.0.0.0:*) ;;
+ ::|\[::\]*) ;;
+ *) warn_addr="${warn_addr} ${x}" ;;
+ esac
+ done
+ if [ -n "${warn_addr}" ] ; then
+ need net
+ ewarn "You are binding an interface in ListenAddress statement in your sshd_config!"
+ ewarn "You must add rc_need=\"net.FOO\" to your /etc/conf.d/sshd"
+ ewarn "where FOO is the interface(s) providing the following address(es):"
+ ewarn "${warn_addr}"
+ fi
+ fi
+}
+
+checkconfig() {
+ if [ ! -d /var/empty ] ; then
+ mkdir -p /var/empty || return 1
+ fi
+
+ if [ ! -e "${SSHD_CONFIG}" ] ; then
+ eerror "You need an ${SSHD_CONFIG} file to run sshd"
+ eerror "There is a sample file in /usr/share/doc/openssh"
+ return 1
+ fi
+
+ if ! yesno "${SSHD_DISABLE_KEYGEN}"; then
+ ssh-keygen -A || return 1
+ fi
+
+ [ "${SSHD_PIDFILE}" != "/run/sshd.pid" ] \
+ && SSHD_OPTS="${SSHD_OPTS} -o PidFile=${SSHD_PIDFILE}"
+ [ "${SSHD_CONFIG}" != "/etc/ssh/sshd_config" ] \
+ && SSHD_OPTS="${SSHD_OPTS} -f ${SSHD_CONFIG}"
+
+ "${SSHD_BINARY}" -t ${SSHD_OPTS} || return 1
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting ${SVCNAME}"
+ start-stop-daemon --start --exec "${SSHD_BINARY}" \
+ --pidfile "${SSHD_PIDFILE}" \
+ -- ${SSHD_OPTS}
+ eend $?
+}
+
+stop() {
+ if [ "${RC_CMD}" = "restart" ] ; then
+ checkconfig || return 1
+ fi
+
+ ebegin "Stopping ${SVCNAME}"
+ start-stop-daemon --stop --exec "${SSHD_BINARY}" \
+ --pidfile "${SSHD_PIDFILE}" --quiet
+ eend $?
+
+ if [ "$RC_RUNLEVEL" = "shutdown" ]; then
+ _sshd_pids=$(pgrep "${SSHD_BINARY##*/}")
+ if [ -n "$_sshd_pids" ]; then
+ ebegin "Shutting down ssh connections"
+ kill -TERM $_sshd_pids >/dev/null 2>&1
+ eend 0
+ fi
+ fi
+}
+
+reload() {
+ checkconfig || return 1
+ ebegin "Reloading ${SVCNAME}"
+ start-stop-daemon --signal HUP \
+ --exec "${SSHD_BINARY}" --pidfile "${SSHD_PIDFILE}"
+ eend $?
+}
diff --git a/system/openssl/0002-busybox-basename.patch b/system/openssl/0002-busybox-basename.patch
new file mode 100644
index 000000000..9bbc284f3
--- /dev/null
+++ b/system/openssl/0002-busybox-basename.patch
@@ -0,0 +1,34 @@
+From c276ddc394dd402327603959271eac63a2e1ec1c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Thu, 5 Feb 2015 08:40:00 +0200
+Subject: [PATCH] busybox basename
+
+---
+ Makefile.org | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.org b/Makefile.org
+index b7a3f96..035fa83 100644
+--- a/Makefile.org
++++ b/Makefile.org
+@@ -649,7 +649,7 @@ install_docs:
+ filecase=-i; \
+ esac; \
+ set -e; for i in doc/apps/*.pod; do \
+- fn=`basename $$i .pod`; \
++ fn=`basename $$i .pod || true`; \
+ sec=`$(PERL) util/extract-section.pl 1 < $$i`; \
+ echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
+ (cd `$(PERL) util/dirname.pl $$i`; \
+@@ -666,7 +666,7 @@ install_docs:
+ done); \
+ done; \
+ set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
+- fn=`basename $$i .pod`; \
++ fn=`basename $$i .pod || true`; \
+ sec=`$(PERL) util/extract-section.pl 3 < $$i`; \
+ echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
+ (cd `$(PERL) util/dirname.pl $$i`; \
+--
+2.2.2
+
diff --git a/system/openssl/0003-use-termios.patch b/system/openssl/0003-use-termios.patch
new file mode 100644
index 000000000..3312d1856
--- /dev/null
+++ b/system/openssl/0003-use-termios.patch
@@ -0,0 +1,26 @@
+From 5caf1bdcdb56358c0ce38ef404fedbe323e66cb9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Thu, 5 Feb 2015 08:40:32 +0200
+Subject: [PATCH] use termios
+
+---
+ crypto/ui/ui_openssl.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c
+index 8bda83c..a89b5f2 100644
+--- a/crypto/ui/ui_openssl.c
++++ b/crypto/ui/ui_openssl.c
+@@ -224,6 +224,9 @@
+ # undef SGTTY
+ #endif
+
++#define TERMIOS
++#undef TERMIO
++
+ #ifdef TERMIOS
+ # include <termios.h>
+ # define TTY_STRUCT struct termios
+--
+2.2.2
+
diff --git a/system/openssl/0004-fix-default-ca-path-for-apps.patch b/system/openssl/0004-fix-default-ca-path-for-apps.patch
new file mode 100644
index 000000000..c2c53184a
--- /dev/null
+++ b/system/openssl/0004-fix-default-ca-path-for-apps.patch
@@ -0,0 +1,79 @@
+From 09e6425ad6927a825b077af85c50b2fb04773757 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Thu, 5 Feb 2015 08:52:05 +0200
+Subject: [PATCH] fix default ca path for apps
+
+---
+ apps/s_server.c | 22 ++++++++++++++--------
+ apps/s_time.c | 13 ++++++-------
+ 3 files changed, 26 insertions(+), 22 deletions(-)
+
+diff --git a/apps/s_server.c b/apps/s_server.c
+index baa2455..2d5dc97 100644
+--- a/apps/s_server.c
++++ b/apps/s_server.c
+@@ -1770,12 +1770,14 @@ int MAIN(int argc, char *argv[])
+ }
+ #endif
+
+- if ((!SSL_CTX_load_verify_locations(ctx, CAfile, CApath)) ||
+- (!SSL_CTX_set_default_verify_paths(ctx))) {
+- /* BIO_printf(bio_err,"X509_load_verify_locations\n"); */
+- ERR_print_errors(bio_err);
+- /* goto end; */
++ if (CAfile == NULL && CApath == NULL) {
++ if (!SSL_CTX_set_default_verify_paths(ctx))
++ ERR_print_errors(bio_err);
++ } else {
++ if (!SSL_CTX_load_verify_locations(ctx, CAfile, CApath))
++ ERR_print_errors(bio_err);
+ }
++
+ if (vpm)
+ SSL_CTX_set1_param(ctx, vpm);
+
+@@ -1838,10 +1840,14 @@ int MAIN(int argc, char *argv[])
+ else
+ SSL_CTX_sess_set_cache_size(ctx2, 128);
+
+- if ((!SSL_CTX_load_verify_locations(ctx2, CAfile, CApath)) ||
+- (!SSL_CTX_set_default_verify_paths(ctx2))) {
+- ERR_print_errors(bio_err);
++ if (CAfile == NULL && CApath == NULL) {
++ if (!SSL_CTX_set_default_verify_paths(ctx2))
++ ERR_print_errors(bio_err);
++ } else {
++ if (!SSL_CTX_load_verify_locations(ctx2, CAfile, CApath))
++ ERR_print_errors(bio_err);
+ }
++
+ if (vpm)
+ SSL_CTX_set1_param(ctx2, vpm);
+
+diff --git a/apps/s_time.c b/apps/s_time.c
+index 5846f3a..c8f371a 100644
+--- a/apps/s_time.c
++++ b/apps/s_time.c
+@@ -377,13 +377,12 @@ int MAIN(int argc, char **argv)
+
+ SSL_load_error_strings();
+
+- if ((!SSL_CTX_load_verify_locations(tm_ctx, CAfile, CApath)) ||
+- (!SSL_CTX_set_default_verify_paths(tm_ctx))) {
+- /*
+- * BIO_printf(bio_err,"error setting default verify locations\n");
+- */
+- ERR_print_errors(bio_err);
+- /* goto end; */
++ if (CAfile == NULL && CApath == NULL) {
++ if (!SSL_CTX_set_default_verify_paths(tm_ctx))
++ ERR_print_errors(bio_err);
++ } else {
++ if (!SSL_CTX_load_verify_locations(tm_ctx, CAfile, CApath))
++ ERR_print_errors(bio_err);
+ }
+
+ if (tm_cipher == NULL)
+--
+2.2.2
+
diff --git a/system/openssl/0005-fix-parallel-build.patch b/system/openssl/0005-fix-parallel-build.patch
new file mode 100644
index 000000000..70073fd19
--- /dev/null
+++ b/system/openssl/0005-fix-parallel-build.patch
@@ -0,0 +1,349 @@
+diff -ru openssl-1.0.2a.orig/Makefile.org openssl-1.0.2a/Makefile.org
+--- openssl-1.0.2d.orig/Makefile.org 2015-07-09 16:30:50.201986573 -0300
++++ openssl-1.0.2d/Makefile.org 2015-07-09 16:30:50.201986573 -0300
+@@ -278,17 +278,17 @@
+ build_libssl: build_ssl libssl.pc
+
+ build_crypto:
+- @dir=crypto; target=all; $(BUILD_ONE_CMD)
++ +@dir=crypto; target=all; $(BUILD_ONE_CMD)
+ build_ssl: build_crypto
+- @dir=ssl; target=all; $(BUILD_ONE_CMD)
++ +@dir=ssl; target=all; $(BUILD_ONE_CMD)
+ build_engines: build_crypto
+- @dir=engines; target=all; $(BUILD_ONE_CMD)
++ +@dir=engines; target=all; $(BUILD_ONE_CMD)
+ build_apps: build_libs
+- @dir=apps; target=all; $(BUILD_ONE_CMD)
++ +@dir=apps; target=all; $(BUILD_ONE_CMD)
+ build_tests: build_libs
+- @dir=test; target=all; $(BUILD_ONE_CMD)
++ +@dir=test; target=all; $(BUILD_ONE_CMD)
+ build_tools: build_libs
+- @dir=tools; target=all; $(BUILD_ONE_CMD)
++ +@dir=tools; target=all; $(BUILD_ONE_CMD)
+
+ all_testapps: build_libs build_testapps
+ build_testapps:
+@@ -536,9 +536,9 @@
+ dist_pem_h:
+ (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
+
+-install: all install_docs install_sw
++install: install_docs install_sw
+
+-install_sw:
++install_dirs:
+ @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
+ $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
+ $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
+@@ -547,12 +547,19 @@
+ $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
+ $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
+ $(INSTALL_PREFIX)$(OPENSSLDIR)/private
++ @$(PERL) $(TOP)/util/mkdir-p.pl \
++ $(INSTALL_PREFIX)$(MANDIR)/man1 \
++ $(INSTALL_PREFIX)$(MANDIR)/man3 \
++ $(INSTALL_PREFIX)$(MANDIR)/man5 \
++ $(INSTALL_PREFIX)$(MANDIR)/man7
++
++install_sw: install_dirs
+ @set -e; headerlist="$(EXHEADER)"; for i in $$headerlist;\
+ do \
+ (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
+ chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
+ done;
+- @set -e; target=install; $(RECURSIVE_BUILD_CMD)
++ +@set -e; target=install; $(RECURSIVE_BUILD_CMD)
+ @set -e; liblist="$(LIBS)"; for i in $$liblist ;\
+ do \
+ if [ -f "$$i" ]; then \
+@@ -636,12 +643,7 @@
+ done; \
+ done
+
+-install_docs:
+- @$(PERL) $(TOP)/util/mkdir-p.pl \
+- $(INSTALL_PREFIX)$(MANDIR)/man1 \
+- $(INSTALL_PREFIX)$(MANDIR)/man3 \
+- $(INSTALL_PREFIX)$(MANDIR)/man5 \
+- $(INSTALL_PREFIX)$(MANDIR)/man7
++install_docs: install_dirs
+ @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
+ here="`pwd`"; \
+ filecase=; \
+diff -ru openssl-1.0.2a.orig/Makefile.shared openssl-1.0.2a/Makefile.shared
+--- openssl-1.0.2a.orig/Makefile.shared 2015-01-20 12:33:36.000000000 +0000
++++ openssl-1.0.2a/Makefile.shared 2015-03-19 14:53:31.246908039 +0000
+@@ -105,6 +105,7 @@
+ SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
+ LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
+ LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
++ [ -e $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX ] && exit 0; \
+ LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
+ $${SHAREDCMD} $${SHAREDFLAGS} \
+ -o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
+@@ -122,6 +123,7 @@
+ done; \
+ fi; \
+ if [ -n "$$SHLIB_SOVER" ]; then \
++ [ -e "$$SHLIB$$SHLIB_SUFFIX" ] || \
+ ( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \
+ ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \
+ fi; \
+diff -ru openssl-1.0.2a.orig/crypto/Makefile openssl-1.0.2a/crypto/Makefile
+--- openssl-1.0.2a.orig/crypto/Makefile 2015-03-19 13:31:02.000000000 +0000
++++ openssl-1.0.2a/crypto/Makefile 2015-03-19 14:53:31.246908039 +0000
+@@ -85,11 +85,11 @@
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+
+ subdirs:
+- @target=all; $(RECURSIVE_MAKE)
++ +@target=all; $(RECURSIVE_MAKE)
+
+ files:
+ $(PERL) $(TOP)/util/files.pl "CPUID_OBJ=$(CPUID_OBJ)" Makefile >> $(TOP)/MINFO
+- @target=files; $(RECURSIVE_MAKE)
++ +@target=files; $(RECURSIVE_MAKE)
+
+ links:
+ @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER)
+@@ -100,7 +100,7 @@
+ # lib: $(LIB): are splitted to avoid end-less loop
+ lib: $(LIB)
+ @touch lib
+-$(LIB): $(LIBOBJ)
++$(LIB): $(LIBOBJ) | subdirs
+ $(AR) $(LIB) $(LIBOBJ)
+ test -z "$(FIPSLIBDIR)" || $(AR) $(LIB) $(FIPSLIBDIR)fipscanister.o
+ $(RANLIB) $(LIB) || echo Never mind.
+@@ -111,7 +111,7 @@
+ fi
+
+ libs:
+- @target=lib; $(RECURSIVE_MAKE)
++ +@target=lib; $(RECURSIVE_MAKE)
+
+ install:
+ @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile...
+@@ -120,7 +120,7 @@
+ (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
+ chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
+ done;
+- @target=install; $(RECURSIVE_MAKE)
++ +@target=install; $(RECURSIVE_MAKE)
+
+ lint:
+ @target=lint; $(RECURSIVE_MAKE)
+diff -ru openssl-1.0.2a.orig/engines/Makefile openssl-1.0.2a/engines/Makefile
+--- openssl-1.0.2a.orig/engines/Makefile 2015-03-19 13:31:14.000000000 +0000
++++ openssl-1.0.2a/engines/Makefile 2015-03-19 14:53:31.246908039 +0000
+@@ -72,7 +72,7 @@
+
+ all: lib subdirs
+
+-lib: $(LIBOBJ)
++lib: $(LIBOBJ) | subdirs
+ @if [ -n "$(SHARED_LIBS)" ]; then \
+ set -e; \
+ for l in $(LIBNAMES); do \
+@@ -89,7 +89,7 @@
+
+ subdirs:
+ echo $(EDIRS)
+- @target=all; $(RECURSIVE_MAKE)
++ +@target=all; $(RECURSIVE_MAKE)
+
+ files:
+ $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
+@@ -128,7 +128,7 @@
+ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \
+ done; \
+ fi
+- @target=install; $(RECURSIVE_MAKE)
++ +@target=install; $(RECURSIVE_MAKE)
+
+ tags:
+ ctags $(SRC)
+diff -ru openssl-1.0.2a.orig/test/Makefile openssl-1.0.2a/test/Makefile
+--- openssl-1.0.2a.orig/test/Makefile 2015-03-19 13:31:16.000000000 +0000
++++ openssl-1.0.2a/test/Makefile 2015-03-19 14:55:44.146017128 +0000
+@@ -133,7 +133,7 @@
+ tags:
+ ctags $(SRC)
+
+-tests: exe apps $(TESTS)
++tests: exe $(TESTS)
+
+ apps:
+ @(cd ..; $(MAKE) DIRS=apps all)
+@@ -402,121 +402,121 @@
+ link_app.$${shlib_target}
+
+ $(RSATEST)$(EXE_EXT): $(RSATEST).o $(DLIBCRYPTO)
+- @target=$(RSATEST); $(BUILD_CMD)
++ +@target=$(RSATEST); $(BUILD_CMD)
+
+ $(BNTEST)$(EXE_EXT): $(BNTEST).o $(DLIBCRYPTO)
+- @target=$(BNTEST); $(BUILD_CMD)
++ +@target=$(BNTEST); $(BUILD_CMD)
+
+ $(ECTEST)$(EXE_EXT): $(ECTEST).o $(DLIBCRYPTO)
+- @target=$(ECTEST); $(BUILD_CMD)
++ +@target=$(ECTEST); $(BUILD_CMD)
+
+ $(EXPTEST)$(EXE_EXT): $(EXPTEST).o $(DLIBCRYPTO)
+- @target=$(EXPTEST); $(BUILD_CMD)
++ +@target=$(EXPTEST); $(BUILD_CMD)
+
+ $(IDEATEST)$(EXE_EXT): $(IDEATEST).o $(DLIBCRYPTO)
+- @target=$(IDEATEST); $(BUILD_CMD)
++ +@target=$(IDEATEST); $(BUILD_CMD)
+
+ $(MD2TEST)$(EXE_EXT): $(MD2TEST).o $(DLIBCRYPTO)
+- @target=$(MD2TEST); $(BUILD_CMD)
++ +@target=$(MD2TEST); $(BUILD_CMD)
+
+ $(SHATEST)$(EXE_EXT): $(SHATEST).o $(DLIBCRYPTO)
+- @target=$(SHATEST); $(BUILD_CMD)
++ +@target=$(SHATEST); $(BUILD_CMD)
+
+ $(SHA1TEST)$(EXE_EXT): $(SHA1TEST).o $(DLIBCRYPTO)
+- @target=$(SHA1TEST); $(BUILD_CMD)
++ +@target=$(SHA1TEST); $(BUILD_CMD)
+
+ $(SHA256TEST)$(EXE_EXT): $(SHA256TEST).o $(DLIBCRYPTO)
+- @target=$(SHA256TEST); $(BUILD_CMD)
++ +@target=$(SHA256TEST); $(BUILD_CMD)
+
+ $(SHA512TEST)$(EXE_EXT): $(SHA512TEST).o $(DLIBCRYPTO)
+- @target=$(SHA512TEST); $(BUILD_CMD)
++ +@target=$(SHA512TEST); $(BUILD_CMD)
+
+ $(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO)
+- @target=$(RMDTEST); $(BUILD_CMD)
++ +@target=$(RMDTEST); $(BUILD_CMD)
+
+ $(MDC2TEST)$(EXE_EXT): $(MDC2TEST).o $(DLIBCRYPTO)
+- @target=$(MDC2TEST); $(BUILD_CMD)
++ +@target=$(MDC2TEST); $(BUILD_CMD)
+
+ $(MD4TEST)$(EXE_EXT): $(MD4TEST).o $(DLIBCRYPTO)
+- @target=$(MD4TEST); $(BUILD_CMD)
++ +@target=$(MD4TEST); $(BUILD_CMD)
+
+ $(MD5TEST)$(EXE_EXT): $(MD5TEST).o $(DLIBCRYPTO)
+- @target=$(MD5TEST); $(BUILD_CMD)
++ +@target=$(MD5TEST); $(BUILD_CMD)
+
+ $(HMACTEST)$(EXE_EXT): $(HMACTEST).o $(DLIBCRYPTO)
+- @target=$(HMACTEST); $(BUILD_CMD)
++ +@target=$(HMACTEST); $(BUILD_CMD)
+
+ $(WPTEST)$(EXE_EXT): $(WPTEST).o $(DLIBCRYPTO)
+- @target=$(WPTEST); $(BUILD_CMD)
++ +@target=$(WPTEST); $(BUILD_CMD)
+
+ $(RC2TEST)$(EXE_EXT): $(RC2TEST).o $(DLIBCRYPTO)
+- @target=$(RC2TEST); $(BUILD_CMD)
++ +@target=$(RC2TEST); $(BUILD_CMD)
+
+ $(BFTEST)$(EXE_EXT): $(BFTEST).o $(DLIBCRYPTO)
+- @target=$(BFTEST); $(BUILD_CMD)
++ +@target=$(BFTEST); $(BUILD_CMD)
+
+ $(CASTTEST)$(EXE_EXT): $(CASTTEST).o $(DLIBCRYPTO)
+- @target=$(CASTTEST); $(BUILD_CMD)
++ +@target=$(CASTTEST); $(BUILD_CMD)
+
+ $(RC4TEST)$(EXE_EXT): $(RC4TEST).o $(DLIBCRYPTO)
+- @target=$(RC4TEST); $(BUILD_CMD)
++ +@target=$(RC4TEST); $(BUILD_CMD)
+
+ $(RC5TEST)$(EXE_EXT): $(RC5TEST).o $(DLIBCRYPTO)
+- @target=$(RC5TEST); $(BUILD_CMD)
++ +@target=$(RC5TEST); $(BUILD_CMD)
+
+ $(DESTEST)$(EXE_EXT): $(DESTEST).o $(DLIBCRYPTO)
+- @target=$(DESTEST); $(BUILD_CMD)
++ +@target=$(DESTEST); $(BUILD_CMD)
+
+ $(RANDTEST)$(EXE_EXT): $(RANDTEST).o $(DLIBCRYPTO)
+- @target=$(RANDTEST); $(BUILD_CMD)
++ +@target=$(RANDTEST); $(BUILD_CMD)
+
+ $(DHTEST)$(EXE_EXT): $(DHTEST).o $(DLIBCRYPTO)
+- @target=$(DHTEST); $(BUILD_CMD)
++ +@target=$(DHTEST); $(BUILD_CMD)
+
+ $(DSATEST)$(EXE_EXT): $(DSATEST).o $(DLIBCRYPTO)
+- @target=$(DSATEST); $(BUILD_CMD)
++ +@target=$(DSATEST); $(BUILD_CMD)
+
+ $(METHTEST)$(EXE_EXT): $(METHTEST).o $(DLIBCRYPTO)
+- @target=$(METHTEST); $(BUILD_CMD)
++ +@target=$(METHTEST); $(BUILD_CMD)
+
+ $(SSLTEST)$(EXE_EXT): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO)
+- @target=$(SSLTEST); $(FIPS_BUILD_CMD)
++ +@target=$(SSLTEST); $(FIPS_BUILD_CMD)
+
+ $(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO)
+- @target=$(ENGINETEST); $(BUILD_CMD)
++ +@target=$(ENGINETEST); $(BUILD_CMD)
+
+ $(EVPTEST)$(EXE_EXT): $(EVPTEST).o $(DLIBCRYPTO)
+- @target=$(EVPTEST); $(BUILD_CMD)
++ +@target=$(EVPTEST); $(BUILD_CMD)
+
+ $(EVPEXTRATEST)$(EXE_EXT): $(EVPEXTRATEST).o $(DLIBCRYPTO)
+- @target=$(EVPEXTRATEST); $(BUILD_CMD)
++ +@target=$(EVPEXTRATEST); $(BUILD_CMD)
+
+ $(ECDSATEST)$(EXE_EXT): $(ECDSATEST).o $(DLIBCRYPTO)
+- @target=$(ECDSATEST); $(BUILD_CMD)
++ +@target=$(ECDSATEST); $(BUILD_CMD)
+
+ $(ECDHTEST)$(EXE_EXT): $(ECDHTEST).o $(DLIBCRYPTO)
+- @target=$(ECDHTEST); $(BUILD_CMD)
++ +@target=$(ECDHTEST); $(BUILD_CMD)
+
+ $(IGETEST)$(EXE_EXT): $(IGETEST).o $(DLIBCRYPTO)
+- @target=$(IGETEST); $(BUILD_CMD)
++ +@target=$(IGETEST); $(BUILD_CMD)
+
+ $(JPAKETEST)$(EXE_EXT): $(JPAKETEST).o $(DLIBCRYPTO)
+- @target=$(JPAKETEST); $(BUILD_CMD)
++ +@target=$(JPAKETEST); $(BUILD_CMD)
+
+ $(ASN1TEST)$(EXE_EXT): $(ASN1TEST).o $(DLIBCRYPTO)
+- @target=$(ASN1TEST); $(BUILD_CMD)
++ +@target=$(ASN1TEST); $(BUILD_CMD)
+
+ $(SRPTEST)$(EXE_EXT): $(SRPTEST).o $(DLIBCRYPTO)
+- @target=$(SRPTEST); $(BUILD_CMD)
++ +@target=$(SRPTEST); $(BUILD_CMD)
+
+ $(V3NAMETEST)$(EXE_EXT): $(V3NAMETEST).o $(DLIBCRYPTO)
+- @target=$(V3NAMETEST); $(BUILD_CMD)
++ +@target=$(V3NAMETEST); $(BUILD_CMD)
+
+ $(HEARTBEATTEST)$(EXE_EXT): $(HEARTBEATTEST).o $(DLIBCRYPTO)
+- @target=$(HEARTBEATTEST); $(BUILD_CMD_STATIC)
++ +@target=$(HEARTBEATTEST); $(BUILD_CMD_STATIC)
+
+ $(CONSTTIMETEST)$(EXE_EXT): $(CONSTTIMETEST).o
+- @target=$(CONSTTIMETEST) $(BUILD_CMD)
++ +@target=$(CONSTTIMETEST) $(BUILD_CMD)
+
+ #$(AESTEST).o: $(AESTEST).c
+ # $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
+@@ -529,7 +529,7 @@
+ # fi
+
+ dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO)
+- @target=dummytest; $(BUILD_CMD)
++ +@target=dummytest; $(BUILD_CMD)
+
+ # DO NOT DELETE THIS LINE -- make depend depends on it.
+
diff --git a/system/openssl/0006-add-ircv3-tls-3.1-extension-support-to-s_client.patch b/system/openssl/0006-add-ircv3-tls-3.1-extension-support-to-s_client.patch
new file mode 100644
index 000000000..daa6df02f
--- /dev/null
+++ b/system/openssl/0006-add-ircv3-tls-3.1-extension-support-to-s_client.patch
@@ -0,0 +1,68 @@
+From 4785c095dbfb3630ddf6685f23e3a19c7c804cbc Mon Sep 17 00:00:00 2001
+From: William Pitcock <nenolod@dereferenced.org>
+Date: Thu, 5 Feb 2015 09:02:00 +0200
+Subject: [PATCH] add ircv3 tls-3.1 extension support to s_client
+
+---
+ apps/s_client.c | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/apps/s_client.c b/apps/s_client.c
+index 8aee02a..0a28b89 100644
+--- a/apps/s_client.c
++++ b/apps/s_client.c
+@@ -401,7 +401,7 @@ static void sc_usage(void)
+ BIO_printf(bio_err,
+ " 'prot' defines which one to assume. Currently,\n");
+ BIO_printf(bio_err,
+- " only \"smtp\", \"pop3\", \"imap\", \"ftp\" and \"xmpp\"\n");
++ " only \"smtp\", \"pop3\", \"imap\", \"ftp\", \"xmpp\" and \"ircv3\"\n");
+ BIO_printf(bio_err, " are supported.\n");
+ #ifndef OPENSSL_NO_ENGINE
+ BIO_printf(bio_err,
+@@ -640,7 +640,8 @@ enum {
+ PROTO_POP3,
+ PROTO_IMAP,
+ PROTO_FTP,
+- PROTO_XMPP
++ PROTO_XMPP,
++ PROTO_IRCV3,
+ };
+
+ int MAIN(int, char **);
+@@ -1062,6 +1063,8 @@ int MAIN(int argc, char **argv)
+ starttls_proto = PROTO_FTP;
+ else if (strcmp(*argv, "xmpp") == 0)
+ starttls_proto = PROTO_XMPP;
++ else if (strcmp(*argv, "ircv3") == 0)
++ starttls_proto = PROTO_IRCV3;
+ else
+ goto bad;
+ }
+@@ -1646,6 +1649,23 @@ int MAIN(int argc, char **argv)
+ goto shut;
+ mbuf[0] = 0;
+ }
++ if (starttls_proto == PROTO_IRCV3) {
++ int seen = 0;
++ BIO_printf(sbio,"CAP REQ :tls\r\n");
++
++ while (!strstr(mbuf,"CAP")) {
++ seen = BIO_read(sbio,mbuf,BUFSIZZ);
++ mbuf[seen] = 0;
++ }
++ if (!strstr(mbuf,"ACK"))
++ goto shut;
++ BIO_printf(sbio,"CAP END\r\nSTARTTLS\r\n");
++ while (!strstr(sbuf, "670")) {
++ seen = BIO_read(sbio,sbuf,BUFSIZZ);
++ sbuf[seen] = 0;
++ }
++ mbuf[0] = 0;
++ }
+
+ for (;;) {
+ FD_ZERO(&readfds);
+--
+2.2.2
+
diff --git a/system/openssl/0008-maintain-abi-compat-with-no-freelist-and-regular-bui.patch b/system/openssl/0008-maintain-abi-compat-with-no-freelist-and-regular-bui.patch
new file mode 100644
index 000000000..ff3d25eff
--- /dev/null
+++ b/system/openssl/0008-maintain-abi-compat-with-no-freelist-and-regular-bui.patch
@@ -0,0 +1,27 @@
+From 7457e26d3a78c7cd923242d87d04febadddea086 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Thu, 5 Feb 2015 10:06:31 +0200
+Subject: [PATCH] maintain abi compat with no-freelist and regular build
+
+---
+ ssl/ssl.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ssl/ssl.h b/ssl/ssl.h
+index 2b0f662..636cb5d 100644
+--- a/ssl/ssl.h
++++ b/ssl/ssl.h
+@@ -1113,6 +1113,10 @@ struct ssl_ctx_st {
+ unsigned int freelist_max_len;
+ struct ssl3_buf_freelist_st *wbuf_freelist;
+ struct ssl3_buf_freelist_st *rbuf_freelist;
++# else
++ unsigned int freelist_dummy0;
++ void *freelist_dummy1;
++ void *freelist_dummy2;
+ # endif
+ # ifndef OPENSSL_NO_SRP
+ SRP_CTX srp_ctx; /* ctx for SRP authentication */
+--
+2.2.2
+
diff --git a/system/openssl/0009-no-rpath.patch b/system/openssl/0009-no-rpath.patch
new file mode 100644
index 000000000..56df75b79
--- /dev/null
+++ b/system/openssl/0009-no-rpath.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.shared 2005-06-23 22:47:54.000000000 +0200
++++ b/Makefile.shared 2005-11-16 22:35:37.000000000 +0100
+@@ -153,7 +153,7 @@
+ NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"
+
+-DO_GNU_APP=LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBRPATH)"
++DO_GNU_APP=LDFLAGS="$(CFLAGS)"
+
+ #This is rather special. It's a special target with which one can link
+ #applications without bothering with any features that have anything to
diff --git a/system/openssl/0010-ssl-env-zlib.patch b/system/openssl/0010-ssl-env-zlib.patch
new file mode 100644
index 000000000..9eae15d72
--- /dev/null
+++ b/system/openssl/0010-ssl-env-zlib.patch
@@ -0,0 +1,38 @@
+diff -ru openssl-1.0.2a.orig/doc/ssl/SSL_COMP_add_compression_method.pod openssl-1.0.2a/doc/ssl/SSL_COMP_add_compression_method.pod
+--- openssl-1.0.2a.orig/doc/ssl/SSL_COMP_add_compression_method.pod 2015-01-15 16:43:14.000000000 -0200
++++ openssl-1.0.2a/doc/ssl/SSL_COMP_add_compression_method.pod 2015-03-27 15:18:47.280054883 -0200
+@@ -47,6 +47,13 @@
+ been standardized, the compression API will most likely be changed. Using
+ it in the current state is not recommended.
+
++It is also not recommended to use compression if data transfered contain
++untrusted parts that can be manipulated by an attacker as he could then
++get information about the encrypted data. See the CRIME attack. For
++that reason the default loading of the zlib compression method is
++disabled and enabled only if the environment variable B<OPENSSL_DEFAULT_ZLIB>
++is present during the library initialization.
++
+ =head1 RETURN VALUES
+
+ SSL_COMP_add_compression_method() may return the following values:
+diff -ru openssl-1.0.2a.orig/ssl/ssl_ciph.c openssl-1.0.2a/ssl/ssl_ciph.c
+--- openssl-1.0.2a.orig/ssl/ssl_ciph.c 2015-03-19 15:30:36.000000000 -0200
++++ openssl-1.0.2a/ssl/ssl_ciph.c 2015-03-27 15:23:05.960057092 -0200
+@@ -141,6 +141,8 @@
+ */
+
+ #include <stdio.h>
++#include <stdlib.h>
++#include <sys/auxv.h>
+ #include <openssl/objects.h>
+ #ifndef OPENSSL_NO_COMP
+ # include <openssl/comp.h>
+@@ -481,7 +483,7 @@
+
+ MemCheck_off();
+ ssl_comp_methods = sk_SSL_COMP_new(sk_comp_cmp);
+- if (ssl_comp_methods != NULL) {
++ if (ssl_comp_methods != NULL && getauxval(AT_SECURE) == 0 && getenv("OPENSSL_DEFAULT_ZLIB") != NULL) {
+ comp = (SSL_COMP *)OPENSSL_malloc(sizeof(SSL_COMP));
+ if (comp != NULL) {
+ comp->method = COMP_zlib();
diff --git a/system/openssl/1001-crypto-hmac-support-EVP_MD_CTX_FLAG_ONESHOT-and-set-.patch b/system/openssl/1001-crypto-hmac-support-EVP_MD_CTX_FLAG_ONESHOT-and-set-.patch
new file mode 100644
index 000000000..ef46faa84
--- /dev/null
+++ b/system/openssl/1001-crypto-hmac-support-EVP_MD_CTX_FLAG_ONESHOT-and-set-.patch
@@ -0,0 +1,88 @@
+From 83c96cbc76604daccbc31cea9411555aea96fd6d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Thu, 5 Feb 2015 09:16:51 +0200
+Subject: [PATCH] crypto/hmac: support EVP_MD_CTX_FLAG_ONESHOT and set it
+ properly
+
+Some engines (namely VIA C7 Padlock) work only if EVP_MD_CTX_FLAG_ONESHOT
+is set before final update. This is because some crypto accelerators cannot
+perform non-finalizing transform of the digest.
+
+The usage of EVP_MD_CTX_FLAG_ONESHOT is used semantically slightly
+differently here. It is set before the final EVP_DigestUpdate call, not
+necessarily before EVP_DigestInit call. This will not cause any problems
+though.
+---
+ crypto/hmac/hmac.c | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/crypto/hmac/hmac.c b/crypto/hmac/hmac.c
+index 1fc9e2c..6f16578 100644
+--- a/crypto/hmac/hmac.c
++++ b/crypto/hmac/hmac.c
+@@ -109,7 +109,8 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
+ j = EVP_MD_block_size(md);
+ OPENSSL_assert(j <= (int)sizeof(ctx->key));
+ if (j < len) {
+- if (!EVP_DigestInit_ex(&ctx->md_ctx, md, impl))
++ EVP_MD_CTX_set_flags(&ctx->md_ctx, EVP_MD_CTX_FLAG_ONESHOT);
++ if (!EVP_DigestInit_ex(&ctx->md_ctx, md, impl))
+ goto err;
+ if (!EVP_DigestUpdate(&ctx->md_ctx, key, len))
+ goto err;
+@@ -129,6 +130,7 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
+ if (reset) {
+ for (i = 0; i < HMAC_MAX_MD_CBLOCK; i++)
+ pad[i] = 0x36 ^ ctx->key[i];
++ EVP_MD_CTX_clear_flags(&ctx->i_ctx, EVP_MD_CTX_FLAG_ONESHOT);
+ if (!EVP_DigestInit_ex(&ctx->i_ctx, md, impl))
+ goto err;
+ if (!EVP_DigestUpdate(&ctx->i_ctx, pad, EVP_MD_block_size(md)))
+@@ -136,6 +138,7 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
+
+ for (i = 0; i < HMAC_MAX_MD_CBLOCK; i++)
+ pad[i] = 0x5c ^ ctx->key[i];
++ EVP_MD_CTX_clear_flags(&ctx->o_ctx, EVP_MD_CTX_FLAG_ONESHOT);
+ if (!EVP_DigestInit_ex(&ctx->o_ctx, md, impl))
+ goto err;
+ if (!EVP_DigestUpdate(&ctx->o_ctx, pad, EVP_MD_block_size(md)))
+@@ -143,6 +146,7 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
+ }
+ if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->i_ctx))
+ goto err;
++ EVP_MD_CTX_clear_flags(&ctx->md_ctx, EVP_MD_CTX_FLAG_ONESHOT);
+ return 1;
+ err:
+ return 0;
+@@ -177,6 +181,7 @@ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)
+ goto err;
+ if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->o_ctx))
+ goto err;
++ EVP_MD_CTX_set_flags(&ctx->md_ctx,EVP_MD_CTX_FLAG_ONESHOT);
+ if (!EVP_DigestUpdate(&ctx->md_ctx, buf, i))
+ goto err;
+ if (!EVP_DigestFinal_ex(&ctx->md_ctx, md, len))
+@@ -233,8 +238,9 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
+ if (md == NULL)
+ md = m;
+ HMAC_CTX_init(&c);
+- if (!HMAC_Init(&c, key, key_len, evp_md))
++ if (!HMAC_Init_ex(&c, key, key_len, evp_md, NULL))
+ goto err;
++ HMAC_CTX_set_flags(&c,EVP_MD_CTX_FLAG_ONESHOT);
+ if (!HMAC_Update(&c, d, n))
+ goto err;
+ if (!HMAC_Final(&c, md, md_len))
+@@ -247,7 +253,7 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
+
+ void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)
+ {
+- EVP_MD_CTX_set_flags(&ctx->i_ctx, flags);
+- EVP_MD_CTX_set_flags(&ctx->o_ctx, flags);
++ EVP_MD_CTX_set_flags(&ctx->i_ctx, flags & ~EVP_MD_CTX_FLAG_ONESHOT);
++ EVP_MD_CTX_set_flags(&ctx->o_ctx, flags & ~EVP_MD_CTX_FLAG_ONESHOT);
+ EVP_MD_CTX_set_flags(&ctx->md_ctx, flags);
+ }
+--
+2.2.2
+
diff --git a/system/openssl/1002-backport-changes-from-upstream-padlock-module.patch b/system/openssl/1002-backport-changes-from-upstream-padlock-module.patch
new file mode 100644
index 000000000..f63bbcd1c
--- /dev/null
+++ b/system/openssl/1002-backport-changes-from-upstream-padlock-module.patch
@@ -0,0 +1,200 @@
+From ba17588a940ee712c3ef6d458adb1087f0c84521 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Thu, 5 Feb 2015 09:28:10 +0200
+Subject: [PATCH] backport changes from upstream padlock module.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Includes support for VIA Nano 64-bit mode.
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+---
+ engines/e_padlock.c | 142 +++++++++++++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 125 insertions(+), 17 deletions(-)
+
+diff --git a/engines/e_padlock.c b/engines/e_padlock.c
+index 2898e4c..94406cb 100644
+--- a/engines/e_padlock.c
++++ b/engines/e_padlock.c
+@@ -101,7 +101,10 @@
+ */
+ # undef COMPILE_HW_PADLOCK
+ # if !defined(I386_ONLY) && !defined(OPENSSL_NO_INLINE_ASM)
+-# if (defined(__GNUC__) && (defined(__i386__) || defined(__i386))) || \
++# if (defined(__GNUC__) && __GNUC__>=2 && \
++ (defined(__i386__) || defined(__i386) || \
++ defined(__x86_64__) || defined(__x86_64)) \
++ ) || \
+ (defined(_MSC_VER) && defined(_M_IX86))
+ # define COMPILE_HW_PADLOCK
+ # endif
+@@ -303,6 +306,7 @@ static volatile struct padlock_cipher_data *padlock_saved_context;
+ * =======================================================
+ */
+ # if defined(__GNUC__) && __GNUC__>=2
++# if defined(__i386__) || defined(__i386)
+ /*
+ * As for excessive "push %ebx"/"pop %ebx" found all over.
+ * When generating position-independent code GCC won't let
+@@ -379,22 +383,6 @@ static int padlock_available(void)
+ return padlock_use_ace + padlock_use_rng;
+ }
+
+-# ifndef OPENSSL_NO_AES
+-# ifndef AES_ASM
+-/* Our own htonl()/ntohl() */
+-static inline void padlock_bswapl(AES_KEY *ks)
+-{
+- size_t i = sizeof(ks->rd_key) / sizeof(ks->rd_key[0]);
+- unsigned int *key = ks->rd_key;
+-
+- while (i--) {
+- asm volatile ("bswapl %0":"+r" (*key));
+- key++;
+- }
+-}
+-# endif
+-# endif
+-
+ /*
+ * Force key reload from memory to the CPU microcode. Loading EFLAGS from the
+ * stack clears EFLAGS[30] which does the trick.
+@@ -448,6 +436,110 @@ static inline void *name(size_t cnt, \
+ : "edx", "cc", "memory"); \
+ return iv; \
+ }
++#endif
++
++#elif defined(__x86_64__) || defined(__x86_64)
++
++/* Load supported features of the CPU to see if
++ the PadLock is available. */
++static int
++padlock_available(void)
++{
++ char vendor_string[16];
++ unsigned int eax, edx;
++
++ /* Are we running on the Centaur (VIA) CPU? */
++ eax = 0x00000000;
++ vendor_string[12] = 0;
++ asm volatile (
++ "cpuid\n"
++ "movl %%ebx,(%1)\n"
++ "movl %%edx,4(%1)\n"
++ "movl %%ecx,8(%1)\n"
++ : "+a"(eax) : "r"(vendor_string) : "rbx", "rcx", "rdx");
++ if (strcmp(vendor_string, "CentaurHauls") != 0)
++ return 0;
++
++ /* Check for Centaur Extended Feature Flags presence */
++ eax = 0xC0000000;
++ asm volatile ("cpuid"
++ : "+a"(eax) : : "rbx", "rcx", "rdx");
++ if (eax < 0xC0000001)
++ return 0;
++
++ /* Read the Centaur Extended Feature Flags */
++ eax = 0xC0000001;
++ asm volatile ("cpuid"
++ : "+a"(eax), "=d"(edx) : : "rbx", "rcx");
++
++ /* Fill up some flags */
++ padlock_use_ace = ((edx & (0x3<<6)) == (0x3<<6));
++ padlock_use_rng = ((edx & (0x3<<2)) == (0x3<<2));
++
++ return padlock_use_ace + padlock_use_rng;
++}
++
++/* Force key reload from memory to the CPU microcode.
++ Loading EFLAGS from the stack clears EFLAGS[30]
++ which does the trick. */
++static inline void
++padlock_reload_key(void)
++{
++ asm volatile ("pushfq; popfq");
++}
++
++#ifndef OPENSSL_NO_AES
++/*
++ * This is heuristic key context tracing. At first one
++ * believes that one should use atomic swap instructions,
++ * but it's not actually necessary. Point is that if
++ * padlock_saved_context was changed by another thread
++ * after we've read it and before we compare it with cdata,
++ * our key *shall* be reloaded upon thread context switch
++ * and we are therefore set in either case...
++ */
++static inline void
++padlock_verify_context(struct padlock_cipher_data *cdata)
++{
++ asm volatile (
++ "pushfq\n"
++" btl $30,(%%rsp)\n"
++" jnc 1f\n"
++" cmpq %2,%1\n"
++" je 1f\n"
++" popfq\n"
++" subq $8,%%rsp\n"
++"1: addq $8,%%rsp\n"
++" movq %2,%0"
++ :"+m"(padlock_saved_context)
++ : "r"(padlock_saved_context), "r"(cdata) : "cc");
++}
++
++/* Template for padlock_xcrypt_* modes */
++/* BIG FAT WARNING:
++ * The offsets used with 'leal' instructions
++ * describe items of the 'padlock_cipher_data'
++ * structure.
++ */
++#define PADLOCK_XCRYPT_ASM(name,rep_xcrypt) \
++static inline void *name(size_t cnt, \
++ struct padlock_cipher_data *cdata, \
++ void *out, const void *inp) \
++{ void *iv; \
++ asm volatile ( "leaq 16(%0),%%rdx\n" \
++ " leaq 32(%0),%%rbx\n" \
++ rep_xcrypt "\n" \
++ : "=a"(iv), "=c"(cnt), "=D"(out), "=S"(inp) \
++ : "0"(cdata), "1"(cnt), "2"(out), "3"(inp) \
++ : "rbx", "rdx", "cc", "memory"); \
++ return iv; \
++}
++#endif
++
++#endif /* cpu */
++
++
++# ifndef OPENSSL_NO_AES
+
+ /* Generate all functions with appropriate opcodes */
+ /* rep xcryptecb */
+@@ -458,7 +550,23 @@ PADLOCK_XCRYPT_ASM(padlock_xcrypt_ecb, ".byte 0xf3,0x0f,0xa7,0xc8")
+ PADLOCK_XCRYPT_ASM(padlock_xcrypt_cfb, ".byte 0xf3,0x0f,0xa7,0xe0")
+ /* rep xcryptofb */
+ PADLOCK_XCRYPT_ASM(padlock_xcrypt_ofb, ".byte 0xf3,0x0f,0xa7,0xe8")
++
++# ifndef AES_ASM
++/* Our own htonl()/ntohl() */
++static inline void padlock_bswapl(AES_KEY *ks)
++{
++ size_t i = sizeof(ks->rd_key) / sizeof(ks->rd_key[0]);
++ unsigned int *key = ks->rd_key;
++
++ while (i--) {
++ asm volatile ("bswapl %0":"+r" (*key));
++ key++;
++ }
++}
++# endif
++
+ # endif
++
+ /* The RNG call itself */
+ static inline unsigned int padlock_xstore(void *addr, unsigned int edx_in)
+ {
+--
+2.2.2
+
diff --git a/system/openssl/1003-engines-e_padlock-implement-sha1-sha224-sha256-accel.patch b/system/openssl/1003-engines-e_padlock-implement-sha1-sha224-sha256-accel.patch
new file mode 100644
index 000000000..5a2cdd633
--- /dev/null
+++ b/system/openssl/1003-engines-e_padlock-implement-sha1-sha224-sha256-accel.patch
@@ -0,0 +1,782 @@
+From 728af0306505f1ff91364ac2175fb6bf5da90ec3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Thu, 5 Feb 2015 09:41:12 +0200
+Subject: [PATCH] engines/e_padlock: implement sha1/sha224/sha256 acceleration
+
+Limited support for VIA C7 that works only when EVP_MD_CTX_FLAG_ONESHOT
+is used appropriately (as done by EVP_Digest, and my previous HMAC patch).
+
+Full support for VIA Nano including partial transformation and 64-bit mode.
+
+Benchmarks from VIA Nano 1.6GHz, done with including the previous HMAC and
+apps/speed patches done. From single run, error margin of about 100-200k.
+
+No padlock
+
+type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
+sha1 20057.60k 51514.05k 99721.39k 130167.81k 142811.14k
+sha256 7757.72k 16907.18k 28937.05k 35181.23k 37568.51k
+hmac(sha1) 8582.53k 27644.69k 70402.30k 114602.67k 140167.85k
+
+With the patch
+
+sha1 37713.77k 114562.71k 259637.33k 379907.41k 438818.13k
+sha256 34262.86k 103233.75k 232476.07k 338386.60k 389860.01k
+hmac(sha1) 8424.70k 31475.11k 104036.10k 245559.30k 406667.26k
+---
+ engines/e_padlock.c | 663 ++++++++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 614 insertions(+), 49 deletions(-)
+
+diff --git a/engines/e_padlock.c b/engines/e_padlock.c
+index 94406cb..5e99114 100644
+--- a/engines/e_padlock.c
++++ b/engines/e_padlock.c
+@@ -3,6 +3,9 @@
+ * Written by Michal Ludvig <michal@logix.cz>
+ * http://www.logix.cz/michal
+ *
++ * SHA support by Timo Teras <timo.teras@iki.fi>. Portions based on
++ * code originally written by Michal Ludvig.
++ *
+ * Big thanks to Andy Polyakov for a help with optimization,
+ * assembler fixes, port to MS Windows and a lot of other
+ * valuable work on this engine!
+@@ -63,7 +66,9 @@
+ */
+
+ #include <stdio.h>
++#include <stdint.h>
+ #include <string.h>
++#include <netinet/in.h>
+
+ #include <openssl/opensslconf.h>
+ #include <openssl/crypto.h>
+@@ -73,11 +78,32 @@
+ #ifndef OPENSSL_NO_AES
+ # include <openssl/aes.h>
+ #endif
++#ifndef OPENSSL_NO_SHA
++# include <openssl/sha.h>
++#endif
+ #include <openssl/rand.h>
+ #include <openssl/err.h>
+
+ #ifndef OPENSSL_NO_HW
+-# ifndef OPENSSL_NO_HW_PADLOCK
++# ifndef OPENSSL_NO_HW_PADLOCK
++
++/* PadLock RNG is disabled by default */
++# define PADLOCK_NO_RNG 1
++
++/* No ASM routines for SHA in MSC yet */
++# ifdef _MSC_VER
++# define OPENSSL_NO_SHA
++# endif
++
++/* 64-bit mode does not need software SHA1 as fallback, we can
++ * do all operations with padlock */
++# if defined(__x86_64__) || defined(__x86_64)
++# define PADLOCK_NEED_FALLBACK_SHA 0
++# else
++# define PADLOCK_NEED_FALLBACK_SHA 1
++# endif
++
++# define PADLOCK_MAX_FINALIZING_LENGTH 0x1FFFFFFE
+
+ /* Attempt to have a single source for both 0.9.7 and 0.9.8 :-) */
+ # if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
+@@ -151,60 +177,42 @@ void ENGINE_load_padlock(void)
+ static int padlock_available(void);
+ static int padlock_init(ENGINE *e);
+
++# ifndef PADLOCK_NO_RNG
+ /* RNG Stuff */
+ static RAND_METHOD padlock_rand;
+-
+-/* Cipher Stuff */
+-# ifndef OPENSSL_NO_AES
+-static int padlock_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
+- const int **nids, int nid);
+ # endif
+
+ /* Engine names */
+ static const char *padlock_id = "padlock";
+ static char padlock_name[100];
+
++static int padlock_bind_helper(ENGINE *e);
++
+ /* Available features */
+-static int padlock_use_ace = 0; /* Advanced Cryptography Engine */
+-static int padlock_use_rng = 0; /* Random Number Generator */
++enum padlock_flags {
++ PADLOCK_RNG = 0x01,
++ PADLOCK_ACE = 0x02,
++ PADLOCK_ACE2 = 0x04,
++ PADLOCK_PHE = 0x08,
++ PADLOCK_PMM = 0x10,
++ PADLOCK_NANO = 0x20,
++};
++enum padlock_flags padlock_flags;
++
++#define PADLOCK_HAVE_RNG (padlock_flags & PADLOCK_RNG)
++#define PADLOCK_HAVE_ACE (padlock_flags & (PADLOCK_ACE|PADLOCK_ACE2))
++#define PADLOCK_HAVE_ACE1 (padlock_flags & PADLOCK_ACE)
++#define PADLOCK_HAVE_ACE2 (padlock_flags & PADLOCK_ACE2)
++#define PADLOCK_HAVE_PHE (padlock_flags & PADLOCK_PHE)
++#define PADLOCK_HAVE_PMM (padlock_flags & PADLOCK_PMM)
++#define PADLOCK_HAVE_NANO (padlock_flags & PADLOCK_NANO)
++
+ # ifndef OPENSSL_NO_AES
+ static int padlock_aes_align_required = 1;
+ # endif
+
+ /* ===== Engine "management" functions ===== */
+
+-/* Prepare the ENGINE structure for registration */
+-static int padlock_bind_helper(ENGINE *e)
+-{
+- /* Check available features */
+- padlock_available();
+-
+-# if 1 /* disable RNG for now, see commentary in
+- * vicinity of RNG code */
+- padlock_use_rng = 0;
+-# endif
+-
+- /* Generate a nice engine name with available features */
+- BIO_snprintf(padlock_name, sizeof(padlock_name),
+- "VIA PadLock (%s, %s)",
+- padlock_use_rng ? "RNG" : "no-RNG",
+- padlock_use_ace ? "ACE" : "no-ACE");
+-
+- /* Register everything or return with an error */
+- if (!ENGINE_set_id(e, padlock_id) ||
+- !ENGINE_set_name(e, padlock_name) ||
+- !ENGINE_set_init_function(e, padlock_init) ||
+-# ifndef OPENSSL_NO_AES
+- (padlock_use_ace && !ENGINE_set_ciphers(e, padlock_ciphers)) ||
+-# endif
+- (padlock_use_rng && !ENGINE_set_RAND(e, &padlock_rand))) {
+- return 0;
+- }
+-
+- /* Everything looks good */
+- return 1;
+-}
+-
+ # ifdef OPENSSL_NO_DYNAMIC_ENGINE
+
+ /* Constructor */
+@@ -229,7 +237,7 @@ static ENGINE *ENGINE_padlock(void)
+ /* Check availability of the engine */
+ static int padlock_init(ENGINE *e)
+ {
+- return (padlock_use_rng || padlock_use_ace);
++ return padlock_flags;
+ }
+
+ /*
+@@ -377,10 +385,20 @@ static int padlock_available(void)
+ "=d"(edx)::"ecx");
+
+ /* Fill up some flags */
+- padlock_use_ace = ((edx & (0x3 << 6)) == (0x3 << 6));
+- padlock_use_rng = ((edx & (0x3 << 2)) == (0x3 << 2));
+-
+- return padlock_use_ace + padlock_use_rng;
++ padlock_flags |= ((edx & (0x3<<3)) ? PADLOCK_RNG : 0);
++ padlock_flags |= ((edx & (0x3<<7)) ? PADLOCK_ACE : 0);
++ padlock_flags |= ((edx & (0x3<<9)) ? PADLOCK_ACE2 : 0);
++ padlock_flags |= ((edx & (0x3<<11)) ? PADLOCK_PHE : 0);
++ padlock_flags |= ((edx & (0x3<<13)) ? PADLOCK_PMM : 0);
++
++ /* Check for VIA Nano CPU */
++ eax = 0x00000001;
++ asm volatile ("pushl %%ebx; cpuid; popl %%ebx"
++ : "+a"(eax) : : "ecx", "edx");
++ if ((eax | 0x000F) == 0x06FF)
++ padlock_flags |= PADLOCK_NANO;
++
++ return padlock_flags;
+ }
+
+ /*
+@@ -473,10 +491,14 @@ padlock_available(void)
+ : "+a"(eax), "=d"(edx) : : "rbx", "rcx");
+
+ /* Fill up some flags */
+- padlock_use_ace = ((edx & (0x3<<6)) == (0x3<<6));
+- padlock_use_rng = ((edx & (0x3<<2)) == (0x3<<2));
+-
+- return padlock_use_ace + padlock_use_rng;
++ padlock_flags |= ((edx & (0x3<<3)) ? PADLOCK_RNG : 0);
++ padlock_flags |= ((edx & (0x3<<7)) ? PADLOCK_ACE : 0);
++ padlock_flags |= ((edx & (0x3<<9)) ? PADLOCK_ACE2 : 0);
++ padlock_flags |= ((edx & (0x3<<11)) ? PADLOCK_PHE : 0);
++ padlock_flags |= ((edx & (0x3<<13)) ? PADLOCK_PMM : 0);
++ padlock_flags |= PADLOCK_NANO;
++
++ return padlock_flags;
+ }
+
+ /* Force key reload from memory to the CPU microcode.
+@@ -1293,6 +1315,496 @@ padlock_aes_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out_arg,
+
+ # endif /* OPENSSL_NO_AES */
+
++#ifndef OPENSSL_NO_SHA
++
++static inline void
++padlock_copy_bswap(void *dst, void *src, size_t count)
++{
++ uint32_t *udst = dst, *usrc = src;
++ int i = 0;
++
++ for (i = 0; i < count; i++)
++ udst[i] = htonl(usrc[i]);
++}
++
++static unsigned long padlock_sha_prepare_padding(
++ EVP_MD_CTX *ctx,
++ unsigned char *padding,
++ unsigned char *data, size_t data_len,
++ uint64_t total)
++{
++ unsigned int padding_len;
++
++ padding_len = data_len < 56 ? SHA_CBLOCK : 2 * SHA_CBLOCK;
++ if (data_len)
++ memcpy(padding, data, data_len);
++
++ memset(padding + data_len, 0, padding_len - data_len);
++ padding[data_len] = 0x80;
++ *(uint32_t *)(padding + padding_len - 8) = htonl(total >> 32);
++ *(uint32_t *)(padding + padding_len - 4) = htonl(total & 0xffffffff);
++
++ return data_len < 56 ? 1 : 2;
++}
++
++#define PADLOCK_SHA_ALIGN(dd) (uint32_t*)(((uintptr_t)(dd) + 15) & ~15)
++#define PADLOCK_SHA_HWCTX (128+16)
++
++static void
++padlock_sha1(void *hwctx, const void *buf, unsigned long total, unsigned long now)
++{
++ unsigned long pos = total - now;
++
++ asm volatile ("xsha1"
++ : "+S"(buf), "+D"(hwctx), "+a"(pos), "+c"(total)
++ : : "memory");
++}
++
++static void
++padlock_sha1_partial(void *hwctx, const void *buf, unsigned long blocks)
++{
++ asm volatile ("xsha1"
++ : "+S"(buf), "+D"(hwctx), "+c"(blocks)
++ : "a"(-1L) : "memory");
++}
++
++static int padlock_sha1_init(EVP_MD_CTX *ctx)
++{
++ return SHA1_Init(ctx->md_data);
++}
++
++#if PADLOCK_NEED_FALLBACK_SHA
++
++static int padlock_sha1_update_eden(EVP_MD_CTX *ctx, const void *data,
++ size_t len)
++{
++ unsigned char hwctx[PADLOCK_SHA_HWCTX];
++ uint32_t *aligned = PADLOCK_SHA_ALIGN(hwctx);
++ SHA_CTX *c = ctx->md_data;
++ uint_fast64_t total;
++ const unsigned char *p = data;
++ unsigned long l = 0;
++
++ /* Calculate total length (Nl,Nh) is length in bits */
++ total = (((uint_fast64_t) c->Nh) << 29) + (c->Nl >> 3);
++ total += len;
++
++ if ((ctx->flags & EVP_MD_CTX_FLAG_ONESHOT) &&
++ (total <= PADLOCK_MAX_FINALIZING_LENGTH)) {
++ if (c->num != 0) {
++ l = (len < SHA_CBLOCK - c->num) ? len : (SHA_CBLOCK - c->num);
++ if (!SHA1_Update(c, data, l))
++ return 0;
++ p += l;
++ if (c->num != 0) {
++ p = (unsigned char *) c->data;
++ len = c->num;
++ l = 0;
++ }
++ }
++ memcpy(aligned, &c->h0, 5 * sizeof(SHA_LONG));
++ padlock_sha1(aligned, p, total, len - l);
++ memcpy(&c->h0, aligned, 5 * sizeof(SHA_LONG));
++ c->num = -1;
++ return 1;
++ }
++
++ return SHA1_Update(c, data, len);
++}
++#endif
++
++static int padlock_sha1_update(EVP_MD_CTX *ctx, const void *data,
++ size_t len)
++{
++ unsigned char hwctx[PADLOCK_SHA_HWCTX];
++ uint32_t *aligned = PADLOCK_SHA_ALIGN(hwctx);
++ SHA_CTX *c = ctx->md_data;
++ uint_fast64_t total;
++ unsigned char *p;
++ unsigned long n;
++
++ /* Calculate total length (Nl,Nh) is length in bits */
++ total = (((uint_fast64_t) c->Nh) << 29) + (c->Nl >> 3);
++ total += len;
++ c->Nh = total >> 29;
++ c->Nl = (total << 3) & 0xffffffffUL;
++
++ memcpy(aligned, &c->h0, 5 * sizeof(SHA_LONG));
++
++ /* Check partial data */
++ n = c->num;
++ if (n) {
++ p = (unsigned char *) c->data;
++ if (len >= SHA_CBLOCK || len+n >= SHA_CBLOCK) {
++ memcpy(p+n, data, SHA_CBLOCK-n);
++ padlock_sha1_partial(aligned, p, 1);
++ n = SHA_CBLOCK - n;
++ data += n;
++ len -= n;
++ c->num = 0;
++ memset(p, 0, SHA_CBLOCK);
++ } else {
++ memcpy(p+n, data, len);
++ c->num += (unsigned int)len;
++ return 1;
++ }
++ }
++
++ /* Can we finalize straight away? */
++ if ((ctx->flags & EVP_MD_CTX_FLAG_ONESHOT) &&
++ (total <= PADLOCK_MAX_FINALIZING_LENGTH)) {
++ padlock_sha1(aligned, data, total, len);
++ memcpy(&c->h0, aligned, 5 * sizeof(SHA_LONG));
++ c->num = -1;
++ return 1;
++ }
++
++ /* Use nonfinalizing update */
++ n = len / SHA_CBLOCK;
++ if (n != 0) {
++ padlock_sha1_partial(aligned, data, n);
++ data += n * SHA_CBLOCK;
++ len -= n * SHA_CBLOCK;
++ }
++ memcpy(&c->h0, aligned, 5 * sizeof(SHA_LONG));
++
++ /* Buffer remaining bytes */
++ if (len) {
++ memcpy(c->data, data, len);
++ c->num = len;
++ }
++
++ return 1;
++}
++
++static int padlock_sha1_final(EVP_MD_CTX *ctx, unsigned char *md)
++{
++ unsigned char hwctx[PADLOCK_SHA_HWCTX];
++ uint32_t *aligned = PADLOCK_SHA_ALIGN(hwctx);
++ uint64_t total;
++ SHA_CTX *c = ctx->md_data;
++
++ if (c->num == -1) {
++ padlock_copy_bswap(md, &c->h0, 5);
++ c->num = 0;
++ return 1;
++ }
++
++ total = (((uint_fast64_t) c->Nh) << 29) + (c->Nl >> 3);
++#if PADLOCK_NEED_FALLBACK_SHA
++ if ((!PADLOCK_HAVE_NANO) && (total > PADLOCK_MAX_FINALIZING_LENGTH))
++ return SHA1_Final(md, c);
++#endif
++
++ memcpy(aligned, &c->h0, 5 * sizeof(SHA_LONG));
++ if (total > PADLOCK_MAX_FINALIZING_LENGTH) {
++ unsigned char padding[2 * SHA_CBLOCK];
++ unsigned long n;
++
++ n = padlock_sha_prepare_padding(ctx, padding,
++ (unsigned char *) c->data, c->num, total << 3);
++ padlock_sha1_partial(aligned, padding, n);
++ } else {
++ padlock_sha1(aligned, c->data, total, c->num);
++ }
++ padlock_copy_bswap(md, aligned, 5);
++ c->num = 0;
++
++ return 1;
++}
++
++static EVP_MD padlock_sha1_md = {
++ NID_sha1,
++ NID_sha1WithRSAEncryption,
++ SHA_DIGEST_LENGTH,
++ EVP_MD_FLAG_PKEY_METHOD_SIGNATURE,
++ padlock_sha1_init,
++ padlock_sha1_update,
++ padlock_sha1_final,
++ NULL,
++ NULL,
++ EVP_PKEY_RSA_method,
++ SHA_CBLOCK,
++ sizeof(SHA_CTX),
++};
++
++static EVP_MD padlock_dss1_md = {
++ NID_dsa,
++ NID_dsaWithSHA1,
++ SHA_DIGEST_LENGTH,
++ 0,
++ padlock_sha1_init,
++ padlock_sha1_update,
++ padlock_sha1_final,
++ NULL,
++ NULL,
++ EVP_PKEY_DSA_method,
++ SHA_CBLOCK,
++ sizeof(SHA_CTX),
++};
++
++
++#if !defined(OPENSSL_NO_SHA256)
++
++static void
++padlock_sha256(void *hwctx, const void *buf, unsigned long total, unsigned long now)
++{
++ unsigned long pos = total - now;
++
++ asm volatile ("xsha256"
++ : "+S"(buf), "+D"(hwctx), "+a"(pos), "+c"(total)
++ : : "memory");
++}
++
++static void
++padlock_sha256_partial(void *hwctx, const void *buf, unsigned long blocks)
++{
++ asm volatile ("xsha256"
++ : "+S"(buf), "+D"(hwctx), "+c"(blocks)
++ : "a"(-1L) : "memory");
++}
++
++#if PADLOCK_NEED_FALLBACK_SHA
++
++static int padlock_sha256_update_eden(EVP_MD_CTX *ctx, const void *data,
++ size_t len)
++{
++ unsigned char hwctx[PADLOCK_SHA_HWCTX];
++ uint32_t *aligned = PADLOCK_SHA_ALIGN(hwctx);
++ SHA256_CTX *c = ctx->md_data;
++ uint_fast64_t total;
++ const unsigned char *p = data;
++ unsigned int l = 0;
++
++ /* Calculate total length (Nl,Nh) is length in bits */
++ total = (((uint_fast64_t) c->Nh) << 29) + (c->Nl >> 3);
++ total += len;
++
++ if ((ctx->flags & EVP_MD_CTX_FLAG_ONESHOT) &&
++ (total <= PADLOCK_MAX_FINALIZING_LENGTH)) {
++ if (c->num != 0) {
++ l = (len < SHA256_CBLOCK - c->num) ? len : (SHA256_CBLOCK - c->num);
++ if (!SHA256_Update(c, data, l))
++ return 0;
++ p += l;
++ if (c->num != 0) {
++ p = (unsigned char *) c->data;
++ len = c->num;
++ l = 0;
++ }
++ }
++ memcpy(aligned, c->h, sizeof(c->h));
++ padlock_sha256(aligned, p, total, len - l);
++ memcpy(c->h, aligned, sizeof(c->h));
++ c->num = -1;
++ return 1;
++ }
++
++ return SHA256_Update(c, data, len);
++}
++
++#endif
++
++static int padlock_sha256_update(EVP_MD_CTX *ctx, const void *data,
++ size_t len)
++{
++ unsigned char hwctx[PADLOCK_SHA_HWCTX];
++ uint32_t *aligned = PADLOCK_SHA_ALIGN(hwctx);
++ SHA256_CTX *c = ctx->md_data;
++ uint_fast64_t total;
++ unsigned char *p;
++ unsigned long n;
++
++ /* Calculate total length (Nl,Nh) is length in bits */
++ total = (((uint_fast64_t) c->Nh) << 29) + (c->Nl >> 3);
++ total += len;
++ c->Nh = total >> 29;
++ c->Nl = (total << 3) & 0xffffffffUL;
++
++ memcpy(aligned, c->h, sizeof(c->h));
++
++ /* Check partial data */
++ n = c->num;
++ if (n) {
++ p = (unsigned char *) c->data;
++ if (len >= SHA256_CBLOCK || len+n >= SHA256_CBLOCK) {
++ memcpy(p+n, data, SHA256_CBLOCK-n);
++ padlock_sha256_partial(aligned, p, 1);
++ n = SHA256_CBLOCK - n;
++ data += n;
++ len -= n;
++ c->num = 0;
++ memset(p, 0, SHA256_CBLOCK);
++ } else {
++ memcpy(p+n, data, len);
++ c->num += (unsigned int)len;
++ return 1;
++ }
++ }
++
++ /* Can we finalize straight away? */
++ if ((ctx->flags & EVP_MD_CTX_FLAG_ONESHOT) &&
++ (total <= PADLOCK_MAX_FINALIZING_LENGTH)) {
++ padlock_sha256(aligned, data, total, len);
++ memcpy(c->h, aligned, sizeof(c->h));
++ c->num = -1;
++ return 1;
++ }
++
++ /* Use nonfinalizing update */
++ n = len / SHA256_CBLOCK;
++ if (n != 0) {
++ padlock_sha256_partial(aligned, data, n);
++ data += n * SHA256_CBLOCK;
++ len -= n * SHA256_CBLOCK;
++ }
++ memcpy(c->h, aligned, sizeof(c->h));
++
++ /* Buffer remaining bytes */
++ if (len) {
++ memcpy(c->data, data, len);
++ c->num = len;
++ }
++
++ return 1;
++}
++
++static int padlock_sha256_final(EVP_MD_CTX *ctx, unsigned char *md)
++{
++ unsigned char hwctx[PADLOCK_SHA_HWCTX];
++ uint32_t *aligned = PADLOCK_SHA_ALIGN(hwctx);
++ uint64_t total;
++ SHA256_CTX *c = ctx->md_data;
++
++ if (c->num == -1) {
++ padlock_copy_bswap(md, c->h, sizeof(c->h)/sizeof(c->h[0]));
++ c->num = 0;
++ return 1;
++ }
++
++ total = (((uint_fast64_t) c->Nh) << 29) + (c->Nl >> 3);
++#if PADLOCK_NEED_FALLBACK_SHA
++ if ((!PADLOCK_HAVE_NANO) && (total > PADLOCK_MAX_FINALIZING_LENGTH))
++ return SHA256_Final(md, c);
++#endif
++
++ memcpy(aligned, c->h, sizeof(c->h));
++ if (total > PADLOCK_MAX_FINALIZING_LENGTH) {
++ unsigned char padding[2 * SHA_CBLOCK];
++ unsigned long n;
++
++ n = padlock_sha_prepare_padding(ctx, padding,
++ (unsigned char *) c->data, c->num, total << 3);
++ padlock_sha256_partial(aligned, padding, n);
++ } else {
++ padlock_sha256(aligned, c->data, total, c->num);
++ }
++ padlock_copy_bswap(md, aligned, sizeof(c->h)/sizeof(c->h[0]));
++ c->num = 0;
++ return 1;
++}
++
++#if !defined(OPENSSL_NO_SHA224)
++
++static int padlock_sha224_init(EVP_MD_CTX *ctx)
++{
++ return SHA224_Init(ctx->md_data);
++}
++
++static EVP_MD padlock_sha224_md = {
++ NID_sha224,
++ NID_sha224WithRSAEncryption,
++ SHA224_DIGEST_LENGTH,
++ 0,
++ padlock_sha224_init,
++ padlock_sha256_update,
++ padlock_sha256_final,
++ NULL,
++ NULL,
++ EVP_PKEY_RSA_method,
++ SHA_CBLOCK,
++ sizeof(SHA256_CTX),
++};
++#endif /* !OPENSSL_NO_SHA224 */
++
++static int padlock_sha256_init(EVP_MD_CTX *ctx)
++{
++ return SHA256_Init(ctx->md_data);
++}
++
++static EVP_MD padlock_sha256_md = {
++ NID_sha256,
++ NID_sha256WithRSAEncryption,
++ SHA256_DIGEST_LENGTH,
++ 0,
++ padlock_sha256_init,
++ padlock_sha256_update,
++ padlock_sha256_final,
++ NULL,
++ NULL,
++ EVP_PKEY_RSA_method,
++ SHA_CBLOCK,
++ sizeof(SHA256_CTX),
++};
++#endif /* !OPENSSL_NO_SHA256 */
++
++static int padlock_digest_nids[] = {
++#if !defined(OPENSSL_NO_SHA)
++ NID_sha1,
++ NID_dsa,
++#endif
++#if !defined(OPENSSL_NO_SHA256)
++#if !defined(OPENSSL_NO_SHA224)
++ NID_sha224,
++#endif
++ NID_sha256,
++#endif
++};
++
++static int padlock_digest_nids_num = sizeof(padlock_digest_nids)/sizeof(padlock_digest_nids[0]);
++
++static int
++padlock_digests (ENGINE *e, const EVP_MD **digest, const int **nids, int nid)
++{
++ /* No specific digest => return a list of supported nids ... */
++ if (!digest) {
++ *nids = padlock_digest_nids;
++ return padlock_digest_nids_num;
++ }
++
++ /* ... or the requested "digest" otherwise */
++ switch (nid) {
++#if !defined(OPENSSL_NO_SHA)
++ case NID_sha1:
++ *digest = &padlock_sha1_md;
++ break;
++ case NID_dsa:
++ *digest = &padlock_dss1_md;
++ break;
++#endif
++#if !defined(OPENSSL_NO_SHA256)
++#if !defined(OPENSSL_NO_SHA224)
++ case NID_sha224:
++ *digest = &padlock_sha224_md;
++ break;
++#endif /* OPENSSL_NO_SHA224 */
++ case NID_sha256:
++ *digest = &padlock_sha256_md;
++ break;
++#endif /* OPENSSL_NO_SHA256 */
++ default:
++ /* Sorry, we don't support this NID */
++ *digest = NULL;
++ return 0;
++ }
++
++ return 1;
++}
++
++#endif /* OPENSSL_NO_SHA */
++
++#ifndef PADLOCK_NO_RNG
++
+ /* ===== Random Number Generator ===== */
+ /*
+ * This code is not engaged. The reason is that it does not comply
+@@ -1356,6 +1868,59 @@ static RAND_METHOD padlock_rand = {
+ padlock_rand_bytes, /* pseudorand */
+ padlock_rand_status, /* rand status */
+ };
++#endif /* PADLOCK_NO_RNG */
++
++/* Prepare the ENGINE structure for registration */
++static int
++padlock_bind_helper(ENGINE *e)
++{
++ /* Check available features */
++ padlock_available();
++
++ /* Generate a nice engine name with available features */
++ BIO_snprintf(padlock_name, sizeof(padlock_name),
++ "VIA PadLock: %s%s%s%s%s%s",
++ padlock_flags ? "" : "not supported",
++ PADLOCK_HAVE_RNG ? "RNG " : "",
++ PADLOCK_HAVE_ACE ? (PADLOCK_HAVE_ACE2 ? "ACE2 " : "ACE ") : "",
++ PADLOCK_HAVE_PHE ? "PHE " : "",
++ PADLOCK_HAVE_PMM ? "PMM " : "",
++ PADLOCK_HAVE_NANO ? "NANO " : ""
++ );
++
++#if PADLOCK_NEED_FALLBACK_SHA && !defined(OPENSSL_NO_SHA)
++ if (!PADLOCK_HAVE_NANO) {
++ padlock_sha1_md.update = padlock_sha1_update_eden;
++ padlock_dss1_md.update = padlock_sha1_update_eden;
++#if !defined(OPENSSL_NO_SHA256)
++#if !defined(OPENSSL_NO_SHA224)
++ padlock_sha224_md.update = padlock_sha256_update_eden;
++#endif
++ padlock_sha256_md.update = padlock_sha256_update_eden;
++#endif
++ }
++#endif
++
++ /* Register everything or return with an error */
++ if (!ENGINE_set_id(e, padlock_id) ||
++ !ENGINE_set_name(e, padlock_name) ||
++ !ENGINE_set_init_function(e, padlock_init)
++#ifndef OPENSSL_NO_AES
++ || (PADLOCK_HAVE_ACE && !ENGINE_set_ciphers (e, padlock_ciphers))
++#endif
++#ifndef OPENSSL_NO_SHA
++ || (PADLOCK_HAVE_PHE && !ENGINE_set_digests (e, padlock_digests))
++#endif
++#ifndef PADLOCK_NO_RNG
++ || (PADLOCK_HAVE_RNG && !ENGINE_set_RAND (e, &padlock_rand))
++#endif
++ ) {
++ return 0;
++ }
++
++ /* Everything looks good */
++ return 1;
++}
+
+ # else /* !COMPILE_HW_PADLOCK */
+ # ifndef OPENSSL_NO_DYNAMIC_ENGINE
+--
+2.2.2
+
diff --git a/system/openssl/1004-crypto-engine-autoload-padlock-dynamic-engine.patch b/system/openssl/1004-crypto-engine-autoload-padlock-dynamic-engine.patch
new file mode 100644
index 000000000..66f37451e
--- /dev/null
+++ b/system/openssl/1004-crypto-engine-autoload-padlock-dynamic-engine.patch
@@ -0,0 +1,33 @@
+From a58658f191e83f4c6417d2cc879fa572f7978537 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 4 Feb 2016 16:28:15 +0100
+Subject: [PATCH] crypto/engine: autoload padlock dynamic engine
+
+---
+ crypto/engine/eng_all.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/crypto/engine/eng_all.c b/crypto/engine/eng_all.c
+index 48ad0d2..822aa23 100644
+--- a/crypto/engine/eng_all.c
++++ b/crypto/engine/eng_all.c
+@@ -120,6 +120,16 @@ void ENGINE_load_builtin_engines(void)
+ ENGINE_load_capi();
+ # endif
+ #endif
++#ifdef OPENSSL_NO_STATIC_ENGINE
++ {
++ ENGINE *e = ENGINE_by_id("padlock");
++ if (e != NULL) {
++ ENGINE_add(e);
++ ENGINE_free(e);
++ ERR_clear_error();
++ }
++ }
++#endif
+ ENGINE_register_all_complete();
+ }
+
+--
+2.7.0
+
diff --git a/system/openssl/APKBUILD b/system/openssl/APKBUILD
new file mode 100644
index 000000000..da5f61799
--- /dev/null
+++ b/system/openssl/APKBUILD
@@ -0,0 +1,151 @@
+# Maintainer: Timo Teras <timo.teras@iki.fi>
+pkgname=openssl
+pkgver=1.0.2n
+pkgrel=0
+pkgdesc="Toolkit for SSL v2/v3 and TLS v1"
+url="http://openssl.org"
+depends=
+makedepends_build="perl"
+makedepends_host="zlib-dev"
+makedepends="$makedepends_host $makedepends_build"
+depends_dev="zlib-dev"
+checkdepends="perl"
+provides="libressl=9999"
+arch="all"
+license="openssl"
+
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc libcrypto1.0:libcrypto libssl1.0:libssl"
+
+source="http://www.openssl.org/source/${pkgname}-${pkgver}.tar.gz
+ 0002-busybox-basename.patch
+ 0003-use-termios.patch
+ 0004-fix-default-ca-path-for-apps.patch
+ 0005-fix-parallel-build.patch
+ 0006-add-ircv3-tls-3.1-extension-support-to-s_client.patch
+ 0008-maintain-abi-compat-with-no-freelist-and-regular-bui.patch
+ 0009-no-rpath.patch
+ 0010-ssl-env-zlib.patch
+ 1001-crypto-hmac-support-EVP_MD_CTX_FLAG_ONESHOT-and-set-.patch
+ 1002-backport-changes-from-upstream-padlock-module.patch
+ 1003-engines-e_padlock-implement-sha1-sha224-sha256-accel.patch
+ "
+
+# secfixes:
+# 1.0.2h-r0:
+# - CVE-2016-2107
+# - CVE-2016-2105
+# - CVE-2016-2106
+# - CVE-2016-2109
+# - CVE-2016-2176
+# 1.0.2h-r1:
+# - CVE-2016-2177
+# - CVE-2016-2178
+# 1.0.2h-r2:
+# - CVE-2016-2180
+# 1.0.2h-r3:
+# - CVE-2016-2179
+# - CVE-2016-2182
+# - CVE-2016-6302
+# - CVE-2016-6303
+# 1.0.2h-r4:
+# - CVE-2016-2181
+# 1.0.2i-r0:
+# - CVE-2016-2183
+# - CVE-2016-6304
+# - CVE-2016-6306
+# 1.0.2m-r0:
+# - CVE-2017-3735
+# - CVE-2017-3736
+# 1.0.2n-r0:
+# - CVE-2017-3737
+# - CVE-2017-3738
+
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ local _target _optflags
+ cd "$builddir"
+
+ # openssl will prepend crosscompile always core CC et al
+ CC=${CC#${CROSS_COMPILE}}
+ CXX=${CXX#${CROSS_COMPILE}}
+ CPP=${CPP#${CROSS_COMPILE}}
+
+ # determine target OS for openssl
+ case "$CARCH" in
+ aarch64*) _target="linux-aarch64" ;;
+ arm*) _target="linux-armv4" ;;
+ ppc) _target="linux-ppc" ;;
+ ppc64) _target="linux-ppc64"; _optflags="no-asm" ;;
+ ppc64le) _target="linux-ppc64le" ;;
+ i528 | pmmx | x86) _target="linux-elf" ;;
+ x86_64) _target="linux-x86_64"; _optflags="enable-ec_nistp_64_gcc_128" ;;
+ s390x) _target="linux64-s390x";;
+ *) msg "Unable to determine architecture from (CARCH=$CARCH)" ; return 1 ;;
+ esac
+
+ # Configure assumes --options are for it, so can't use
+ # gcc's --sysroot fake this by overriding CC
+ [ -n "$CBUILDROOT" ] && CC="$CC --sysroot=${CBUILDROOT}"
+
+ perl ./Configure $_target --prefix=/usr \
+ --libdir=lib \
+ --openssldir=/etc/ssl \
+ shared zlib enable-montasm enable-md2 $_optflags \
+ -DOPENSSL_NO_BUF_FREELISTS \
+ $CPPFLAGS $CFLAGS $LDFLAGS -Wa,--noexecstack \
+ enable-ssl2
+
+ make && make build-shared
+}
+
+check() {
+ cd "$builddir"
+ make -j1 test
+}
+
+package() {
+ cd "$builddir"
+ make INSTALL_PREFIX="$pkgdir" MANDIR=/usr/share/man MANSUFFIX=ssl install
+ # remove the script c_rehash
+ rm "$pkgdir"/usr/bin/c_rehash
+}
+
+libcrypto() {
+ pkgdesc="Crypto library from openssl"
+
+ mkdir -p "$subpkgdir"/lib "$subpkgdir"/usr/lib
+ for i in "$pkgdir"/usr/lib/libcrypto*; do
+ mv $i "$subpkgdir"/lib/
+ ln -s ../../lib/${i##*/} "$subpkgdir"/usr/lib/${i##*/}
+ done
+ mv "$pkgdir"/usr/lib/engines "$subpkgdir"/usr/lib/
+}
+
+libssl() {
+ pkgdesc="SSL shared libraries"
+
+ mkdir -p "$subpkgdir"/lib "$subpkgdir"/usr/lib
+ for i in "$pkgdir"/usr/lib/libssl*; do
+ mv $i "$subpkgdir"/lib/
+ ln -s ../../lib/${i##*/} "$subpkgdir"/usr/lib/${i##*/}
+ done
+}
+
+dev() {
+ provides="libressl-dev=9999"
+ default_dev
+}
+
+sha512sums="144bf0d6aa27b4af01df0b7b734c39962649e1711554247d42e05e14d8945742b18745aefdba162e2dfc762b941fd7d3b2d5dc6a781ae4ba10a6f5a3cadb0687 openssl-1.0.2n.tar.gz
+2244f46cb18e6b98f075051dd2446c47f7590abccd108fbab707f168a20cad8d32220d704635973f09e3b2879f523be5160f1ffbc12ab3900f8a8891dc855c5c 0002-busybox-basename.patch
+58e42058a0c8086c49d681b1e226da39a8cf8cb88c51cf739dec2ff12e1bb5d7208ac5033264b186d58e9bdfe992fe9ddb95701d01caf1824396b2cefe30c0a4 0003-use-termios.patch
+c67472879a31b5dbdd313892df6d37e7c93e8c0237d406c30d50b1016c2618ead3c13277f5dc723ef1ceed092d36e3c15a9777daa844f59b9fa2b0a4f04fd9ae 0004-fix-default-ca-path-for-apps.patch
+5d4191482f8bbf62c75fe6bc2d9587388022c3310703c2a913788a983b1d1406e706cf3916a5792604f0b0f220a87432d3b82b442cea9915f2abb6fdd8478fcb 0005-fix-parallel-build.patch
+820d4ce1c222696fe3f1dd0d11815c06262ec230fdb174532fd507286667a0aefbf858ea5edac4245a54b950cd0556545ecd0c5cf494692a2ba131c667e7bcd5 0006-add-ircv3-tls-3.1-extension-support-to-s_client.patch
+17ad683bb91a3a3c5bcc456c8aed7f0b42414c6de06ebafa4753af93c42d9827c9978a43d4d53d741a45df7f7895c6f6163172af57cc7b391cfd15f45ce6c351 0008-maintain-abi-compat-with-no-freelist-and-regular-bui.patch
+5dbbc01985190ae1254350fb12565beb6abb916b6a7bb1f0f22d9762b1e575d124aaf9aa4cfe5f908e420978f691072d48c61a72660f09dfd6d9a2f83f862bc1 0009-no-rpath.patch
+5febe20948e3f12d981e378e1f4ea538711657aacb6865a1aa91339d4a04277e250f490a1f2abc2c6f290bdc2b1bffdba1d00983b4c09f7ea983eef8163f9420 0010-ssl-env-zlib.patch
+8c181760d7a149aa18d246d50f1c0438ffb63c98677b05306dfc00400ad0429b47d31e7c8d85126005c67f743d23e7a8a81174ffe98556f4caf9cf6b04d9ff17 1001-crypto-hmac-support-EVP_MD_CTX_FLAG_ONESHOT-and-set-.patch
+a3555440b5f544bfd6b9ad97557d8f4c1d673f6a35219f65056a72035d186be5f354717ddf9784899b602464d48657b090ade24379552d43af97609c0f48c389 1002-backport-changes-from-upstream-padlock-module.patch
+6353c7a94016c20db5d683dde37775f6780952ecdb1a5f39f878d04ba37f6ad79ae10fb6d65d181d912505a5d1e22463004cd855d548b364c00b120da2b0fdbc 1003-engines-e_padlock-implement-sha1-sha224-sha256-accel.patch"
diff --git a/system/polkit/0001-Bug-50145-make-netgroup-support-optional.patch b/system/polkit/0001-Bug-50145-make-netgroup-support-optional.patch
new file mode 100644
index 000000000..1498e831a
--- /dev/null
+++ b/system/polkit/0001-Bug-50145-make-netgroup-support-optional.patch
@@ -0,0 +1,108 @@
+From 2428beec9189bb93e6e1fdd5bdde35acf5279a03 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Sun, 20 May 2012 15:42:56 +0200
+Subject: [PATCH] Bug 50145 - make netgroup support optional
+
+https://bugs.freedesktop.org/show_bug.cgi?id=50145
+
+netgroups are not defined in POSIX and are not be available on
+all systems.
+
+We check for getnetgrent in configure script.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ configure.ac | 2 +-
+ src/polkitbackend/polkitbackendlocalauthority.c | 8 ++++++--
+ src/polkitbackend/polkitbackendlocalauthorizationstore.c | 3 ++-
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index f325922..711aa7c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -141,7 +141,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
+ [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
+ AC_SUBST(EXPAT_LIBS)
+
+-AC_CHECK_FUNCS(clearenv)
++AC_CHECK_FUNCS(clearenv getnetgrent)
+
+ if test "x$GCC" = "xyes"; then
+ LDFLAGS="-Wl,--as-needed $LDFLAGS"
+diff --git a/src/polkitbackend/polkitbackendlocalauthority.c b/src/polkitbackend/polkitbackendlocalauthority.c
+index b53eda3..f14e924 100644
+--- a/src/polkitbackend/polkitbackendlocalauthority.c
++++ b/src/polkitbackend/polkitbackendlocalauthority.c
+@@ -52,9 +52,10 @@
+
+ static GList *get_users_in_group (PolkitIdentity *group,
+ gboolean include_root);
+-
++#if defined HAVE_GETNETGRENT
+ static GList *get_users_in_net_group (PolkitIdentity *group,
+ gboolean include_root);
++#endif
+
+ static GList *get_groups_for_user (PolkitIdentity *user);
+
+@@ -511,10 +512,12 @@ polkit_backend_local_authority_get_admin_auth_identities (PolkitBackendInteracti
+ {
+ ret = g_list_concat (ret, get_users_in_group (identity, FALSE));
+ }
++#if defined HAVE_GETNETGRENT
+ else if (POLKIT_IS_UNIX_NETGROUP (identity))
+ {
+ ret = g_list_concat (ret, get_users_in_net_group (identity, FALSE));
+ }
++#endif
+ else
+ {
+ g_warning ("Unsupported identity %s", admin_identities[n]);
+@@ -690,6 +693,7 @@ get_users_in_group (PolkitIdentity *group,
+ return ret;
+ }
+
++#if defined HAVE_GETNETGRENT
+ static GList *
+ get_users_in_net_group (PolkitIdentity *group,
+ gboolean include_root)
+@@ -741,7 +745,7 @@ get_users_in_net_group (PolkitIdentity *group,
+ endnetgrent ();
+ return ret;
+ }
+-
++#endif
+
+ static GList *
+ get_groups_for_user (PolkitIdentity *user)
+diff --git a/src/polkitbackend/polkitbackendlocalauthorizationstore.c b/src/polkitbackend/polkitbackendlocalauthorizationstore.c
+index 2ddfe75..02553c4 100644
+--- a/src/polkitbackend/polkitbackendlocalauthorizationstore.c
++++ b/src/polkitbackend/polkitbackendlocalauthorizationstore.c
+@@ -725,6 +725,7 @@ polkit_backend_local_authorization_store_lookup (PolkitBackendLocalAuthorization
+ break;
+ }
+
++#if defined HAVE_GETNETGRENT
+ /* if no identity specs matched and identity is a user, match against netgroups */
+ if (ll == NULL && POLKIT_IS_UNIX_USER (identity))
+ {
+@@ -732,13 +733,13 @@ polkit_backend_local_authorization_store_lookup (PolkitBackendLocalAuthorization
+ const gchar *user_name = polkit_unix_user_get_name (user_identity);
+ if (!user_name)
+ continue;
+-
+ for (ll = authorization->netgroup_identities; ll != NULL; ll = ll->next)
+ {
+ if (innetgr ((const gchar *) ll->data, NULL, user_name, NULL))
+ break;
+ }
+ }
++#endif
+
+ if (ll == NULL)
+ continue;
+--
+1.7.10.2
+
diff --git a/system/polkit/APKBUILD b/system/polkit/APKBUILD
new file mode 100644
index 000000000..fdc37d634
--- /dev/null
+++ b/system/polkit/APKBUILD
@@ -0,0 +1,80 @@
+# Contributor: Carlo Landmeter
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=polkit
+pkgver=0.105
+pkgrel=8
+pkgdesc="Application development toolkit for controlling system-wide privileges"
+url="http://www.freedesktop.org/wiki/Software/polkit/"
+arch="all"
+license="LGPL"
+depends=
+options="suid"
+depends_dev="eggdbus-dev dbus-glib-dev linux-pam-dev"
+makedepends="$depends_dev expat-dev glib-dev gtk-doc gobject-introspection-dev
+ intltool autoconf automake libtool"
+install=
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="http://www.freedesktop.org/software/polkit/releases/polkit-$pkgver.tar.gz
+ 0001-Bug-50145-make-netgroup-support-optional.patch
+ CVE-2013-4288.patch
+ CVE-2015-3218.patch
+ CVE-2015-3255.patch
+ CVE-2015-4625.patch
+ automake.patch
+ fix-parallel-make.patch
+ fix-consolekit-db-stat.patch
+ fix-test-fgetpwent.patch
+ disable-ck-test.patch
+"
+
+prepare() {
+ cd "$builddir"
+ update_config_sub
+ default_prepare
+ libtoolize --force && aclocal && autoconf && automake --add-missing
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --libexecdir=/usr/lib/polkit-1 \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-nls \
+ --enable-introspection \
+ --with-os-type=alpine \
+ --with-pam-include=base-auth \
+ --disable-gtk-doc \
+ --disable-gtk-doc-html \
+ --disable-gtk-doc-pdf
+
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7c0f84b9639814b4690e42b570285ff2018a5ea4cfd7216d9abf44c84ece6592c530f2d6211511c1346963daf4f135e9fa79d1b2f592b454115950991b5e4bc3 polkit-0.105.tar.gz
+09ca9c14044c0a281e9069919efbb6d14918f23f58a282b5ce25c8a6640966396904373822869fe994c711f40c33d5c34cf3b77f85a59e239ba3d0c22a31ca8e 0001-Bug-50145-make-netgroup-support-optional.patch
+d6de3beb063243c11906f525ef2eb65aeca823c25b1f44dde4a16f4fc2c5ce587b129e0bfb25a4a4b88ac2bf5713c47e57700c139323d961c9f9b6ba4c03fffb CVE-2013-4288.patch
+625be61ca38267508bb360002c410414f7ca814487f4a51257906118731e208be0c90d21f45ac90fd9f64f2f5937fa1e312d6900179853fabbaaf5e75073c82c CVE-2015-3218.patch
+0b26b819da0b34f10ff8a768850560b3207a6e10a7141bd1aa4769c1cb2829eb110164974b99d993d4e3a62145ace0fc5375489f84d2b56fe08e3430e3232aa8 CVE-2015-3255.patch
+32ecc38db938fc1e3d14ffd9c492d12a42a91750e0eb1f66f8346d0cefd6e18fd0dffac8bffc65578cfb56c9598d3b336721477e8496de2619d6d69f1a6b309e CVE-2015-4625.patch
+25465a23332247d0873e24cb5f011a267413615526755a8295a6367d64fc5eb8c2aa3c9c1fdcfa183b39e3ece14f33b25f15a339d966a31f3feb861b3f17adbf automake.patch
+6b0d9262ba8b3c000acdcc8c86bd6fc043e5750a0155730638d4e3a92e63f43cb476d63b11856c041d60d8f38f7eb5ada0eb0eced9100bdac3bc2c7dd5108ddd fix-parallel-make.patch
+95493ef842b46ce9e724933a5d86083589075fb452435057b8f629643cac7c7eff67a24fd188087987e98057f0130757fad546d0c090767da3d71ebaf8485a24 fix-consolekit-db-stat.patch
+966825aded565432f4fda9e54113a773b514ebf7ee7faa83bcb8b97d218ae84a8707d6747bbc3cb8a828638d692fdef34c05038f150ad38e02a29f2c782aba5b fix-test-fgetpwent.patch
+f73ab05ab5fdc90d3961fdcf88fa57eee8c90af4960b20d7ac845d2395c4cc20873ddc72bfd00fd127471336807faa705d0845444a0218343e74063e8f190980 disable-ck-test.patch"
diff --git a/system/polkit/CVE-2013-4288.patch b/system/polkit/CVE-2013-4288.patch
new file mode 100644
index 000000000..0ca8131e8
--- /dev/null
+++ b/system/polkit/CVE-2013-4288.patch
@@ -0,0 +1,123 @@
+From a3fa3b86f0015e42a534526ed800bcde5b3f2a15 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Mon, 19 Aug 2013 12:16:11 -0400
+Subject: [PATCH] pkcheck: Support --process=pid,start-time,uid syntax too
+
+The uid is a new addition; this allows callers such as libvirt to
+close a race condition in reading the uid of the process talking to
+them. They can read it via getsockopt(SO_PEERCRED) or equivalent,
+rather than having pkcheck look at /proc later after the fact.
+
+Programs which invoke pkcheck but need to know beforehand (i.e. at
+compile time) whether or not it supports passing the uid can
+use:
+
+pkcheck_supports_uid=$($PKG_CONFIG --variable pkcheck_supports_uid polkit-gobject-1)
+test x$pkcheck_supports_uid = xyes
+
+Conflicts:
+ docs/man/pkcheck.xml
+ src/programs/pkcheck.c
+---
+ data/polkit-gobject-1.pc.in | 3 +++
+ docs/man/pkcheck.xml | 33 +++++++++++++++++++++------------
+ src/programs/pkcheck.c | 7 ++++++-
+ 3 files changed, 30 insertions(+), 13 deletions(-)
+
+diff --git a/data/polkit-gobject-1.pc.in b/data/polkit-gobject-1.pc.in
+index c39677d..5c4c620 100644
+--- a/data/polkit-gobject-1.pc.in
++++ b/data/polkit-gobject-1.pc.in
+@@ -11,3 +11,6 @@ Version: @VERSION@
+ Libs: -L${libdir} -lpolkit-gobject-1
+ Cflags: -I${includedir}/polkit-1
+ Requires: gio-2.0 >= 2.18 glib-2.0 >= 2.18
++# Programs using pkcheck can use this to determine
++# whether or not it can be passed a uid.
++pkcheck_supports_uid=true
+diff --git a/docs/man/pkcheck.xml b/docs/man/pkcheck.xml
+index 6b8a874..9f2faef 100644
+--- a/docs/man/pkcheck.xml
++++ b/docs/man/pkcheck.xml
+@@ -55,6 +55,9 @@
+ <arg choice="plain">
+ <replaceable>pid,pid-start-time</replaceable>
+ </arg>
++ <arg choice="plain">
++ <replaceable>pid,pid-start-time,uid</replaceable>
++ </arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+@@ -90,7 +93,7 @@
+ <title>DESCRIPTION</title>
+ <para>
+ <command>pkcheck</command> is used to check whether a process, specified by
+- either <option>--process</option> or <option>--system-bus-name</option>,
++ either <option>--process</option> (see below) or <option>--system-bus-name</option>,
+ is authorized for <replaceable>action</replaceable>. The <option>--detail</option>
+ option can be used zero or more times to pass details about <replaceable>action</replaceable>.
+ If <option>--allow-user-interaction</option> is passed, <command>pkcheck</command> blocks
+@@ -160,17 +163,23 @@ KEY3=VALUE3
+ <refsect1 id="pkcheck-notes">
+ <title>NOTES</title>
+ <para>
+- Since process identifiers can be recycled, the caller should always use
+- <replaceable>pid,pid-start-time</replaceable> to specify the process
+- to check for authorization when using the <option>--process</option> option.
+- The value of <replaceable>pid-start-time</replaceable>
+- can be determined by consulting e.g. the
+- <citerefentry>
+- <refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum>
+- </citerefentry>
+- file system depending on the operating system. If only <replaceable>pid</replaceable>
+- is passed to the <option>--process</option> option, then <command>pkcheck</command>
+- will look up the start time itself but note that this may be racy.
++ Do not use either the bare <replaceable>pid</replaceable> or
++ <replaceable>pid,start-time</replaceable> syntax forms for
++ <option>--process</option>. There are race conditions in both.
++ New code should always use
++ <replaceable>pid,pid-start-time,uid</replaceable>. The value of
++ <replaceable>start-time</replaceable> can be determined by
++ consulting e.g. the
++ <citerefentry><refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++ file system depending on the operating system. If fewer than 3
++ arguments are passed, <command>pkcheck</command> will attempt to
++ look up them up internally, but note that this may be racy.
++ </para>
++ <para>
++ If your program is a daemon with e.g. a custom Unix domain
++ socket, you should determine the <replaceable>uid</replaceable>
++ parameter via operating system mechanisms such as
++ <literal>PEERCRED</literal>.
+ </para>
+ </refsect1>
+
+diff --git a/src/programs/pkcheck.c b/src/programs/pkcheck.c
+index 719a36c..057e926 100644
+--- a/src/programs/pkcheck.c
++++ b/src/programs/pkcheck.c
+@@ -372,6 +372,7 @@ main (int argc, char *argv[])
+ else if (g_strcmp0 (argv[n], "--process") == 0 || g_strcmp0 (argv[n], "-p") == 0)
+ {
+ gint pid;
++ guint uid;
+ guint64 pid_start_time;
+
+ n++;
+@@ -381,7 +382,11 @@ main (int argc, char *argv[])
+ goto out;
+ }
+
+- if (sscanf (argv[n], "%i,%" G_GUINT64_FORMAT, &pid, &pid_start_time) == 2)
++ if (sscanf (argv[n], "%i,%" G_GUINT64_FORMAT ",%u", &pid, &pid_start_time, &uid) == 3)
++ {
++ subject = polkit_unix_process_new_for_owner (pid, pid_start_time, uid);
++ }
++ else if (sscanf (argv[n], "%i,%" G_GUINT64_FORMAT, &pid, &pid_start_time) == 2)
+ {
+ subject = polkit_unix_process_new_full (pid, pid_start_time);
+ }
+--
+1.8.5.1
+
diff --git a/system/polkit/CVE-2015-3218.patch b/system/polkit/CVE-2015-3218.patch
new file mode 100644
index 000000000..977825102
--- /dev/null
+++ b/system/polkit/CVE-2015-3218.patch
@@ -0,0 +1,115 @@
+From 48e646918efb2bf0b3b505747655726d7869f31c Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@redhat.com>
+Date: Sat, 30 May 2015 09:06:23 -0400
+Subject: CVE-2015-3218: backend: Handle invalid object paths in
+ RegisterAuthenticationAgent
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Properly propagate the error, otherwise we dereference a `NULL`
+pointer. This is a local, authenticated DoS.
+
+`RegisterAuthenticationAgentWithOptions` and
+`UnregisterAuthentication` have been validated to not need changes for
+this.
+
+http://lists.freedesktop.org/archives/polkit-devel/2015-May/000420.html
+https://bugs.freedesktop.org/show_bug.cgi?id=90829
+
+Reported-by: Tavis Ormandy <taviso@google.com>
+Reviewed-by: Philip Withnall <philip@tecnocode.co.uk>
+Reviewed-by: Miloslav Trmač <mitr@redhat.com>
+Signed-off-by: Colin Walters <walters@redhat.com>
+
+diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
+index f6ea0fc..587f954 100644
+--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
++++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
+@@ -1566,36 +1566,42 @@ authentication_agent_new (PolkitSubject *scope,
+ const gchar *unique_system_bus_name,
+ const gchar *locale,
+ const gchar *object_path,
+- GVariant *registration_options)
++ GVariant *registration_options,
++ GError **error)
+ {
+ AuthenticationAgent *agent;
+- GError *error;
++ GDBusProxy *proxy;
+
+- agent = g_new0 (AuthenticationAgent, 1);
++ if (!g_variant_is_object_path (object_path))
++ {
++ g_set_error (error, POLKIT_ERROR, POLKIT_ERROR_FAILED,
++ "Invalid object path '%s'", object_path);
++ return NULL;
++ }
++
++ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
++ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
++ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
++ NULL, /* GDBusInterfaceInfo* */
++ unique_system_bus_name,
++ object_path,
++ "org.freedesktop.PolicyKit1.AuthenticationAgent",
++ NULL, /* GCancellable* */
++ error);
++ if (proxy == NULL)
++ {
++ g_prefix_error (error, "Failed to construct proxy for agent: " );
++ return NULL;
++ }
+
++ agent = g_new0 (AuthenticationAgent, 1);
+ agent->ref_count = 1;
+ agent->scope = g_object_ref (scope);
+ agent->object_path = g_strdup (object_path);
+ agent->unique_system_bus_name = g_strdup (unique_system_bus_name);
+ agent->locale = g_strdup (locale);
+ agent->registration_options = registration_options != NULL ? g_variant_ref (registration_options) : NULL;
+-
+- error = NULL;
+- agent->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
+- G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
+- NULL, /* GDBusInterfaceInfo* */
+- agent->unique_system_bus_name,
+- agent->object_path,
+- "org.freedesktop.PolicyKit1.AuthenticationAgent",
+- NULL, /* GCancellable* */
+- &error);
+- if (agent->proxy == NULL)
+- {
+- g_warning ("Error constructing proxy for agent: %s", error->message);
+- g_error_free (error);
+- /* TODO: Make authentication_agent_new() return NULL and set a GError */
+- }
++ agent->proxy = proxy;
+
+ return agent;
+ }
+@@ -2398,8 +2404,6 @@ polkit_backend_interactive_authority_register_authentication_agent (PolkitBacken
+ caller_cmdline = NULL;
+ agent = NULL;
+
+- /* TODO: validate that object path is well-formed */
+-
+ interactive_authority = POLKIT_BACKEND_INTERACTIVE_AUTHORITY (authority);
+ priv = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_GET_PRIVATE (interactive_authority);
+
+@@ -2486,7 +2490,10 @@ polkit_backend_interactive_authority_register_authentication_agent (PolkitBacken
+ polkit_system_bus_name_get_name (POLKIT_SYSTEM_BUS_NAME (caller)),
+ locale,
+ object_path,
+- options);
++ options,
++ error);
++ if (!agent)
++ goto out;
+
+ g_hash_table_insert (priv->hash_scope_to_authentication_agent,
+ g_object_ref (subject),
+--
+cgit v0.10.2
+
diff --git a/system/polkit/CVE-2015-3255.patch b/system/polkit/CVE-2015-3255.patch
new file mode 100644
index 000000000..1bd7c6bcf
--- /dev/null
+++ b/system/polkit/CVE-2015-3255.patch
@@ -0,0 +1,67 @@
+From 9f5e0c731784003bd4d6fc75ab739ff8b2ea269f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miloslav=20Trma=C4=8D?= <mitr@redhat.com>
+Date: Wed, 1 Apr 2015 05:22:37 +0200
+Subject: CVE-2015-3255 Fix GHashTable usage.
+
+Don't assume that the hash table with free both the key and the value
+at the same time, supply proper deallocation functions for the key
+and value separately.
+
+Then drop ParsedAction::action_id which is no longer used for anything.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=69501
+and
+https://bugs.freedesktop.org/show_bug.cgi?id=83590
+
+CVE: CVE-2015-3255
+
+diff --git a/src/polkitbackend/polkitbackendactionpool.c b/src/polkitbackend/polkitbackendactionpool.c
+index bc14381..3894fe9 100644
+--- a/src/polkitbackend/polkitbackendactionpool.c
++++ b/src/polkitbackend/polkitbackendactionpool.c
+@@ -40,7 +40,6 @@
+
+ typedef struct
+ {
+- gchar *action_id;
+ gchar *vendor_name;
+ gchar *vendor_url;
+ gchar *icon_name;
+@@ -62,7 +61,6 @@ typedef struct
+ static void
+ parsed_action_free (ParsedAction *action)
+ {
+- g_free (action->action_id);
+ g_free (action->vendor_name);
+ g_free (action->vendor_url);
+ g_free (action->icon_name);
+@@ -134,7 +132,7 @@ polkit_backend_action_pool_init (PolkitBackendActionPool *pool)
+
+ priv->parsed_actions = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+- NULL,
++ g_free,
+ (GDestroyNotify) parsed_action_free);
+
+ priv->parsed_files = g_hash_table_new_full (g_str_hash,
+@@ -988,7 +986,6 @@ _end (void *data, const char *el)
+ icon_name = pd->global_icon_name;
+
+ action = g_new0 (ParsedAction, 1);
+- action->action_id = g_strdup (pd->action_id);
+ action->vendor_name = g_strdup (vendor);
+ action->vendor_url = g_strdup (vendor_url);
+ action->icon_name = g_strdup (icon_name);
+@@ -1003,7 +1000,8 @@ _end (void *data, const char *el)
+ action->implicit_authorization_inactive = pd->implicit_authorization_inactive;
+ action->implicit_authorization_active = pd->implicit_authorization_active;
+
+- g_hash_table_insert (priv->parsed_actions, action->action_id, action);
++ g_hash_table_insert (priv->parsed_actions, g_strdup (pd->action_id),
++ action);
+
+ /* we steal these hash tables */
+ pd->annotations = NULL;
+--
+cgit v0.10.2
+
diff --git a/system/polkit/CVE-2015-4625.patch b/system/polkit/CVE-2015-4625.patch
new file mode 100644
index 000000000..4a43fb433
--- /dev/null
+++ b/system/polkit/CVE-2015-4625.patch
@@ -0,0 +1,1008 @@
+From ea544ffc18405237ccd95d28d7f45afef49aca17 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@redhat.com>
+Date: Thu, 4 Jun 2015 12:15:18 -0400
+Subject: CVE-2015-4625: Use unpredictable cookie values, keep them secret
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Tavis noted that it'd be possible with a 32 bit counter for someone to
+cause the cookie to wrap by creating Authentication requests in a
+loop.
+
+Something important to note here is that wrapping of signed integers
+is undefined behavior in C, so we definitely want to fix that. All
+counter integers used in this patch are unsigned.
+
+See the comment above `authentication_agent_generate_cookie` for
+details, but basically we're now using a cookie of the form:
+
+```
+ <agent serial> - <agent random id> - <session serial> - <session
+random id>
+```
+
+Which has multiple 64 bit counters, plus unpredictable random 128 bit
+integer ids (effectively UUIDs, but we're not calling them that
+because we don't need to be globally unique.
+
+We further ensure that the cookies are not visible to other processes
+by changing the setuid helper to accept them over standard input. This
+means that an attacker would have to guess both ids.
+
+In any case, the security hole here is better fixed with the other
+change to bind user id (uid) of the agent with cookie lookups, making
+cookie guessing worthless.
+
+Nevertheless, I think it's worth doing this change too, for defense in
+depth.
+
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=90832
+CVE: CVE-2015-4625
+Reported-by: Tavis Ormandy <taviso@google.com>
+Reviewed-by: Miloslav Trmač <mitr@redhat.com>
+Signed-off-by: Colin Walters <walters@redhat.com>
+
+diff --git a/src/polkitagent/polkitagenthelper-pam.c b/src/polkitagent/polkitagenthelper-pam.c
+index 937386e..19062aa 100644
+--- a/src/polkitagent/polkitagenthelper-pam.c
++++ b/src/polkitagent/polkitagenthelper-pam.c
+@@ -65,7 +65,7 @@ main (int argc, char *argv[])
+ {
+ int rc;
+ const char *user_to_auth;
+- const char *cookie;
++ char *cookie = NULL;
+ struct pam_conv pam_conversation;
+ pam_handle_t *pam_h;
+ const void *authed_user;
+@@ -97,7 +97,7 @@ main (int argc, char *argv[])
+ openlog ("polkit-agent-helper-1", LOG_CONS | LOG_PID, LOG_AUTHPRIV);
+
+ /* check for correct invocation */
+- if (argc != 3)
++ if (!(argc == 2 || argc == 3))
+ {
+ syslog (LOG_NOTICE, "inappropriate use of helper, wrong number of arguments [uid=%d]", getuid ());
+ fprintf (stderr, "polkit-agent-helper-1: wrong number of arguments. This incident has been logged.\n");
+@@ -105,7 +105,10 @@ main (int argc, char *argv[])
+ }
+
+ user_to_auth = argv[1];
+- cookie = argv[2];
++
++ cookie = read_cookie (argc, argv);
++ if (!cookie)
++ goto error;
+
+ if (getuid () != 0)
+ {
+@@ -203,6 +206,8 @@ main (int argc, char *argv[])
+ goto error;
+ }
+
++ free (cookie);
++
+ #ifdef PAH_DEBUG
+ fprintf (stderr, "polkit-agent-helper-1: successfully sent D-Bus message to PolicyKit daemon\n");
+ #endif /* PAH_DEBUG */
+@@ -212,6 +217,7 @@ main (int argc, char *argv[])
+ return 0;
+
+ error:
++ free (cookie);
+ if (pam_h != NULL)
+ pam_end (pam_h, rc);
+
+diff --git a/src/polkitagent/polkitagenthelper-shadow.c b/src/polkitagent/polkitagenthelper-shadow.c
+index a4f73ac..e877915 100644
+--- a/src/polkitagent/polkitagenthelper-shadow.c
++++ b/src/polkitagent/polkitagenthelper-shadow.c
+@@ -46,7 +46,7 @@ main (int argc, char *argv[])
+ {
+ struct spwd *shadow;
+ const char *user_to_auth;
+- const char *cookie;
++ char *cookie = NULL;
+ time_t now;
+
+ /* clear the entire environment to avoid attacks with
+@@ -67,7 +67,7 @@ main (int argc, char *argv[])
+ openlog ("polkit-agent-helper-1", LOG_CONS | LOG_PID, LOG_AUTHPRIV);
+
+ /* check for correct invocation */
+- if (argc != 3)
++ if (!(argc == 2 || argc == 3))
+ {
+ syslog (LOG_NOTICE, "inappropriate use of helper, wrong number of arguments [uid=%d]", getuid ());
+ fprintf (stderr, "polkit-agent-helper-1: wrong number of arguments. This incident has been logged.\n");
+@@ -86,7 +86,10 @@ main (int argc, char *argv[])
+ }
+
+ user_to_auth = argv[1];
+- cookie = argv[2];
++
++ cookie = read_cookie (argc, argv);
++ if (!cookie)
++ goto error;
+
+ #ifdef PAH_DEBUG
+ fprintf (stderr, "polkit-agent-helper-1: user to auth is '%s'.\n", user_to_auth);
+@@ -153,6 +156,8 @@ main (int argc, char *argv[])
+ goto error;
+ }
+
++ free (cookie);
++
+ #ifdef PAH_DEBUG
+ fprintf (stderr, "polkit-agent-helper-1: successfully sent D-Bus message to PolicyKit daemon\n");
+ #endif /* PAH_DEBUG */
+@@ -162,6 +167,7 @@ main (int argc, char *argv[])
+ return 0;
+
+ error:
++ free (cookie);
+ fprintf (stdout, "FAILURE\n");
+ flush_and_wait ();
+ return 1;
+diff --git a/src/polkitagent/polkitagenthelperprivate.c b/src/polkitagent/polkitagenthelperprivate.c
+index cfa77fc..e23f9f5 100644
+--- a/src/polkitagent/polkitagenthelperprivate.c
++++ b/src/polkitagent/polkitagenthelperprivate.c
+@@ -23,6 +23,7 @@
+ #include "config.h"
+ #include "polkitagenthelperprivate.h"
+ #include <stdio.h>
++#include <string.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+
+@@ -45,6 +46,38 @@ _polkit_clearenv (void)
+ #endif
+
+
++char *
++read_cookie (int argc, char **argv)
++{
++ /* As part of CVE-2015-4625, we started passing the cookie
++ * on standard input, to ensure it's not visible to other
++ * processes. However, to ensure that things continue
++ * to work if the setuid binary is upgraded while old
++ * agents are still running (this will be common with
++ * package managers), we support both modes.
++ */
++ if (argc == 3)
++ return strdup (argv[2]);
++ else
++ {
++ char *ret = NULL;
++ size_t n = 0;
++ ssize_t r = getline (&ret, &n, stdin);
++ if (r == -1)
++ {
++ if (!feof (stdin))
++ perror ("getline");
++ free (ret);
++ return NULL;
++ }
++ else
++ {
++ g_strchomp (ret);
++ return ret;
++ }
++ }
++}
++
+ gboolean
+ send_dbus_message (const char *cookie, const char *user)
+ {
+diff --git a/src/polkitagent/polkitagenthelperprivate.h b/src/polkitagent/polkitagenthelperprivate.h
+index aeca2c7..547fdcc 100644
+--- a/src/polkitagent/polkitagenthelperprivate.h
++++ b/src/polkitagent/polkitagenthelperprivate.h
+@@ -38,6 +38,8 @@
+
+ int _polkit_clearenv (void);
+
++char *read_cookie (int argc, char **argv);
++
+ gboolean send_dbus_message (const char *cookie, const char *user);
+
+ void flush_and_wait ();
+diff --git a/src/polkitagent/polkitagentsession.c b/src/polkitagent/polkitagentsession.c
+index f014773..8b93ad0 100644
+--- a/src/polkitagent/polkitagentsession.c
++++ b/src/polkitagent/polkitagentsession.c
+@@ -55,6 +55,7 @@
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
++#include <gio/gunixoutputstream.h>
+ #include <pwd.h>
+
+ #include "polkitagentmarshal.h"
+@@ -88,7 +89,7 @@ struct _PolkitAgentSession
+ gchar *cookie;
+ PolkitIdentity *identity;
+
+- int child_stdin;
++ GOutputStream *child_stdin;
+ int child_stdout;
+ GPid child_pid;
+
+@@ -129,7 +130,6 @@ G_DEFINE_TYPE (PolkitAgentSession, polkit_agent_session, G_TYPE_OBJECT);
+ static void
+ polkit_agent_session_init (PolkitAgentSession *session)
+ {
+- session->child_stdin = -1;
+ session->child_stdout = -1;
+ }
+
+@@ -395,11 +395,7 @@ kill_helper (PolkitAgentSession *session)
+ session->child_stdout = -1;
+ }
+
+- if (session->child_stdin != -1)
+- {
+- g_warn_if_fail (close (session->child_stdin) == 0);
+- session->child_stdin = -1;
+- }
++ g_clear_object (&session->child_stdin);
+
+ session->helper_is_running = FALSE;
+
+@@ -545,9 +541,9 @@ polkit_agent_session_response (PolkitAgentSession *session,
+
+ add_newline = (response[response_len] != '\n');
+
+- write (session->child_stdin, response, response_len);
++ (void) g_output_stream_write_all (session->child_stdin, response, response_len, NULL, NULL, NULL);
+ if (add_newline)
+- write (session->child_stdin, newline, 1);
++ (void) g_output_stream_write_all (session->child_stdin, newline, 1, NULL, NULL, NULL);
+ }
+
+ /**
+@@ -567,8 +563,9 @@ polkit_agent_session_initiate (PolkitAgentSession *session)
+ {
+ uid_t uid;
+ GError *error;
+- gchar *helper_argv[4];
++ gchar *helper_argv[3];
+ struct passwd *passwd;
++ int stdin_fd = -1;
+
+ g_return_if_fail (POLKIT_AGENT_IS_SESSION (session));
+
+@@ -600,10 +597,8 @@ polkit_agent_session_initiate (PolkitAgentSession *session)
+
+ helper_argv[0] = PACKAGE_PREFIX "/lib/polkit-1/polkit-agent-helper-1";
+ helper_argv[1] = passwd->pw_name;
+- helper_argv[2] = session->cookie;
+- helper_argv[3] = NULL;
++ helper_argv[2] = NULL;
+
+- session->child_stdin = -1;
+ session->child_stdout = -1;
+
+ error = NULL;
+@@ -615,7 +610,7 @@ polkit_agent_session_initiate (PolkitAgentSession *session)
+ NULL,
+ NULL,
+ &session->child_pid,
+- &session->child_stdin,
++ &stdin_fd,
+ &session->child_stdout,
+ NULL,
+ &error))
+@@ -628,6 +623,13 @@ polkit_agent_session_initiate (PolkitAgentSession *session)
+ if (G_UNLIKELY (_show_debug ()))
+ g_print ("PolkitAgentSession: spawned helper with pid %d\n", (gint) session->child_pid);
+
++ session->child_stdin = (GOutputStream*)g_unix_output_stream_new (stdin_fd, TRUE);
++
++ /* Write the cookie on stdin so it can't be seen by other processes */
++ (void) g_output_stream_write_all (session->child_stdin, session->cookie, strlen (session->cookie),
++ NULL, NULL, NULL);
++ (void) g_output_stream_write_all (session->child_stdin, "\n", 1, NULL, NULL, NULL);
++
+ session->child_stdout_channel = g_io_channel_unix_new (session->child_stdout);
+ session->child_stdout_watch_source = g_io_create_watch (session->child_stdout_channel,
+ G_IO_IN | G_IO_ERR | G_IO_HUP);
+diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
+index 3f339e9..15adc6a 100644
+--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
++++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
+@@ -214,6 +214,8 @@ typedef struct
+
+ GDBusConnection *system_bus_connection;
+ guint name_owner_changed_signal_id;
++
++ guint64 agent_serial;
+ } PolkitBackendInteractiveAuthorityPrivate;
+
+ /* ---------------------------------------------------------------------------------------------------- */
+@@ -439,11 +441,15 @@ struct AuthenticationAgent
+ volatile gint ref_count;
+
+ PolkitSubject *scope;
++ guint64 serial;
+
+ gchar *locale;
+ GVariant *registration_options;
+ gchar *object_path;
+ gchar *unique_system_bus_name;
++ GRand *cookie_pool;
++ gchar *cookie_prefix;
++ guint64 cookie_serial;
+
+ GDBusProxy *proxy;
+
+@@ -1427,9 +1433,54 @@ authentication_session_cancelled_cb (GCancellable *cancellable,
+ authentication_session_cancel (session);
+ }
+
++/* We're not calling this a UUID, but it's basically
++ * the same thing, just not formatted that way because:
++ *
++ * - I'm too lazy to do it
++ * - If we did, people might think it was actually
++ * generated from /dev/random, which we're not doing
++ * because this value doesn't actually need to be
++ * globally unique.
++ */
++static void
++append_rand_u128_str (GString *buf,
++ GRand *pool)
++{
++ g_string_append_printf (buf, "%08x%08x%08x%08x",
++ g_rand_int (pool),
++ g_rand_int (pool),
++ g_rand_int (pool),
++ g_rand_int (pool));
++}
++
++/* A value that should be unique to the (AuthenticationAgent, AuthenticationSession)
++ * pair, and not guessable by other agents.
++ *
++ * <agent serial> - <agent uuid> - <session serial> - <session uuid>
++ *
++ * See http://lists.freedesktop.org/archives/polkit-devel/2015-June/000425.html
++ *
++ */
++static gchar *
++authentication_agent_generate_cookie (AuthenticationAgent *agent)
++{
++ GString *buf = g_string_new ("");
++
++ g_string_append (buf, agent->cookie_prefix);
++
++ g_string_append_c (buf, '-');
++ agent->cookie_serial++;
++ g_string_append_printf (buf, "%" G_GUINT64_FORMAT,
++ agent->cookie_serial);
++ g_string_append_c (buf, '-');
++ append_rand_u128_str (buf, agent->cookie_pool);
++
++ return g_string_free (buf, FALSE);
++}
++
++
+ static AuthenticationSession *
+ authentication_session_new (AuthenticationAgent *agent,
+- const gchar *cookie,
+ PolkitSubject *subject,
+ PolkitIdentity *user_of_subject,
+ PolkitSubject *caller,
+@@ -1447,7 +1498,7 @@ authentication_session_new (AuthenticationAgent *agent,
+
+ session = g_new0 (AuthenticationSession, 1);
+ session->agent = authentication_agent_ref (agent);
+- session->cookie = g_strdup (cookie);
++ session->cookie = authentication_agent_generate_cookie (agent);
+ session->subject = g_object_ref (subject);
+ session->user_of_subject = g_object_ref (user_of_subject);
+ session->caller = g_object_ref (caller);
+@@ -1496,16 +1547,6 @@ authentication_session_free (AuthenticationSession *session)
+ g_free (session);
+ }
+
+-static gchar *
+-authentication_agent_new_cookie (AuthenticationAgent *agent)
+-{
+- static gint counter = 0;
+-
+- /* TODO: use a more random-looking cookie */
+-
+- return g_strdup_printf ("cookie%d", counter++);
+-}
+-
+ static PolkitSubject *
+ authentication_agent_get_scope (AuthenticationAgent *agent)
+ {
+@@ -1553,12 +1594,15 @@ authentication_agent_unref (AuthenticationAgent *agent)
+ g_free (agent->unique_system_bus_name);
+ if (agent->registration_options != NULL)
+ g_variant_unref (agent->registration_options);
++ g_rand_free (agent->cookie_pool);
++ g_free (agent->cookie_prefix);
+ g_free (agent);
+ }
+ }
+
+ static AuthenticationAgent *
+-authentication_agent_new (PolkitSubject *scope,
++authentication_agent_new (guint64 serial,
++ PolkitSubject *scope,
+ const gchar *unique_system_bus_name,
+ const gchar *locale,
+ const gchar *object_path,
+@@ -1592,6 +1636,7 @@ authentication_agent_new (PolkitSubject *scope,
+
+ agent = g_new0 (AuthenticationAgent, 1);
+ agent->ref_count = 1;
++ agent->serial = serial;
+ agent->scope = g_object_ref (scope);
+ agent->object_path = g_strdup (object_path);
+ agent->unique_system_bus_name = g_strdup (unique_system_bus_name);
+@@ -1599,6 +1644,25 @@ authentication_agent_new (PolkitSubject *scope,
+ agent->registration_options = registration_options != NULL ? g_variant_ref (registration_options) : NULL;
+ agent->proxy = proxy;
+
++ {
++ GString *cookie_prefix = g_string_new ("");
++ GRand *agent_private_rand = g_rand_new ();
++
++ g_string_append_printf (cookie_prefix, "%" G_GUINT64_FORMAT "-", agent->serial);
++
++ /* Use a uniquely seeded PRNG to get a prefix cookie for this agent,
++ * whose sequence will not correlate with the per-authentication session
++ * cookies.
++ */
++ append_rand_u128_str (cookie_prefix, agent_private_rand);
++ g_rand_free (agent_private_rand);
++
++ agent->cookie_prefix = g_string_free (cookie_prefix, FALSE);
++
++ /* And a newly seeded pool for per-session cookies */
++ agent->cookie_pool = g_rand_new ();
++ }
++
+ return agent;
+ }
+
+@@ -2193,7 +2257,6 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent,
+ {
+ PolkitBackendInteractiveAuthorityPrivate *priv = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_GET_PRIVATE (authority);
+ AuthenticationSession *session;
+- gchar *cookie;
+ GList *l;
+ GList *identities;
+ gchar *localized_message;
+@@ -2215,8 +2278,6 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent,
+ &localized_icon_name,
+ &localized_details);
+
+- cookie = authentication_agent_new_cookie (agent);
+-
+ identities = NULL;
+
+ /* select admin user if required by the implicit authorization */
+@@ -2279,7 +2340,6 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent,
+ user_identities = g_list_prepend (NULL, polkit_unix_user_new (0));
+
+ session = authentication_session_new (agent,
+- cookie,
+ subject,
+ user_of_subject,
+ caller,
+@@ -2335,7 +2395,6 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent,
+ g_list_free_full (user_identities, g_object_unref);
+ g_list_foreach (identities, (GFunc) g_object_unref, NULL);
+ g_list_free (identities);
+- g_free (cookie);
+
+ g_free (localized_message);
+ g_free (localized_icon_name);
+@@ -2482,7 +2541,9 @@ polkit_backend_interactive_authority_register_authentication_agent (PolkitBacken
+ goto out;
+ }
+
+- agent = authentication_agent_new (subject,
++ priv->agent_serial++;
++ agent = authentication_agent_new (priv->agent_serial,
++ subject,
+ polkit_system_bus_name_get_name (POLKIT_SYSTEM_BUS_NAME (caller)),
+ locale,
+ object_path,
+--
+cgit v0.10.2
+
+From 493aa5dc1d278ab9097110c1262f5229bbaf1766 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@redhat.com>
+Date: Wed, 17 Jun 2015 13:07:02 -0400
+Subject: CVE-2015-4625: Bind use of cookies to specific uids
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+http://lists.freedesktop.org/archives/polkit-devel/2015-June/000425.html
+
+The "cookie" value that Polkit hands out is global to all polkit
+users. And when `AuthenticationAgentResponse` is invoked, we
+previously only received the cookie and *target* identity, and
+attempted to find an agent from that.
+
+The problem is that the current cookie is just an integer
+counter, and if it overflowed, it would be possible for
+an successful authorization in one session to trigger a response
+in another session.
+
+The overflow and ability to guess the cookie were fixed by the
+previous patch.
+
+This patch is conceptually further hardening on top of that. Polkit
+currently treats uids as equivalent from a security domain
+perspective; there is no support for
+SELinux/AppArmor/etc. differentiation.
+
+We can retrieve the uid from `getuid()` in the setuid helper, which
+allows us to ensure the uid invoking `AuthenticationAgentResponse2`
+matches that of the agent.
+
+Then the authority only looks at authentication sessions matching the
+cookie that were created by a matching uid, thus removing the ability
+for different uids to interfere with each other entirely.
+
+Several fixes to this patch were contributed by:
+Miloslav Trmač <mitr@redhat.com>
+
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=90837
+CVE: CVE-2015-4625
+Reported-by: Tavis Ormandy <taviso@google.com>
+Reviewed-by: Miloslav Trmač <mitr@redhat.com>
+Signed-off-by: Colin Walters <walters@redhat.com>
+
+diff --git a/data/org.freedesktop.PolicyKit1.AuthenticationAgent.xml b/data/org.freedesktop.PolicyKit1.AuthenticationAgent.xml
+index 3b519c2..5beef7d 100644
+--- a/data/org.freedesktop.PolicyKit1.AuthenticationAgent.xml
++++ b/data/org.freedesktop.PolicyKit1.AuthenticationAgent.xml
+@@ -8,7 +8,19 @@
+ <annotation name="org.gtk.EggDBus.DocString" value="<para>This D-Bus interface is used for communication between the system-wide PolicyKit daemon and one or more authentication agents each running in a user session.</para><para>An authentication agent must implement this interface and register (passing the object path of the object implementing the interface) using the org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent() and org.freedesktop.PolicyKit1.Authority.UnregisterAuthenticationAgent() methods on the #org.freedesktop.PolicyKit1.Authority interface of the PolicyKit daemon.</para>"/>
+
+ <method name="BeginAuthentication">
+- <annotation name="org.gtk.EggDBus.DocString" value="<para>Called by the PolicyKit daemon when the authentication agent needs the user to authenticate as one of the identities in @identities for the action with the identifier @action_id.</para><para>Upon succesful authentication, the authentication agent must invoke the org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse() method on the #org.freedesktop.PolicyKit1.Authority interface of the PolicyKit daemon before returning.</para><para>If the user dismisses the authentication dialog, the authentication agent should return an error.</para>"/>
++ <annotation name="org.gtk.EggDBus.DocString" value="<para>Called
++ by the PolicyKit daemon when the authentication agent needs the
++ user to authenticate as one of the identities in @identities for
++ the action with the identifier @action_id.</para><para>This
++ authentication is normally achieved via the
++ polkit_agent_session_response() API, which invokes a private
++ setuid helper process to verify the authentication. When
++ successful, it calls the
++ org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2()
++ method on the #org.freedesktop.PolicyKit1.Authority interface of
++ the PolicyKit daemon before returning. If the user dismisses the
++ authentication dialog, the authentication agent should call
++ polkit_agent_session_cancel().</para>"/>
+
+ <arg name="action_id" direction="in" type="s">
+ <annotation name="org.gtk.EggDBus.DocString" value="The identifier for the action that the user is authentication for."/>
+diff --git a/data/org.freedesktop.PolicyKit1.Authority.xml b/data/org.freedesktop.PolicyKit1.Authority.xml
+index fbfb9cd..f9021ee 100644
+--- a/data/org.freedesktop.PolicyKit1.Authority.xml
++++ b/data/org.freedesktop.PolicyKit1.Authority.xml
+@@ -313,7 +313,29 @@
+ </method>
+
+ <method name="AuthenticationAgentResponse">
+- <annotation name="org.gtk.EggDBus.DocString" value="Method for authentication agents to invoke on successful authentication. This method will fail unless a sufficiently privileged caller invokes it."/>
++ <annotation name="org.gtk.EggDBus.DocString" value="Method for authentication agents to invoke on successful
++authentication, intended only for use by a privileged helper process
++internal to polkit."/>
++
++ <arg name="cookie" direction="in" type="s">
++ <annotation name="org.gtk.EggDBus.DocString" value="The cookie identifying the authentication request that was passed to the authentication agent."/>
++ </arg>
++
++ <arg name="identity" direction="in" type="(sa{sv})">
++ <annotation name="org.gtk.EggDBus.Type" value="Identity"/>
++ <annotation name="org.gtk.EggDBus.DocString" value="A #Identity struct describing what identity was authenticated."/>
++ </arg>
++ </method>
++
++ <method name="AuthenticationAgentResponse2">
++ <annotation name="org.gtk.EggDBus.DocString" value="Method for authentication agents to invoke on successful
++authentication, intended only for use by a privileged helper process
++internal to polkit. Note this method was added in 0.114, and should be preferred over AuthenticationAgentResponse
++as it fixes a security issue."/>
++
++ <arg name="uid" direction="in" type="u">
++ <annotation name="org.gtk.EggDBus.DocString" value="The real uid of the agent. Normally set by the setuid helper program."/>
++ </arg>
+
+ <arg name="cookie" direction="in" type="s">
+ <annotation name="org.gtk.EggDBus.DocString" value="The cookie identifying the authentication request that was passed to the authentication agent."/>
+diff --git a/docs/polkit/docbook-interface-org.freedesktop.PolicyKit1.Authority.xml b/docs/polkit/docbook-interface-org.freedesktop.PolicyKit1.Authority.xml
+index 6525e25..e66bf53 100644
+--- a/docs/polkit/docbook-interface-org.freedesktop.PolicyKit1.Authority.xml
++++ b/docs/polkit/docbook-interface-org.freedesktop.PolicyKit1.Authority.xml
+@@ -42,6 +42,8 @@ Structure <link linkend="eggdbus-struct-TemporaryAuthorization">TemporaryAuth
+ IN String object_path)
+ <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse">AuthenticationAgentResponse</link> (IN String cookie,
+ IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
++<link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse">AuthenticationAgentResponse2</link> (IN uint32 uid, IN String cookie,
++ IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
+ <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.EnumerateTemporaryAuthorizations">EnumerateTemporaryAuthorizations</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject,
+ OUT Array&lt;<link linkend="eggdbus-struct-TemporaryAuthorization">TemporaryAuthorization</link>&gt; temporary_authorizations)
+ <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RevokeTemporaryAuthorizations">RevokeTemporaryAuthorizations</link> (IN <link linkend="eggdbus-struct-Subject">Subject</link> subject)
+@@ -777,10 +779,52 @@ AuthenticationAgentResponse (IN String cookie,
+ IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
+ </programlisting>
+ <para>
+-Method for authentication agents to invoke on successful authentication. This method will fail unless a sufficiently privileged caller invokes it.
++Method for authentication agents to invoke on successful
++authentication, intended only for use by a privileged helper process
++internal to polkit. Deprecated in favor of AuthenticationAgentResponse2.
++ </para>
++<variablelist role="params">
++ <varlistentry>
++ <term><literal>IN String <parameter>cookie</parameter></literal>:</term>
++ <listitem>
++ <para>
++The cookie identifying the authentication request that was passed to the authentication agent.
++ </para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><literal>IN <link linkend="eggdbus-struct-Identity">Identity</link> <parameter>identity</parameter></literal>:</term>
++ <listitem>
++ <para>
++A <link linkend="eggdbus-struct-Identity">Identity</link> struct describing what identity was authenticated.
++ </para>
++ </listitem>
++ </varlistentry>
++</variablelist>
++ </refsect2>
++ <refsect2 role="function" id="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse2">
++ <title>AuthenticationAgentResponse2 ()</title>
++ <programlisting>
++AuthenticationAgentResponse2 (IN uint32 uid,
++ IN String cookie,
++ IN <link linkend="eggdbus-struct-Identity">Identity</link> identity)
++ </programlisting>
++ <para>
++Method for authentication agents to invoke on successful
++authentication, intended only for use by a privileged helper process
++internal to polkit. Note this method was introduced in 0.114 to fix a security issue.
+ </para>
+ <variablelist role="params">
+ <varlistentry>
++ <term><literal>IN uint32 <parameter>uid</parameter></literal>:</term>
++ <listitem>
++ <para>
++The user id of the agent; normally this is the owner of the parent pid
++of the process that invoked the internal setuid helper.
++ </para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
+ <term><literal>IN String <parameter>cookie</parameter></literal>:</term>
+ <listitem>
+ <para>
+diff --git a/docs/polkit/overview.xml b/docs/polkit/overview.xml
+index 150a7bc..176d2ea 100644
+--- a/docs/polkit/overview.xml
++++ b/docs/polkit/overview.xml
+@@ -314,16 +314,18 @@
+ <para>
+ Authentication agents are provided by desktop environments. When
+ an user session starts, the agent registers with the polkit
+- Authority using
+- the <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent()</link>
++ Authority using the <link
++ linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent">RegisterAuthenticationAgent()</link>
+ method. When services are needed, the authority will invoke
+- methods on
+- the <link linkend="eggdbus-interface-org.freedesktop.PolicyKit1.AuthenticationAgent">org.freedesktop.PolicyKit1.AuthenticationAgent</link>
++ methods on the <link
++ linkend="eggdbus-interface-org.freedesktop.PolicyKit1.AuthenticationAgent">org.freedesktop.PolicyKit1.AuthenticationAgent</link>
+ D-Bus interface. Once the user is authenticated, (a privileged
+- part of) the agent invokes
+- the <link linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse">AuthenticationAgentResponse()</link>
+- method. Note that the polkit Authority itself does not care
+- how the agent authenticates the user.
++ part of) the agent invokes the <link
++ linkend="eggdbus-method-org.freedesktop.PolicyKit1.Authority.AuthenticationAgentResponse">AuthenticationAgentResponse()</link>
++ method. This method should be treated as an internal
++ implementation detail, and callers should use the public shared
++ library API to invoke it, which currently uses a setuid helper
++ program.
+ </para>
+ <para>
+ The <link linkend="ref-authentication-agent-api">libpolkit-agent-1</link>
+diff --git a/src/polkit/polkitauthority.c b/src/polkit/polkitauthority.c
+index ab6d3cd..6bd684a 100644
+--- a/src/polkit/polkitauthority.c
++++ b/src/polkit/polkitauthority.c
+@@ -1492,6 +1492,14 @@ polkit_authority_authentication_agent_response (PolkitAuthority *authority,
+ gpointer user_data)
+ {
+ GVariant *identity_value;
++ /* Note that in reality, this API is only accessible to root, and
++ * only called from the setuid helper `polkit-agent-helper-1`.
++ *
++ * However, because this is currently public API, we avoid
++ * triggering warnings from ABI diff type programs by just grabbing
++ * the real uid of the caller here.
++ */
++ uid_t uid = getuid ();
+
+ g_return_if_fail (POLKIT_IS_AUTHORITY (authority));
+ g_return_if_fail (cookie != NULL);
+@@ -1501,8 +1509,9 @@ polkit_authority_authentication_agent_response (PolkitAuthority *authority,
+ identity_value = polkit_identity_to_gvariant (identity);
+ g_variant_ref_sink (identity_value);
+ g_dbus_proxy_call (authority->proxy,
+- "AuthenticationAgentResponse",
+- g_variant_new ("(s@(sa{sv}))",
++ "AuthenticationAgentResponse2",
++ g_variant_new ("(us@(sa{sv}))",
++ (guint32)uid,
+ cookie,
+ identity_value),
+ G_DBUS_CALL_FLAGS_NONE,
+diff --git a/src/polkitbackend/polkitbackendauthority.c b/src/polkitbackend/polkitbackendauthority.c
+index 601a974..03a4e84 100644
+--- a/src/polkitbackend/polkitbackendauthority.c
++++ b/src/polkitbackend/polkitbackendauthority.c
+@@ -355,6 +355,7 @@ polkit_backend_authority_unregister_authentication_agent (PolkitBackendAuthority
+ gboolean
+ polkit_backend_authority_authentication_agent_response (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
++ uid_t uid,
+ const gchar *cookie,
+ PolkitIdentity *identity,
+ GError **error)
+@@ -373,7 +374,7 @@ polkit_backend_authority_authentication_agent_response (PolkitBackendAuthority
+ }
+ else
+ {
+- return klass->authentication_agent_response (authority, caller, cookie, identity, error);
++ return klass->authentication_agent_response (authority, caller, uid, cookie, identity, error);
+ }
+ }
+
+@@ -587,6 +588,11 @@ static const gchar *server_introspection_data =
+ " <arg type='s' name='cookie' direction='in'/>"
+ " <arg type='(sa{sv})' name='identity' direction='in'/>"
+ " </method>"
++ " <method name='AuthenticationAgentResponse2'>"
++ " <arg type='u' name='uid' direction='in'/>"
++ " <arg type='s' name='cookie' direction='in'/>"
++ " <arg type='(sa{sv})' name='identity' direction='in'/>"
++ " </method>"
+ " <method name='EnumerateTemporaryAuthorizations'>"
+ " <arg type='(sa{sv})' name='subject' direction='in'/>"
+ " <arg type='a(ss(sa{sv})tt)' name='temporary_authorizations' direction='out'/>"
+@@ -1035,6 +1041,57 @@ server_handle_authentication_agent_response (Server *server,
+ error = NULL;
+ if (!polkit_backend_authority_authentication_agent_response (server->authority,
+ caller,
++ (uid_t)-1,
++ cookie,
++ identity,
++ &error))
++ {
++ g_dbus_method_invocation_return_gerror (invocation, error);
++ g_error_free (error);
++ goto out;
++ }
++
++ g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
++
++ out:
++ if (identity != NULL)
++ g_object_unref (identity);
++}
++
++static void
++server_handle_authentication_agent_response2 (Server *server,
++ GVariant *parameters,
++ PolkitSubject *caller,
++ GDBusMethodInvocation *invocation)
++{
++ const gchar *cookie;
++ GVariant *identity_gvariant;
++ PolkitIdentity *identity;
++ GError *error;
++ guint32 uid;
++
++ identity = NULL;
++
++ g_variant_get (parameters,
++ "(u&s@(sa{sv}))",
++ &uid,
++ &cookie,
++ &identity_gvariant);
++
++ error = NULL;
++ identity = polkit_identity_new_for_gvariant (identity_gvariant, &error);
++ if (identity == NULL)
++ {
++ g_prefix_error (&error, "Error getting identity: ");
++ g_dbus_method_invocation_return_gerror (invocation, error);
++ g_error_free (error);
++ goto out;
++ }
++
++ error = NULL;
++ if (!polkit_backend_authority_authentication_agent_response (server->authority,
++ caller,
++ (uid_t)uid,
+ cookie,
+ identity,
+ &error))
+@@ -1222,6 +1279,8 @@ server_handle_method_call (GDBusConnection *connection,
+ server_handle_unregister_authentication_agent (server, parameters, caller, invocation);
+ else if (g_strcmp0 (method_name, "AuthenticationAgentResponse") == 0)
+ server_handle_authentication_agent_response (server, parameters, caller, invocation);
++ else if (g_strcmp0 (method_name, "AuthenticationAgentResponse2") == 0)
++ server_handle_authentication_agent_response2 (server, parameters, caller, invocation);
+ else if (g_strcmp0 (method_name, "EnumerateTemporaryAuthorizations") == 0)
+ server_handle_enumerate_temporary_authorizations (server, parameters, caller, invocation);
+ else if (g_strcmp0 (method_name, "RevokeTemporaryAuthorizations") == 0)
+diff --git a/src/polkitbackend/polkitbackendauthority.h b/src/polkitbackend/polkitbackendauthority.h
+index f9f7385..88df82e 100644
+--- a/src/polkitbackend/polkitbackendauthority.h
++++ b/src/polkitbackend/polkitbackendauthority.h
+@@ -147,6 +147,7 @@ struct _PolkitBackendAuthorityClass
+
+ gboolean (*authentication_agent_response) (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
++ uid_t uid,
+ const gchar *cookie,
+ PolkitIdentity *identity,
+ GError **error);
+@@ -249,6 +250,7 @@ gboolean polkit_backend_authority_unregister_authentication_agent (PolkitBackend
+
+ gboolean polkit_backend_authority_authentication_agent_response (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
++ uid_t uid,
+ const gchar *cookie,
+ PolkitIdentity *identity,
+ GError **error);
+diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
+index 15adc6a..96725f7 100644
+--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
++++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
+@@ -108,8 +108,9 @@ static AuthenticationAgent *get_authentication_agent_for_subject (PolkitBackendI
+ PolkitSubject *subject);
+
+
+-static AuthenticationSession *get_authentication_session_for_cookie (PolkitBackendInteractiveAuthority *authority,
+- const gchar *cookie);
++static AuthenticationSession *get_authentication_session_for_uid_and_cookie (PolkitBackendInteractiveAuthority *authority,
++ uid_t uid,
++ const gchar *cookie);
+
+ static GList *get_authentication_sessions_initiated_by_system_bus_unique_name (PolkitBackendInteractiveAuthority *authority,
+ const gchar *system_bus_unique_name);
+@@ -169,6 +170,7 @@ static gboolean polkit_backend_interactive_authority_unregister_authentication_a
+
+ static gboolean polkit_backend_interactive_authority_authentication_agent_response (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
++ uid_t uid,
+ const gchar *cookie,
+ PolkitIdentity *identity,
+ GError **error);
+@@ -440,6 +442,7 @@ struct AuthenticationAgent
+ {
+ volatile gint ref_count;
+
++ uid_t creator_uid;
+ PolkitSubject *scope;
+ guint64 serial;
+
+@@ -1603,6 +1606,7 @@ authentication_agent_unref (AuthenticationAgent *agent)
+ static AuthenticationAgent *
+ authentication_agent_new (guint64 serial,
+ PolkitSubject *scope,
++ PolkitIdentity *creator,
+ const gchar *unique_system_bus_name,
+ const gchar *locale,
+ const gchar *object_path,
+@@ -1611,6 +1615,10 @@ authentication_agent_new (guint64 serial,
+ {
+ AuthenticationAgent *agent;
+ GDBusProxy *proxy;
++ PolkitUnixUser *creator_user;
++
++ g_assert (POLKIT_IS_UNIX_USER (creator));
++ creator_user = POLKIT_UNIX_USER (creator);
+
+ if (!g_variant_is_object_path (object_path))
+ {
+@@ -1638,6 +1646,7 @@ authentication_agent_new (guint64 serial,
+ agent->ref_count = 1;
+ agent->serial = serial;
+ agent->scope = g_object_ref (scope);
++ agent->creator_uid = (uid_t)polkit_unix_user_get_uid (creator_user);
+ agent->object_path = g_strdup (object_path);
+ agent->unique_system_bus_name = g_strdup (unique_system_bus_name);
+ agent->locale = g_strdup (locale);
+@@ -1736,8 +1745,9 @@ get_authentication_agent_for_subject (PolkitBackendInteractiveAuthority *authori
+ }
+
+ static AuthenticationSession *
+-get_authentication_session_for_cookie (PolkitBackendInteractiveAuthority *authority,
+- const gchar *cookie)
++get_authentication_session_for_uid_and_cookie (PolkitBackendInteractiveAuthority *authority,
++ uid_t uid,
++ const gchar *cookie)
+ {
+ PolkitBackendInteractiveAuthorityPrivate *priv;
+ GHashTableIter hash_iter;
+@@ -1755,6 +1765,23 @@ get_authentication_session_for_cookie (PolkitBackendInteractiveAuthority *author
+ {
+ GList *l;
+
++ /* We need to ensure that if somehow we have duplicate cookies
++ * due to wrapping, that the cookie used is matched to the user
++ * who called AuthenticationAgentResponse2. See
++ * http://lists.freedesktop.org/archives/polkit-devel/2015-June/000425.html
++ *
++ * Except if the legacy AuthenticationAgentResponse is invoked,
++ * we don't know the uid and hence use -1. Continue to support
++ * the old behavior for backwards compatibility, although everyone
++ * who is using our own setuid helper will automatically be updated
++ * to the new API.
++ */
++ if (uid != (uid_t)-1)
++ {
++ if (agent->creator_uid != uid)
++ continue;
++ }
++
+ for (l = agent->active_sessions; l != NULL; l = l->next)
+ {
+ AuthenticationSession *session = l->data;
+@@ -2544,6 +2571,7 @@ polkit_backend_interactive_authority_register_authentication_agent (PolkitBacken
+ priv->agent_serial++;
+ agent = authentication_agent_new (priv->agent_serial,
+ subject,
++ user_of_caller,
+ polkit_system_bus_name_get_name (POLKIT_SYSTEM_BUS_NAME (caller)),
+ locale,
+ object_path,
+@@ -2757,6 +2785,7 @@ polkit_backend_interactive_authority_unregister_authentication_agent (PolkitBack
+ static gboolean
+ polkit_backend_interactive_authority_authentication_agent_response (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
++ uid_t uid,
+ const gchar *cookie,
+ PolkitIdentity *identity,
+ GError **error)
+@@ -2799,7 +2828,7 @@ polkit_backend_interactive_authority_authentication_agent_response (PolkitBacken
+ }
+
+ /* find the authentication session */
+- session = get_authentication_session_for_cookie (interactive_authority, cookie);
++ session = get_authentication_session_for_uid_and_cookie (interactive_authority, uid, cookie);
+ if (session == NULL)
+ {
+ g_set_error (error,
+--
+cgit v0.10.2
+
+--- ./configure.ac.orig
++++ ./configure.ac
+@@ -122,7 +122,7 @@
+ changequote([,])dnl
+ fi
+
+-PKG_CHECK_MODULES(GLIB, [gio-2.0 >= 2.28.0])
++PKG_CHECK_MODULES(GLIB, [gmodule-2.0 gio-unix-2.0 gio-2.0 >= 2.30.0])
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+
diff --git a/system/polkit/automake.patch b/system/polkit/automake.patch
new file mode 100644
index 000000000..0f6825a26
--- /dev/null
+++ b/system/polkit/automake.patch
@@ -0,0 +1,19 @@
+--- ./configure.ac.orig 2012-12-31 21:39:08.969445979 +0000
++++ ./configure.ac 2012-12-31 21:39:30.136285425 +0000
+@@ -3,7 +3,7 @@
+ AC_PREREQ(2.59c)
+ AC_INIT(polkit, 0.105, http://lists.freedesktop.org/mailman/listinfo/polkit-devel)
+ AM_INIT_AUTOMAKE(polkit, 0.105)
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADER(config.h)
+ AM_MAINTAINER_MODE
+
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+@@ -24,7 +24,6 @@
+
+ AC_ISC_POSIX
+ AC_PROG_CC
+-AM_PROG_CC_STDC
+ AC_HEADER_STDC
+ AM_PROG_LIBTOOL
+ AC_PROG_MAKE_SET
diff --git a/system/polkit/disable-ck-test.patch b/system/polkit/disable-ck-test.patch
new file mode 100644
index 000000000..e1987d40d
--- /dev/null
+++ b/system/polkit/disable-ck-test.patch
@@ -0,0 +1,15 @@
+This test requires ConsoleKit to be running.
+
+--- polkit-0.105/test/polkitbackend/Makefile.am.old 2012-04-24 11:05:34.000000000 -0500
++++ polkit-0.105/test/polkitbackend/Makefile.am 2017-09-27 20:48:42.479959296 -0500
+@@ -36,8 +36,8 @@
+ TEST_PROGS += polkitbackendlocalauthorizationstoretest
+ polkitbackendlocalauthorizationstoretest_SOURCES = polkitbackendlocalauthorizationstoretest.c
+
+-TEST_PROGS += polkitbackendlocalauthoritytest
+-polkitbackendlocalauthoritytest_SOURCES = polkitbackendlocalauthoritytest.c
++#TEST_PROGS += polkitbackendlocalauthoritytest
++#polkitbackendlocalauthoritytest_SOURCES = polkitbackendlocalauthoritytest.c
+
+ # ----------------------------------------------------------------------------------------------------
+
diff --git a/system/polkit/fix-consolekit-db-stat.patch b/system/polkit/fix-consolekit-db-stat.patch
new file mode 100644
index 000000000..3deceb639
--- /dev/null
+++ b/system/polkit/fix-consolekit-db-stat.patch
@@ -0,0 +1,30 @@
+--- polkit-0.105.orig/src/polkitbackend/polkitbackendsessionmonitor.c 2012-04-24 19:05:34.000000000 +0300
++++ polkit-0.105/src/polkitbackend/polkitbackendsessionmonitor.c 2015-08-17 14:50:51.428580856 +0300
+@@ -47,7 +47,7 @@ struct _PolkitBackendSessionMonitor
+
+ GKeyFile *database;
+ GFileMonitor *database_monitor;
+- time_t database_mtime;
++ struct timespec database_mtim;
+ };
+
+ struct _PolkitBackendSessionMonitorClass
+@@ -95,7 +95,7 @@ reload_database (PolkitBackendSessionMon
+ goto out;
+ }
+
+- monitor->database_mtime = statbuf.st_mtime;
++ monitor->database_mtim = statbuf.st_mtim;
+
+ monitor->database = g_key_file_new ();
+ if (!g_key_file_load_from_file (monitor->database,
+@@ -131,7 +131,8 @@ ensure_database (PolkitBackendSessionMon
+ strerror (errno));
+ goto out;
+ }
+- if (statbuf.st_mtime == monitor->database_mtime)
++ if (statbuf.st_mtim.tv_sec == monitor->database_mtim.tv_sec &&
++ statbuf.st_mtim.tv_nsec == monitor->database_mtim.tv_nsec)
+ {
+ ret = TRUE;
+ goto out;
diff --git a/system/polkit/fix-parallel-make.patch b/system/polkit/fix-parallel-make.patch
new file mode 100644
index 000000000..b693a34dd
--- /dev/null
+++ b/system/polkit/fix-parallel-make.patch
@@ -0,0 +1,40 @@
+From 7bd30764a5230684c7c979a08a83dfa6e327f719 Mon Sep 17 00:00:00 2001
+From: Ryan Lortie <desrt@velocity.(none)>
+Date: Tue, 13 Nov 2012 16:50:14 +0000
+Subject: build: Fix .gir generation for parallel make
+
+As per the intructions in the introspection Makefile, we should have a
+line declaring a dependency between the .gir and .la files.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=57077
+
+Signed-off-by: David Zeuthen <zeuthen@gmail.com>
+---
+diff --git a/src/polkit/Makefile.am b/src/polkit/Makefile.am
+index 39d6d84..d648d29 100644
+--- a/src/polkit/Makefile.am
++++ b/src/polkit/Makefile.am
+@@ -106,6 +106,8 @@ if HAVE_INTROSPECTION
+
+ INTROSPECTION_GIRS = Polkit-1.0.gir
+
++Polkit-1.0.gir: libpolkit-gobject-1.la
++
+ girdir = $(INTROSPECTION_GIRDIR)
+ gir_DATA = Polkit-1.0.gir
+
+diff --git a/src/polkitagent/Makefile.am b/src/polkitagent/Makefile.am
+index 1cfb73c..5b7d4c7 100644
+--- a/src/polkitagent/Makefile.am
++++ b/src/polkitagent/Makefile.am
+@@ -108,6 +108,8 @@ if HAVE_INTROSPECTION
+ girdir = $(INTROSPECTION_GIRDIR)
+ gir_DATA = PolkitAgent-1.0.gir
+
++PolkitAgent-1.0.gir: libpolkit-agent-1.la
++
+ typelibsdir = $(INTROSPECTION_TYPELIBDIR)
+ typelibs_DATA = PolkitAgent-1.0.typelib
+
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/system/polkit/fix-test-fgetpwent.patch b/system/polkit/fix-test-fgetpwent.patch
new file mode 100644
index 000000000..7bc6481cc
--- /dev/null
+++ b/system/polkit/fix-test-fgetpwent.patch
@@ -0,0 +1,20 @@
+--- polkit-0.105/test/mocklibc/src/pwd.c.old 2012-04-24 11:05:34.000000000 -0500
++++ polkit-0.105/test/mocklibc/src/pwd.c 2017-09-27 19:40:57.883227673 -0500
+@@ -16,6 +16,7 @@
+ * Author: Nikki VonHollen <vonhollen@gmail.com>
+ */
+
++#define _GNU_SOURCE
+ #include <pwd.h>
+
+ #include <stdio.h>
+--- polkit-0.105/test/mocklibc/src/grp.c.old 2012-04-24 11:05:34.000000000 -0500
++++ polkit-0.105/test/mocklibc/src/grp.c 2017-09-27 19:44:57.759238450 -0500
+@@ -16,6 +16,7 @@
+ * Author: Nikki VonHollen <vonhollen@gmail.com>
+ */
+
++#define _GNU_SOURCE
+ #include <grp.h>
+
+ #include <stdio.h>
diff --git a/system/procps/APKBUILD b/system/procps/APKBUILD
new file mode 100644
index 000000000..9f52de53f
--- /dev/null
+++ b/system/procps/APKBUILD
@@ -0,0 +1,73 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=procps
+pkgver=3.3.12
+pkgrel=4
+pkgdesc="Utilities for monitoring your system and processes on your system"
+url="https://gitlab.com/procps-ng/procps"
+arch="all"
+license="GPL LGPL"
+makedepends="ncurses-dev gettext-dev autoconf automake libtool"
+checkdepends="dejagnu"
+subpackages="$pkgname-dev $pkgname-doc libproc"
+source="$pkgname-$pkgver.tar.gz::https://gitlab.com/procps-ng/$pkgname/repository/archive.tar.gz?ref=v$pkgver
+ strtod.patch"
+builddir="$srcdir/$pkgname-v$pkgver"
+
+prepare() {
+ # NOTE: Name of the tarball's top-level directory contains SHA1.
+ ln -fs $pkgname-v$pkgver-* "$builddir"
+
+ default_prepare
+
+ cd "$builddir"
+ ./autogen.sh
+}
+
+build() {
+ cd "$builddir"
+
+ export LIBS="$LIBS -lintl"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/ \
+ --bindir=/bin \
+ --sbindir=/sbin \
+ --libdir=/lib \
+ --mandir=/usr/share/man \
+ --sysconfdir=/etc \
+ --docdir=/usr/share/doc \
+ --disable-static \
+ --disable-rpath \
+ --with-ncurses
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" ldconfig=true install="install -D" \
+ install
+
+ # These binaries are identical.
+ ln -sf pgrep "$pkgdir"/bin/pkill
+
+ install -d "$pkgdir"/usr/lib
+ mv "$pkgdir"/include "$pkgdir"/usr/ \
+ && mv "$pkgdir"/lib/pkgconfig "$pkgdir"/usr/lib/
+}
+
+libproc() {
+ pkgdesc="Library for monitoring system and processes"
+
+ install -d "$subpkgdir"/
+ mv "$pkgdir"/lib "$subpkgdir"/
+}
+
+sha512sums="a4400b9e13f8e9ec1c527a0e9e2e5580b6d007cae0f961b2a82c2924e4922232cee7a8be77badb45d608383758476da0260460d8e0801a5e88ced7cc6b8c10cc procps-3.3.12.tar.gz
+93449c3b431a40d9fbfe8a5681cbd3696a984565b99d6105cf988ae571beda0c815104a3a13bf6d20289705e4063b0a61d2658c422293095e3eb78c29c41053b strtod.patch"
diff --git a/system/procps/strtod.patch b/system/procps/strtod.patch
new file mode 100644
index 000000000..9cc974b1b
--- /dev/null
+++ b/system/procps/strtod.patch
@@ -0,0 +1,115 @@
+From 4ed44ab58e27a9a09902b9c5b49df484842b6c9a Mon Sep 17 00:00:00 2001
+From: Dr. Werner Fink <werner@suse.de>
+Date: Wed, 13 Jul 2016 20:08:51 +1000
+Subject: [PATCH] misc: fix strtod_nol_err tests
+
+A better way of implementing the string to double
+conversion and a better way of testing it.
+
+Signed-off-by: Craig Small <csmall@enc.com.au>
+---
+ include/strutils.h | 2 +-
+ lib/strutils.c | 22 ++++++++++++----------
+ lib/test_strtod_nol.c | 7 ++++---
+ 4 files changed, 20 insertions(+), 18 deletions(-)
+
+diff --git a/include/strutils.h b/include/strutils.h
+index 85a6192..a5a15c9 100644
+--- a/include/strutils.h
++++ b/include/strutils.h
+@@ -7,6 +7,6 @@
+
+ extern long strtol_or_err(const char *str, const char *errmesg);
+ extern double strtod_or_err(const char *str, const char *errmesg);
+-double strtod_nol_or_err(char *str, const char *errmesg);
++extern double strtod_nol_or_err(char *str, const char *errmesg);
+
+ #endif
+diff --git a/lib/strutils.c b/lib/strutils.c
+index e5245db..e0632c4 100644
+--- a/lib/strutils.c
++++ b/lib/strutils.c
+@@ -20,6 +20,8 @@
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
++#include <float.h>
++#include <math.h>
+ #include <stdlib.h>
+ #include <ctype.h>
+
+@@ -71,9 +73,9 @@ double strtod_or_err(const char *str, const char *errmesg)
+ */
+ double strtod_nol_or_err(char *str, const char *errmesg)
+ {
+- double num;
++ long double num;
+ const char *cp, *radix;
+- double mult;
++ long double mult;
+ int negative = 0;
+
+ if (str != NULL && *str != '\0') {
+@@ -95,29 +97,29 @@ double strtod_nol_or_err(char *str, const char *errmesg)
+ mult=0.1;
+ while(isdigit(*radix)) {
+ radix++;
+- mult *= 10;
++ mult *= 10.0;
+ }
+ while(isdigit(*cp)) {
+- num += (*cp - '0') * mult;
+- mult /= 10;
++ num += (long double)(*cp - '0') * mult;
++ mult /= 10.0;
+ cp++;
+ }
+ /* got the integers */
+ if (*cp == '\0')
+- return (negative?-num:num);
++ return (double)(negative?-num:num);
+ if (*cp != '.' && *cp != ',')
+ error(EXIT_FAILURE, EINVAL, "%s: '%s'", errmesg, str);
+
+ cp++;
+ mult = 0.1;
+ while(isdigit(*cp)) {
+- num += (*cp - '0') * mult;
+- mult /= 10;
++ num += (long double)(*cp - '0') * mult;
++ mult /= 10.0;
+ cp++;
+ }
+ if (*cp == '\0')
+- return (negative?-num:num);
++ return (double)(negative?-num:num);
+ }
+ error(EXIT_FAILURE, errno, "%s: '%s'", errmesg, str);
+- return 0;
++ return (double)0;
+ }
+diff --git a/lib/test_strtod_nol.c b/lib/test_strtod_nol.c
+index 0be798c..736768a 100644
+--- a/lib/test_strtod_nol.c
++++ b/lib/test_strtod_nol.c
+@@ -1,4 +1,5 @@
+-
++#include <float.h>
++#include <math.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "strutils.h"
+@@ -33,8 +34,8 @@ int main(int argc, char *argv[])
+ double val;
+
+ for(i=0; tests[i].string != NULL; i++) {
+- if(strtod_nol_or_err(tests[i].string, "Cannot parse number") !=
+- tests[i].result) {
++ val = strtod_nol_or_err(tests[i].string, "Cannot parse number");
++ if(fabs(tests[i].result - val) > DBL_EPSILON) {
+ fprintf(stderr, "FAIL: strtod_nol_or_err(\"%s\") != %f\n",
+ tests[i].string, tests[i].result);
+ return EXIT_FAILURE;
+--
+libgit2 0.26.0
+
diff --git a/system/shimmy/APKBUILD b/system/shimmy/APKBUILD
index f8ad3b79a..f4cb086f6 100644
--- a/system/shimmy/APKBUILD
+++ b/system/shimmy/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=shimmy
-pkgver=0.3
+pkgver=0.4
pkgrel=0
pkgdesc="Utilities for stricter POSIX conformance"
url="https://code.foxkit.us/adelie/shimmy"
@@ -12,7 +12,7 @@ depends=""
makedepends=""
subpackages="$pkgname-doc"
options="!check"
-source="https://distfiles.adelielinux.org/source/$pkgname/$pkgname-$pkgver.tar.bz2"
+source="https://distfiles.adelielinux.org/source/$pkgname/$pkgname-$pkgver.tar.xz"
replaces="musl-utils"
builddir="$srcdir/shimmy-$pkgver"
@@ -26,4 +26,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7c2615264d20657845cb0c3c6660dc1640dd6ff1a6eb36a323ba1a409f9965310df4c95efb04ebb4d6ac1f2413af4e5dd302b6921bf1a5ea769538223f000d24 shimmy-0.3.tar.bz2"
+sha512sums="16947d649279dfdc508bcbe5be8be8ba7bd0b38e692862201a744e4cc770c6ffa3f7b3e37fc997e56c10bfb60abc001b944b6a6b340831894ad8d350f56bde8b shimmy-0.4.tar.xz"
diff --git a/system/sudo/APKBUILD b/system/sudo/APKBUILD
new file mode 100644
index 000000000..8a9bc25c1
--- /dev/null
+++ b/system/sudo/APKBUILD
@@ -0,0 +1,67 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=sudo
+pkgver=1.8.21_p2
+if [ "${pkgver%_*}" != "$pkgver" ]; then
+ _realver=${pkgver%_*}${pkgver#*_}
+else
+ _realver=$pkgver
+fi
+pkgrel=1
+pkgdesc="Give certain users the ability to run some commands as root"
+url="http://www.sudo.ws/sudo/"
+arch="all"
+license="custom ISC"
+makedepends_host="linux-pam-dev zlib-dev"
+makedepends_build="bash"
+makedepends="$makedepends_host $makedepends_build"
+depends=
+subpackages="$pkgname-doc $pkgname-dev"
+source="https://www.sudo.ws/dist/sudo-${_realver}.tar.gz
+ fix-cross-compile.patch
+ libcrypt.patch
+ musl-fix-headers.patch
+ "
+options="suid"
+
+# secfixes:
+# 1.8.20_p2-r0:
+# - CVE-2017-1000368
+
+builddir="$srcdir"/$pkgname-$_realver
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --libexecdir=/usr/lib \
+ --mandir=/usr/share/man \
+ --disable-nls \
+ --enable-pie \
+ --with-env-editor \
+ --with-pam \
+ --without-skey \
+ --with-passprompt="[sudo] password for %p: "
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ # the sudo's mkinstalldir script miscreates the leading
+ # path components with bad permissions. fix this.
+ install -d -m0755 "$pkgdir"/var "$pkgdir"/var/db
+ make -j1 DESTDIR="$pkgdir" install
+ rm -rf "$pkgdir"/var/run
+}
+
+sha512sums="f04bbff54ad74ba73c078e15c75d2f41332d4912078ed66157ba7346b7fff914bd0747460cb4cd0c472af2d3b344fa72f5c62c95169df68a9cac74d7245c720c sudo-1.8.21p2.tar.gz
+f0f462f40502da2194310fe4a72ec1a16ba40f95a821ba9aa6aabaa423d28c4ab26b684afa7fb81c2407cf60de9327bdab01de51b878c5d4de49b0d62645f53c fix-cross-compile.patch
+5ad20254aa587ef615f794081ecd55344eada5cf8c1a1d7956cc3f73375554716c483eeb74081da9a8501afce92cfbaf2abe59d1067aac67ce6e4874eb5a23e1 libcrypt.patch
+113416fed7532c6092687c8bdd9913d04888d2f0a32e4333dd27a6b3d39145717ad5c3b3f05ba11bd6462612a9a013d446d254d50b2b651c33eeebe670f41ab5 musl-fix-headers.patch"
diff --git a/system/sudo/fix-cross-compile.patch b/system/sudo/fix-cross-compile.patch
new file mode 100644
index 000000000..d2fc97cca
--- /dev/null
+++ b/system/sudo/fix-cross-compile.patch
@@ -0,0 +1,15 @@
+--- ./lib/util/Makefile.in.orig
++++ ./lib/util/Makefile.in
+@@ -160,10 +160,10 @@
+ ./mksigname > $@
+
+ mksiglist: $(srcdir)/mksiglist.c $(srcdir)/mksiglist.h $(incdir)/sudo_compat.h $(top_builddir)/config.h
+- $(CC) $(CPPFLAGS) $(CFLAGS) $(srcdir)/mksiglist.c -o $@
++ $${HOSTCC:-gcc} $(CPPFLAGS) $(CFLAGS) $(srcdir)/mksiglist.c -o $@
+
+ mksigname: $(srcdir)/mksigname.c $(srcdir)/mksigname.h $(incdir)/sudo_compat.h $(top_builddir)/config.h
+- $(CC) $(CPPFLAGS) $(CFLAGS) $(srcdir)/mksigname.c -o $@
++ $${HOSTCC:-gcc} $(CPPFLAGS) $(CFLAGS) $(srcdir)/mksigname.c -o $@
+
+ $(srcdir)/mksiglist.h: $(srcdir)/siglist.in
+ @if [ -n "$(DEVEL)" ]; then \
diff --git a/system/sudo/libcrypt.patch b/system/sudo/libcrypt.patch
new file mode 100644
index 000000000..e83b69113
--- /dev/null
+++ b/system/sudo/libcrypt.patch
@@ -0,0 +1,11 @@
+--- ./plugins/sudoers/Makefile.in.orig
++++ ./plugins/sudoers/Makefile.in
+@@ -52,7 +52,7 @@
+ LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la
+ LIBS = $(LT_LIBS) @LIBINTL@
+ NET_LIBS = @NET_LIBS@
+-SUDOERS_LIBS = @SUDOERS_LIBS@ @AFS_LIBS@ @GETGROUPS_LIB@ $(LIBS) $(NET_LIBS) @ZLIB@ @LIBMD@
++SUDOERS_LIBS = @SUDOERS_LIBS@ @AFS_LIBS@ @GETGROUPS_LIB@ $(LIBS) $(NET_LIBS) @ZLIB@ @LIBMD@ -lcrypt
+ REPLAY_LIBS = @REPLAY_LIBS@ @ZLIB@
+ VISUDO_LIBS = $(NET_LIBS) @LIBMD@
+ TESTSUDOERS_LIBS = $(NET_LIBS) @LIBMD@
diff --git a/system/sudo/musl-fix-headers.patch b/system/sudo/musl-fix-headers.patch
new file mode 100644
index 000000000..18a19b75d
--- /dev/null
+++ b/system/sudo/musl-fix-headers.patch
@@ -0,0 +1,10 @@
+--- ./include/sudo_compat.h.orig
++++ ./include/sudo_compat.h
+@@ -25,6 +25,7 @@
+ #include <stdio.h>
+ #include <stdarg.h>
+ #include <stddef.h> /* for rsize_t */
++#include <sys/types.h> /* for id_t */
+
+ /*
+ * Macros and functions that may be missing on some operating systems.
diff --git a/system/syslinux/APKBUILD b/system/syslinux/APKBUILD
new file mode 100644
index 000000000..43ac057b1
--- /dev/null
+++ b/system/syslinux/APKBUILD
@@ -0,0 +1,51 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=syslinux
+pkgver=6.04_pre1
+pkgrel=3
+_ver=${pkgver/_/-}
+pkgdesc="Boot loader for the Linux operating system"
+url="http://syslinux.org"
+arch="pmmx x86 x86_64"
+license="GPL"
+makedepends="linux-headers nasm perl util-linux-dev gnu-efi-dev"
+depends="mtools blkid mawk"
+triggers="syslinux.trigger=/boot"
+install="syslinux.post-upgrade"
+options="!check textrels" # does not ship tests in tarball
+ldpath="/usr/share/syslinux"
+
+source="https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/${pkgver%_pre*}/syslinux-$_ver.tar.xz
+ update-extlinux.conf
+ update-extlinux
+ "
+subpackages="$pkgname-doc $pkgname-dev"
+
+_loaderarch=
+case "$CARCH" in
+x86) _loaderarch=efi32;;
+x86_64) _loaderarch=efi64;;
+esac
+
+builddir="$srcdir"/$pkgname-$_ver
+
+build() {
+ cd "$builddir"
+ unset LDFLAGS
+ make $_loaderarch installer
+}
+
+package() {
+ cd "$builddir"
+ make -j1 INSTALLROOT="$pkgdir" MANDIR=/usr/share/man \
+ bios $_loaderarch install
+
+ mkdir -p "$pkgdir"/etc/update-extlinux.d
+ cp "$srcdir"/update-extlinux.conf "$pkgdir"/etc/
+ sed "/^version=/s/=.*/=$pkgver-r$pkgrel/" "$srcdir"/update-extlinux \
+ > "$pkgdir"/sbin/update-extlinux
+ chmod 755 "$pkgdir"/sbin/update-extlinux
+}
+
+sha512sums="7927dd39be8e2dcf4138a6fea33def67d19d938379d694f15b48fdd2f5924c028b7a9e7bd71d0c7c6630c203e9e2a54296628e530632ad5e6f55b1ebefe8fc98 syslinux-6.04-pre1.tar.xz
+9071be450e543597f6f95b9a5811869c5351a71f4c42f7879b9f7ec1b13e2e4d455e9f2900e3897d5e5870bd87c934b7168328186c5f17631f2b09a524e10a1a update-extlinux.conf
+8f4f003053a3a265a11522b5bd6c71998ae3bf7ef1fbc2ed51675e432485ba4453f707b1bc1a1ed2089cf226456a56e7742b197b45b015099820b7fed5c2f153 update-extlinux"
diff --git a/system/syslinux/syslinux.post-upgrade b/system/syslinux/syslinux.post-upgrade
new file mode 100644
index 000000000..90388668d
--- /dev/null
+++ b/system/syslinux/syslinux.post-upgrade
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# find given append opt
+get_append_opt() {
+ awk -v search="$1" '
+ $1 == "append" || $1 == "APPEND" {
+ split($0, a);
+ for (i in a) {
+ if (index(a[i], search) == 1) {
+ print a[i];
+ }
+ }
+ }' /boot/extlinux.conf | sort | uniq
+}
+
+# print default kernel options
+get_default_opts() {
+ awk '
+ $1 == "append" || $1 == "APPEND" {
+ opts="";
+ space="";
+ split($0, a);
+ for (i in a) {
+ if (i != 1 \
+ && (index(a[i], "root=") != 1) \
+ && (index(a[i], "initrd=") != 1) \
+ && (index(a[i], "modules=") != 1)) {
+ opts = opts space a[i];
+ space = " ";
+ }
+ }
+ print opts;
+ }
+ ' /boot/extlinux.conf | sort | uniq
+}
+
+if ! [ -f /boot/extlinux.conf ]; then
+ exit 0
+fi
+
+# check if we already have a generated extlinux.conf
+if grep -q '^# Generated by update-extlinux' /boot/extlinux.conf; then
+ exit 0
+fi
+
+# try fish out the kernel opts from extlinuix.conf's append line
+root=$(get_append_opt 'root=' | head -n 1)
+modules=$(get_append_opt 'modules=' | head -n 1)
+opts=$(get_default_opts | head -n 1)
+
+# populate update-extlinux.conf with the info we know
+if [ -n "$root" ]; then
+ sed -i -e "/^root=/s|.*|$root|g" /etc/update-extlinux.conf
+fi
+if [ -n "$modules" ]; then
+ sed -i -e "/^modules=/s|.*|$modules|g" /etc/update-extlinux.conf
+fi
+if [ -n "$opts" ]; then
+ sed -i -e "/^default_kernel_opts=/s|.*|default_kernel_opts=\"$opts\"|g" /etc/update-extlinux.conf
+fi
+
diff --git a/system/syslinux/syslinux.trigger b/system/syslinux/syslinux.trigger
new file mode 100644
index 000000000..fe91f4379
--- /dev/null
+++ b/system/syslinux/syslinux.trigger
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+update-extlinux --warn-only
diff --git a/system/syslinux/update-extlinux b/system/syslinux/update-extlinux
new file mode 100755
index 000000000..5e1183ba9
--- /dev/null
+++ b/system/syslinux/update-extlinux
@@ -0,0 +1,252 @@
+#!/bin/sh
+
+version=
+default=0
+timeout=5
+verbose=0
+
+conf=/boot/extlinux.conf
+myconf=/etc/update-extlinux.conf
+
+# read in extlinux settings
+if [ -f "$myconf" ]; then
+ . $myconf
+fi
+
+everbose() {
+ if [ "$verbose" = "0" ]; then
+ return
+ fi
+
+ echo $*
+}
+
+ewarn() {
+ echo "WARNING:" $@ >&2
+}
+
+eerror() {
+ echo "ERROR:" $@ >&2
+ return 1
+}
+
+usage() {
+ echo "usage: $0 [-v|--verbose] [--warn-only]"
+}
+
+while [ $# -gt 0 ]; do
+ opt="$1"
+ shift
+ case "$opt" in
+ -v|--verbose)
+ verbose=1
+ ;;
+ --warn-only)
+ warn_only=1
+ ;;
+ --)
+ break
+ ;;
+ -*)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+everbose "Updating extlinux configuration."
+
+if [ "x$root" = "x" ]; then
+ ewarn "Root device is not specified in $myconf."
+ blkid_export=$(blkid -o export /dev/root)
+ if [ -n "$blkid_export" ]; then
+ export $blkid_export
+ fi
+ if [ -z "$UUID" ]; then
+ # try parse /proc/mount for mounted /
+ dev=$(awk '$2 == "/" {dev=$1} END {print dev}' /proc/mounts)
+ if [ -n "$dev" ]; then
+ blkid_export=$(blkid -o export $dev)
+ if [ -n "$blkid_export" ]; then
+ export "$blkid_export"
+ fi
+ fi
+ fi
+ if [ -z "$UUID" ]; then
+ if [ -z "$dev" ]; then
+ if [ -n "$warn_only" ]; then
+ ewarn "Failed to detect root device. extlinux.conf is not updated"
+ exit 0
+ else
+ eerror "Failed to detect root device"
+ exit 1
+ fi
+ else
+ root=$dev
+ fi
+ else
+ root=UUID=$UUID
+ fi
+ everbose "Root device is: $root"
+fi
+
+rtimeout=$(( ${timeout} * 10 ))
+syslinux_menu=menu.c32
+menu_hidden=
+
+# vesa menu has been requested?
+if [ "$vesa_menu" = "1" ]; then
+ syslinux_menu=vesamenu.c32
+fi
+
+umask 0022
+rm -f $conf.new
+echo "# Generated by update-extlinux $version" > $conf.new
+if [ -n "$serial_port" ]; then
+ echo "SERIAL $serial_port ${serial_baud:-115200}" >> $conf.new
+fi
+echo "DEFAULT $syslinux_menu" >> $conf.new
+echo "PROMPT 0" >> $conf.new
+echo "MENU TITLE Adelie $(uname -s) Boot Menu" >> $conf.new
+if [ "$hidden" = "1" ]; then
+ echo "MENU HIDDEN" >> $conf.new
+fi
+echo "MENU AUTOBOOT Adelie will be booted automatically in # seconds." >> $conf.new
+echo "TIMEOUT $rtimeout" >> $conf.new
+
+lst=0
+if [ -f "/boot/xen.gz" ]; then
+ for kernel in $(find /boot -name "vmlinuz-*" -type f); do
+ tag=$(basename $kernel | cut -b9-)
+ everbose "Found Xen hypervisor: /boot/xen.gz, kernel: $kernel"
+
+ if [ -f "/boot/initramfs-$tag" ]; then
+ everbose "Found initramfs: /boot/initramfs-$tag"
+ initramfs="initramfs-$tag"
+ else
+ initramfs=
+ fi
+ label=xen-$(grep -w -l $tag /usr/share/kernel/*/kernel.release \
+ | cut -d/ -f5)
+ if [ "$label" = "xen-" ]; then
+ label=xen-$lst
+ fi
+
+ echo "LABEL $label" >> $conf.new
+ if [ "$label" = "$default" ]; then
+ echo " MENU DEFAULT" >> $conf.new
+ fi
+ echo " MENU LABEL Xen + Linux $tag" >> $conf.new
+ echo " COM32 mboot.c32" >> $conf.new
+ echo " APPEND xen.gz $xen_opts --- $(basename $kernel) root=$root modules=${modules}${TYPE:+,$TYPE} $default_kernel_opts --- $initramfs" >> $conf.new
+ echo "" >> $conf.new
+ lst=$(($lst + 1))
+ done
+fi
+
+for kernel in $(find /boot -name "vmlinuz*" -type f); do
+ case $kernel in
+ *vmlinuz) tag=vanilla;;
+ *vmlinuz-*) tag=$(basename $kernel | cut -b9-);;
+ *) continue;;
+ esac
+ everbose "Found kernel: $kernel"
+ label=$(grep -w -l $tag /usr/share/kernel/*/kernel.release | cut -d/ -f5)
+ if [ -z "$label" ]; then
+ if [ "$tag" = vanilla ]; then
+ label="vanilla"
+ else
+ label=$lst
+ fi
+ fi
+ echo "LABEL $label" >> $conf.new
+ if [ "$label" = "$default" ]; then
+ echo " MENU DEFAULT" >> $conf.new
+ fi
+ echo " MENU LABEL Linux $tag" >> $conf.new
+ echo " LINUX $(basename $kernel)" >> $conf.new
+ if [ -f "/boot/initramfs-$tag" ]; then
+ everbose "Found initramfs: /boot/initramfs-$tag"
+ echo " INITRD initramfs-$tag" >> $conf.new
+ fi
+ echo " APPEND root=$root modules=${modules}${TYPE:+,$TYPE} $default_kernel_opts" >> $conf.new
+ echo "" >> $conf.new
+ lst=$(($lst + 1))
+done
+
+if [ -n "$password" ]; then
+ echo "NOESCAPE 1" >> $conf.new
+ echo "MENU MASTER PASSWD $password" >> $conf.new
+ echo "" >> $conf.new
+ chmod o-r $conf.new
+fi
+
+everbose "$lst entries found."
+
+for entry in /etc/update-extlinux.d/*; do
+ [ -f "$entry" ] && { cat $entry; echo ""; } >> $conf.new
+done
+
+echo "MENU SEPARATOR" >> $conf.new
+echo "" >> $conf.new
+
+if [ -f "/boot/hdt.c32" ]; then
+ everbose "Found Hardware Detection Tool: /boot/hdt.c32"
+ echo "LABEL hdt" >> $conf.new
+ echo " MENU LABEL Hardware info" >> $conf.new
+ if [ -n "$password" ]; then
+ echo " MENU PASSWD" >> $conf.new
+ fi
+ echo " COM32 hdt.c32" >> $conf.new
+ if [ -f "/boot/memtest" ]; then
+ everbose "Found memtest86+: /boot/memtest"
+ echo " APPEND memtest=memtest" >> $conf.new
+ fi
+ echo "" >> $conf.new
+elif [ -f "/boot/memtest" ]; then
+ everbose "Found memtest86+: /boot/memtest"
+ echo "LABEL memtest" >> $conf.new
+ echo " MENU LABEL Memtest86+" >> $conf.new
+ echo " KERNEL memtest" >> $conf.new
+ echo "" >> $conf.new
+fi
+
+for i in reboot poweroff; do
+ [ -f "/boot/$i.c32" ] || continue
+ everbose "Found $i"
+ # make first char capital
+ cap=$( echo $i | awk '{sub(".", substr(toupper($0),1,1), $0); print}' )
+ echo "LABEL $i" >> $conf.new
+ echo " MENU LABEL $cap" >> $conf.new
+ echo " COM32 $i.c32" >> $conf.new
+ echo "" >> $conf.new
+done
+
+if cmp -s $conf.new $conf; then
+ everbose "Configuration unchanged."
+ rm $conf.new
+fi
+
+if [ "$overwrite" != "1" ]; then
+ exit 0
+elif [ -f "$conf.new" ]; then
+ # keep a backup just in case
+ if [ -f "$conf" ]; then
+ mv $conf $conf.old
+ fi
+
+ mv $conf.new $conf
+fi
+
+everbose "Installing libutil.c32 libcom32.c32 mboot.c32 menu.c32 vesamenu.c32 to /boot."
+cp /usr/share/syslinux/libutil.c32 \
+ /usr/share/syslinux/libcom32.c32 \
+ /usr/share/syslinux/mboot.c32 \
+ /usr/share/syslinux/menu.c32 \
+ /usr/share/syslinux/vesamenu.c32 \
+ /boot
+
+case "$(stat -f -c '%T' /boot)" in
+ext*) extlinux --update /boot || [ -n "$warn_only" ];;
+esac
+
diff --git a/system/syslinux/update-extlinux.conf b/system/syslinux/update-extlinux.conf
new file mode 100644
index 000000000..39598cb99
--- /dev/null
+++ b/system/syslinux/update-extlinux.conf
@@ -0,0 +1,75 @@
+# configuration for extlinux config builder
+
+# overwrite
+# Overwrite current /boot/extlinux.conf. If this is not '1' we will only
+# write to /boot/extlinux.conf.new
+overwrite=1
+
+# vesa_menu
+# use fancy vesa menu (vesamenu.c32) menus, won't work with serial
+vesa_menu=1
+
+# default_kernel_opts
+# default kernel options
+default_kernel_opts=ro
+
+# modules
+# modules which should be loaded before pivot_root
+modules=
+#sd-mod,usb-storage,ext3
+
+# root
+# root device - if not specified, will be guessed using
+# blkid -o export /dev/root
+root=
+
+# verbose
+# if set to non-zero, update-extlinux will be a lot more verbose.
+verbose=0
+
+# hidden
+# if set to non-zero, the boot menu will be hidden by default.
+hidden=0
+
+# timeout
+# number of seconds to wait before booting default
+timeout=5
+
+# default
+# default kernel to boot
+default=vanilla
+
+# serial_port
+# serial port number - if not specified, serial console will be disabled
+serial_port=
+
+# serial_baud
+# the baudrate for the serial port. Will use 115200 if unset
+serial_baud=115200
+
+# xen_opts
+# options to hand to xen hypervisor, useful ones are:
+# dom0_mem=256M (give domain-0 environment 256M ram)
+xen_opts=dom0_mem=256M
+
+# if you copy /usr/share/syslinux/reboot.c32 to /boot/, a menu entry
+# will be auto-generated for it
+
+# if you copy hdt.c32, libgpl.c32, and libmenu.c32 from /usr/share/syslinux/
+# to /boot/, a menu entry will be auto-generated for HDT
+
+# if you download and install /boot/memtest, then if HDT is present it
+# will use it, else a separate menu entry will be auto-generated for
+# memtest
+
+# optional password
+# you can generate a SHA512 password using: mkpasswd
+#
+# if you assign a password, you should make this file world-unreadable
+#
+# if a password is assigned, the menu entries can't be edited at boot
+# time, and HDT if present is password-protected
+#
+# you can also include "MENU PASSWD" in any custom entries you have in
+# /etc/update-extlinux.d/
+password=''
diff --git a/system/vim/APKBUILD b/system/vim/APKBUILD
new file mode 100644
index 000000000..df46d4b5d
--- /dev/null
+++ b/system/vim/APKBUILD
@@ -0,0 +1,68 @@
+# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=vim
+pkgver=8.0.1240
+pkgrel=0
+pkgdesc="advanced text editor"
+url="http://www.vim.org"
+arch="all"
+license="custom"
+depends=""
+options="!check" # requires controlling TTY, and fails with musl locales
+makedepends="acl-dev ncurses-dev perl-dev python3-dev"
+subpackages="$pkgname-doc ${pkgname}diff::noarch"
+source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz
+ vimrc
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+# secfixes:
+# 8.0.0329-r0:
+# - CVE-2017-5953
+# 8.0.0056-r0:
+# - CVE-2016-1248
+
+prepare() {
+ cd "$builddir"
+ # Read vimrc from /etc/vim
+ echo '#define SYS_VIMRC_FILE "/etc/vim/vimrc"' >> src/feature.h
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --enable-perlinterp \
+ --enable-python3interp=dynamic \
+ --without-x \
+ --enable-acl \
+ --enable-nls \
+ --enable-multibyte \
+ --enable-gui=no \
+ --with-compiledby="Adélie Linux"
+ make
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir/" install
+
+ install -Dm644 runtime/doc/uganda.txt \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+ install -Dm644 "$srcdir"/vimrc "$pkgdir"/etc/vim/vimrc
+}
+
+vimdiff() {
+ pkgdesc="view file diffs in vim"
+ depends="diffutils"
+
+ install -d "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/vimdiff "$subpkgdir"/usr/bin
+}
+
+sha512sums="12f213b9fa61294359e5376605d4d7cd4a329fcfd1b3bcdbf3c9e4c4baf6bf0cc013a7670a173d84e0ef6a210705ddba8fc39a8222744b3779d6493d92c99d29 vim-8.0.1240.tar.gz
+95d4ad2e86c4490814fa6047c9d2d57a8acffb6c286a81483faac44d0648874dc9669fee7d29ce98612f5ab8afe68480c29e4128a7aa7f99465dd8de298145c3 vimrc"
diff --git a/system/vim/vimrc b/system/vim/vimrc
new file mode 100644
index 000000000..4849a16d1
--- /dev/null
+++ b/system/vim/vimrc
@@ -0,0 +1,18 @@
+set nocompatible " Use Vim defaults (much better!)
+set bs=2 " Allow backspacing over everything in insert mode
+set ai " Always set auto-indenting on
+set history=50 " keep 50 lines of command history
+set ruler " Show the cursor position all the time
+
+set mouse= " Use Vim 7 default of no mouse movements by default
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" When doing tab completion, give the following files lower priority.
+set suffixes+=.info,.aux,.log,.dvi,.bbl,.out,.o,.lo
+
+set nomodeline
+syntax on
+color desert
+autocmd BufRead APKBUILD set filetype=sh
diff --git a/system/vlc/APKBUILD b/system/vlc/APKBUILD
new file mode 100644
index 000000000..95a9b9fea
--- /dev/null
+++ b/system/vlc/APKBUILD
@@ -0,0 +1,359 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=vlc
+pkgver=3.0.1
+_pkgver=${pkgver/_/-}
+_ver=${_pkgver%[a-z]}
+pkgrel=0
+pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
+triggers="vlc-libs.trigger=/usr/lib/vlc/plugins"
+pkgusers="vlc"
+pkggroups="vlc"
+url="https://www.videolan.org/vlc/"
+arch="all"
+license="GPL-2.0-or-later"
+options="!checkroot textrel"
+subpackages="$pkgname-dev
+ $pkgname-doc
+ $pkgname-qt
+ $pkgname-xorg
+ $pkgname-daemon::noarch
+ $pkgname-libs
+ $pkgname-plugins
+
+ $pkgname-plugins-access:plugins_access
+ $pkgname-plugins-access_output:plugins_access_output
+ $pkgname-plugins-audio_filter:plugins_audio_filter
+ $pkgname-plugins-audio_mixer:plugins_audio_mixer
+ $pkgname-plugins-audio_output:plugins_audio_output
+ $pkgname-plugins-codec:plugins_codec
+ $pkgname-plugins-control:plugins_control
+ $pkgname-plugins-demux:plugins_demux
+ $pkgname-plugins-gui:plugins_gui
+ $pkgname-plugins-lua:plugins_lua
+ $pkgname-plugins-meta_engine:plugins_meta_engine
+ $pkgname-plugins-misc:plugins_misc
+ $pkgname-plugins-mux:plugins_mux
+ $pkgname-plugins-notify:plugins_notify
+ $pkgname-plugins-packetizer:plugins_packetizer
+ $pkgname-plugins-services_discovery:plugins_services_discovery
+ $pkgname-plugins-stream_filter:plugins_stream_filter
+ $pkgname-plugins-stream_out:plugins_stream_out
+ $pkgname-plugins-text_renderer:plugins_text_renderer
+ $pkgname-plugins-video_chroma:plugins_video_chroma
+ $pkgname-plugins-video_filter:plugins_video_filter
+ $pkgname-plugins-video_output:plugins_video_output
+ $pkgname-plugins-visualization:plugins_visualization"
+depends="ttf-dejavu $pkgname-plugins"
+makedepends="
+ a52dec-dev
+ alsa-lib-dev
+ automake
+ autoconf
+ bison
+ libtool
+ dbus-dev
+ faad2-dev
+ ffmpeg-dev
+ flac-dev
+ flex
+ fluidsynth-dev
+ freetype-dev
+ fribidi-dev
+ gtk+3.0-dev
+ libbluray-dev>=0.2.1 libbluray-dev<20100000
+ libavc1394-dev
+ libcddb-dev
+ libdc1394-dev>=2.1.0
+ libdca-dev
+ libdvbpsi-dev
+ libdvdnav-dev
+ libdvdread-dev
+ libgcrypt-dev
+ libice-dev
+ libmad-dev
+ libmatroska-dev
+ libmpeg2-dev
+ libnotify-dev
+ libogg-dev
+ libraw1394-dev>=2.0.1
+ librsvg-dev
+ libshout-dev
+ libsm-dev
+ libtheora-dev
+ libva-dev
+ libvdpau-dev
+ libvorbis-dev
+ libvpx-dev
+ libx11-dev
+ libxext-dev
+ libxinerama-dev
+ libxml2-dev
+ libxpm-dev
+ libxv-dev
+ live-media-dev>=2012.01.26
+ lua5.2-dev
+ mesa-dev
+ ncurses-dev
+ opus-dev
+ pkgconfig
+ pulseaudio-dev
+ qt5-qtbase-dev
+ qt5-qtsvg-dev
+ sdl2-dev
+ speex-dev
+ speexdsp-dev
+ sysfsutils-dev
+ taglib-dev
+ eudev-dev
+ v4l-utils-dev
+ wayland-protocols
+ x264-dev
+ x265-dev
+ xcb-util-renderutil-dev
+ xcb-util-keysyms-dev
+ xdg-utils
+ "
+source="http://get.videolan.org/vlc/$_ver/vlc-$_ver.tar.xz
+ omxil-rpi-codecs.patch
+ check-headless.patch
+ disable-sub-autodetect-fuzzy-1-test.patch
+ fribidi-update.patch
+ tar-compat.patch
+ test-s390x.patch
+ vlc-libs.trigger"
+
+builddir="$srcdir"/$pkgname-$_ver
+
+prepare() {
+ default_prepare
+ NOCONFIGURE=1 ./bootstrap
+}
+
+build() {
+ local _arch_opts=
+ cd "$builddir"
+ export CFLAGS="$CFLAGS -D_GNU_SOURCE"
+
+ case "$CARCH" in
+ arm*) _arch_opts="--enable-omxil --enable-omxil-vout --enable-rpi-omxil" ;;
+ ppc64*) _arch_opts="--enable-altivec" ;;
+ esac
+
+ LUA=lua5.2 \
+ LUAC=luac5.2 \
+ BUILDCC="${CC:-gcc} -std=c99" \
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --disable-mmx \
+ --disable-sse \
+ --enable-nls \
+ --enable-optimizations \
+ --enable-optimize-memory \
+ --disable-rpath \
+ --enable-a52 \
+ --enable-avcodec \
+ --enable-avformat \
+ --enable-bluray \
+ --enable-cdda \
+ --enable-dbus \
+ --enable-dc1394 \
+ --enable-dca \
+ --enable-dvbpsi \
+ --enable-dvdread \
+ --enable-dvdnav \
+ --enable-faad \
+ --enable-flac \
+ --enable-fluidsynth \
+ --enable-jpeg \
+ --enable-libcddb \
+ --enable-libmpeg2 \
+ --enable-libva \
+ --enable-live555 \
+ --enable-mad \
+ --enable-merge-ffmpeg \
+ --enable-notify \
+ --enable-ncurses \
+ --enable-ogg \
+ --enable-opus \
+ --enable-png \
+ --enable-pulse \
+ --enable-qt \
+ --enable-realrtsp \
+ --enable-shout \
+ --enable-skins2 \
+ --enable-speex \
+ --enable-sout \
+ --enable-taglib \
+ --enable-theora \
+ --enable-udev \
+ --enable-v4l2 \
+ --enable-vdpau \
+ --enable-vlm \
+ --enable-vorbis \
+ --enable-vpx \
+ --enable-wma-fixed \
+ --enable-x264 \
+ --enable-x265 \
+ --enable-xvideo \
+ $_arch_opts
+
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ # delete cache as it's autocreated by trigger
+ rm -rf "$pkgdir"/usr/lib/vlc/plugins/plugins.dat
+ # delete unneeded mozilla and kde support files
+ rm -rf "$pkgdir"/usr/lib/mozilla
+ rm -rf "$pkgdir"/usr/share/kde4
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+plugins() {
+ pkgdesc="$pkgname all plugins meta package"
+ depends="$pkgname-plugins-access
+ $pkgname-plugins-access_output
+ $pkgname-plugins-audio_filter
+ $pkgname-plugins-audio_mixer
+ $pkgname-plugins-audio_output
+ $pkgname-plugins-codec
+ $pkgname-plugins-control
+ $pkgname-plugins-demux
+ $pkgname-plugins-gui
+ $pkgname-plugins-lua
+ $pkgname-plugins-meta_engine
+ $pkgname-plugins-misc
+ $pkgname-plugins-mux
+ $pkgname-plugins-notify
+ $pkgname-plugins-packetizer
+ $pkgname-plugins-services_discovery
+ $pkgname-plugins-stream_filter
+ $pkgname-plugins-stream_out
+ $pkgname-plugins-text_renderer
+ $pkgname-plugins-video_chroma
+ $pkgname-plugins-video_filter
+ $pkgname-plugins-video_output
+ $pkgname-plugins-visualization"
+ mkdir -p "$subpkgdir"
+}
+
+_mv() {
+ local dir=${1%/*}
+ mkdir -p "$subpkgdir"/$dir
+ mv "$1" "$subpkgdir"/$dir/
+}
+
+qt() {
+ pkgdesc="Qt frontend for VLC"
+ depends="vlc-xorg=$pkgver-r$pkgrel"
+ cd "$pkgdir"
+ # scan for elf files that directly or indirectly depends on
+ # libQt* libraries
+ cd "$pkgdir"
+ for i in $(find . -type f ); do
+ if ldd $i 2>/dev/null | grep -q "libQt"; then
+ _mv "$i" || return 1
+ fi
+ done
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/qvlc \
+ "$subpkgdir"/usr/bin/
+}
+
+xorg() {
+ pkgdesc="Video LAN X.org support"
+ depends="xdg-utils vlc=$pkgver-r$pkgrel"
+
+ # scan for elf files that directly or indirectly depends on
+ # libX* libraries
+ cd "$pkgdir"
+ for i in $(find . -type f ); do
+ if ldd $i 2>/dev/null | grep -E -q "libX|x11|libxcb|libGL"; then
+ echo $i | grep libavcodec_plugin.so || _mv "$i" || return 1
+ fi
+ done
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/svlc \
+ "$subpkgdir"/usr/bin
+
+ mkdir -p "$subpkgdir"/usr/share/vlc
+ mv "$pkgdir"/usr/share/applications \
+ "$pkgdir"/usr/share/icons \
+ "$subpkgdir"/usr/share/
+
+ mv "$pkgdir"/usr/share/vlc/skins2 \
+ "$subpkgdir"/usr/share/vlc
+}
+
+daemon() {
+ pkgdesc="Support for running VLC as a daemon"
+ install="vlc-daemon.pre-install"
+ depends="vlc=$pkgver-r$pkgrel"
+
+ mkdir -p "$subpkgdir"
+ cd "$pkgdir"
+ install -D -m755 ../../vlc.initd $subpkgdir/etc/init.d/vlc
+ install -D -m664 ../../vlc.confd $subpkgdir/etc/conf.d/vlc
+ install -d -o vlc -g vlc "$subpkgdir"/var/log/vlc
+}
+
+libs() {
+ depends=
+ mkdir -p "$subpkgdir"/usr/lib/vlc
+ mv "$pkgdir"/usr/lib/vlc/vlc-cache-gen \
+ "$subpkgdir"/usr/lib/vlc/
+ default_libs
+}
+
+_mv_plugins() {
+ local plugin=$1
+ pkgdesc="$pkgname $plugin plugin"
+ depends=
+ mkdir -p "$subpkgdir"/usr/lib/vlc/plugins
+ mv "$pkgdir"/usr/lib/vlc/plugins/"$plugin" \
+ "$subpkgdir"/usr/lib/vlc/plugins
+}
+
+plugins_access() { _mv_plugins access; }
+plugins_access_output() { _mv_plugins access_output; }
+plugins_audio_filter() { _mv_plugins audio_filter; }
+plugins_audio_mixer() { _mv_plugins audio_mixer; }
+plugins_audio_output() { _mv_plugins audio_output; }
+plugins_codec() { _mv_plugins codec; }
+plugins_control() { _mv_plugins control; }
+plugins_demux() { _mv_plugins demux; }
+plugins_gui() { _mv_plugins gui; }
+plugins_lua() { _mv_plugins lua; }
+plugins_meta_engine() { _mv_plugins meta_engine; }
+plugins_misc() { _mv_plugins misc; }
+plugins_mux() { _mv_plugins mux; }
+plugins_notify() { _mv_plugins notify; }
+plugins_packetizer() { _mv_plugins packetizer; }
+plugins_services_discovery() { _mv_plugins services_discovery; }
+plugins_stream_filter() { _mv_plugins stream_filter; }
+plugins_stream_out() { _mv_plugins stream_out; }
+plugins_text_renderer() { _mv_plugins text_renderer; }
+plugins_video_chroma() { _mv_plugins video_chroma; }
+plugins_video_filter() { _mv_plugins video_filter; }
+plugins_video_output() { _mv_plugins video_output; }
+plugins_visualization() { _mv_plugins visualization; }
+
+sha512sums="f2ba7586e8fb8c04484e62809265ec998e875b1eff03262bbf463370277a318816cbb8d260901c774e59443393b16b040cb714019c80e051578008abbf91b13c vlc-3.0.1.tar.xz
+e13e398b7bfd977f6e099bcb6cf8dc5cd5bad6dea3eff715881826246dc4329468846084aff2576de2b7fd28d3f06e7c327a6e4511a28d22e5cd198a81146c89 omxil-rpi-codecs.patch
+22d80df599b8b65a5439cefbb7140af8e9530f326d54945da3769af65f37518b99ec2cc8647aafd2763324a0698280915afe043cc87e5720c4694881ed35bffa check-headless.patch
+e214b407235cb3afb8bec93f20c9b42957b57e6fd3960679d3d4235e77762e03e64d03c01f00ef63d589e7c85aaad02ce6abbeeccd66b1867bc92451a5b5e9b0 disable-sub-autodetect-fuzzy-1-test.patch
+3338531d385f76d9eedf10498d1b0b78565c531eedb3018d4500e377815f9ccbfcc16ec398cb8559bcc624f65b61d376125c4a5e6880cbad90ec9880dd4b9ce5 fribidi-update.patch
+a117ca4d7fd66a5f959fdeaddfdce2f8442fe9f2c13995bb7f4792a7745c00813813aa962f76e957e3b0735344a5dc000e0644ce09f23458802a2932231655c3 tar-compat.patch
+c0107655249687655846a9547ca1a5670b9207443180600e7a149c69ffb96d7226787c19b018d4033db9b284c1a5faa8d7d42188ed40c3b8bb051256febf11c5 test-s390x.patch
+b67b6e21e9d4027aef1006e6057f9ba8e65ce3895b08f7b911b1675cff9bc423f64ee2c187c584860e9e5d4635a30408a7781add9694d9bba753eac37f357406 vlc-libs.trigger"
diff --git a/system/vlc/check-headless.patch b/system/vlc/check-headless.patch
new file mode 100644
index 000000000..25016f437
--- /dev/null
+++ b/system/vlc/check-headless.patch
@@ -0,0 +1,13 @@
+diff --git a/test/run_vlc.sh b/test/run_vlc.sh
+index af35987..9a0175b 100755
+--- a/test/run_vlc.sh
++++ b/test/run_vlc.sh
+@@ -2,7 +2,7 @@
+
+ set -e
+
+-VLC="./vlc --ignore-config --rc-fake-tty"
++VLC="./vlc -I dummy --ignore-config --rc-fake-tty"
+
+ $VLC -H
+ $VLC -vv vlc://quit
diff --git a/system/vlc/disable-sub-autodetect-fuzzy-1-test.patch b/system/vlc/disable-sub-autodetect-fuzzy-1-test.patch
new file mode 100644
index 000000000..b3dd8a1b7
--- /dev/null
+++ b/system/vlc/disable-sub-autodetect-fuzzy-1-test.patch
@@ -0,0 +1,20 @@
+This test fails on x86 and s390x so disable it for now
+reported upstream: https://trac.videolan.org/vlc/ticket/19321
+
+diff --git a/test/libvlc/slaves.c b/test/libvlc/slaves.c
+index 7b2c24fa43..7c47b3147b 100644
+--- a/test/libvlc/slaves.c
++++ b/test/libvlc/slaves.c
+@@ -194,10 +194,12 @@ main (void)
+ assert(p_expected_slaves[i].psz_uri != NULL);
+ }
+
++#if 0
+ printf("== Testing --sub-autodetect-fuzzy 1 (everything) ==\n");
+ test_media_has_slaves_from_parent(p_vlc, SLAVES_DIR "/test.mp4",
+ p_expected_slaves,
+ EXPECTED_SLAVES_COUNT);
++#endif
+ libvlc_release(p_vlc);
+
+ printf("== Testing --sub-autodetect-fuzzy 2 (full, left, and right match) ==\n");
diff --git a/system/vlc/fribidi-update.patch b/system/vlc/fribidi-update.patch
new file mode 100644
index 000000000..fd293eea4
--- /dev/null
+++ b/system/vlc/fribidi-update.patch
@@ -0,0 +1,83 @@
+From 26e2d3906658c30f2f88f4b1bc9630ec43bf5525 Mon Sep 17 00:00:00 2001
+From: Shaleen Jain <shaleen@jain.sh>
+Date: Sun, 25 Feb 2018 18:42:27 +0530
+Subject: [PATCH 1/1] fribidi: update for version 1.0
+
+Update functions deprecated in version 1.0 when building with release 1.0 and
+above.
+
+Signed-off-by: Thomas Guillem <thomas@gllm.fr>
+---
+ modules/text_renderer/freetype/text_layout.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/modules/text_renderer/freetype/text_layout.c b/modules/text_renderer/freetype/text_layout.c
+index 13efd567b4..1a28786d09 100644
+--- a/modules/text_renderer/freetype/text_layout.c
++++ b/modules/text_renderer/freetype/text_layout.c
+@@ -153,6 +153,9 @@ typedef struct paragraph_t
+
+ #ifdef HAVE_FRIBIDI
+ FriBidiCharType *p_types;
++#if FRIBIDI_MAJOR_VERSION >= 1
++ FriBidiBracketType *p_btypes;
++#endif
+ FriBidiLevel *p_levels;
+ FriBidiStrIndex *pi_reordered_indices;
+ FriBidiParType paragraph_type;
+@@ -361,6 +364,9 @@ static paragraph_t *NewParagraph( filter_t *p_filter,
+ #ifdef HAVE_FRIBIDI
+ p_paragraph->p_levels = vlc_alloc( i_size, sizeof( *p_paragraph->p_levels ) );
+ p_paragraph->p_types = vlc_alloc( i_size, sizeof( *p_paragraph->p_types ) );
++#if FRIBIDI_MAJOR_VERSION >= 1
++ p_paragraph->p_btypes = vlc_alloc( i_size, sizeof( *p_paragraph->p_btypes ) );
++#endif
+ p_paragraph->pi_reordered_indices =
+ vlc_alloc( i_size, sizeof( *p_paragraph->pi_reordered_indices ) );
+
+@@ -398,6 +404,9 @@ error:
+ #ifdef HAVE_FRIBIDI
+ if( p_paragraph->p_levels ) free( p_paragraph->p_levels );
+ if( p_paragraph->p_types ) free( p_paragraph->p_types );
++#if FRIBIDI_MAJOR_VERSION >= 1
++ if( p_paragraph->p_btypes ) free( p_paragraph->p_btypes );
++#endif
+ if( p_paragraph->pi_reordered_indices )
+ free( p_paragraph->pi_reordered_indices );
+ #endif
+@@ -424,6 +433,9 @@ static void FreeParagraph( paragraph_t *p_paragraph )
+ #ifdef HAVE_FRIBIDI
+ free( p_paragraph->pi_reordered_indices );
+ free( p_paragraph->p_types );
++#if FRIBIDI_MAJOR_VERSION >= 1
++ free( p_paragraph->p_btypes );
++#endif
+ free( p_paragraph->p_levels );
+ #endif
+
+@@ -436,10 +448,22 @@ static int AnalyzeParagraph( paragraph_t *p_paragraph )
+ fribidi_get_bidi_types( p_paragraph->p_code_points,
+ p_paragraph->i_size,
+ p_paragraph->p_types );
++#if FRIBIDI_MAJOR_VERSION >= 1
++ fribidi_get_bracket_types( p_paragraph->p_code_points,
++ p_paragraph->i_size,
++ p_paragraph->p_types,
++ p_paragraph->p_btypes );
++ fribidi_get_par_embedding_levels_ex( p_paragraph->p_types,
++ p_paragraph->p_btypes,
++ p_paragraph->i_size,
++ &p_paragraph->paragraph_type,
++ p_paragraph->p_levels );
++#else
+ fribidi_get_par_embedding_levels( p_paragraph->p_types,
+ p_paragraph->i_size,
+ &p_paragraph->paragraph_type,
+ p_paragraph->p_levels );
++#endif
+
+ #ifdef HAVE_HARFBUZZ
+ hb_unicode_funcs_t *p_funcs = hb_unicode_funcs_get_default();
+--
+2.11.0
+
diff --git a/system/vlc/omxil-rpi-codecs.patch b/system/vlc/omxil-rpi-codecs.patch
new file mode 100644
index 000000000..9b7accfe7
--- /dev/null
+++ b/system/vlc/omxil-rpi-codecs.patch
@@ -0,0 +1,15 @@
+--- vlc-2.2.0/modules/codec/omxil/omxil_core.c.orig 2015-02-28 08:37:54.044936036 -0200
++++ vlc-2.2.0/modules/codec/omxil/omxil_core.c 2015-02-28 08:38:38.738271654 -0200
+@@ -204,6 +204,12 @@
+ #ifdef RPI_OMX
+ { "video_decoder.avc", "OMX.broadcom.video_decode" },
+ { "video_decoder.mpeg2", "OMX.broadcom.video_decode" },
++ { "video_decoder.mpeg4", "OMX.broadcom.video_decode" },
++ { "video_decoder.vp6", "OMX.broadcom.video_decode" },
++ { "video_decoder.vp8", "OMX.broadcom.video_decode" },
++ { "video_decoder.theora", "OMX.broadcom.video_decode" },
++ { "video_decoder.mjpg", "OMX.broadcom.video_decode" },
++ { "video_decoder.vc1", "OMX.broadcom.video_decode" },
+ { "iv_renderer", "OMX.broadcom.video_render" },
+ #endif
+ { 0, 0 }
diff --git a/system/vlc/tar-compat.patch b/system/vlc/tar-compat.patch
new file mode 100644
index 000000000..34169ef56
--- /dev/null
+++ b/system/vlc/tar-compat.patch
@@ -0,0 +1,11 @@
+--- vlc-3.0.1/share/Makefile.am.old 2018-02-06 18:41:06.000000000 +0000
++++ vlc-3.0.1/share/Makefile.am 2018-04-05 23:19:37.081889895 +0000
+@@ -94,7 +94,7 @@
+ $(AM_V_at)rm -f -- skins2/default.vlt.tmp
+ $(AM_V_GEN)GZIP=--no-name \
+ tar cvvzf skins2/default.vlt.tmp \
+- --owner=root --group=root --directory="$(srcdir)/skins2" \
++ --uid=0 --gid=0 --directory="$(srcdir)/skins2" \
+ default/
+ $(AM_V_at)mv -f -- skins2/default.vlt.tmp skins2/default.vlt
+
diff --git a/system/vlc/test-s390x.patch b/system/vlc/test-s390x.patch
new file mode 100644
index 000000000..8f221ee06
--- /dev/null
+++ b/system/vlc/test-s390x.patch
@@ -0,0 +1,13 @@
+diff --git a/test/modules/packetizer/hxxx.c b/test/modules/packetizer/hxxx.c
+index 93362a1..e1b7604 100644
+--- a/test/modules/packetizer/hxxx.c
++++ b/test/modules/packetizer/hxxx.c
+@@ -210,7 +210,7 @@ static void test_annexb()
+
+ int main( void )
+ {
+- test_annexb();
++ //test_annexb();
+
+ return 0;
+ }
diff --git a/system/vlc/vlc-daemon.pre-install b/system/vlc/vlc-daemon.pre-install
new file mode 100644
index 000000000..aed6c1893
--- /dev/null
+++ b/system/vlc/vlc-daemon.pre-install
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+groups="vlc audio video"
+
+for group in $groups; do
+ addgroup -S $group 2>/dev/null
+done
+adduser -S -D -h /home/vlc -s /bin/sh -G vlc -g vlc vlc 2>/dev/null
+
+# make sure vlc are in all groups
+for group in $groups; do
+ addgroup vlc $group 2>/dev/null
+done
+
+exit 0
diff --git a/system/vlc/vlc-libs.trigger b/system/vlc/vlc-libs.trigger
new file mode 100644
index 000000000..c13bace99
--- /dev/null
+++ b/system/vlc/vlc-libs.trigger
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+exec /usr/lib/vlc/vlc-cache-gen "$@" >&/dev/null
+exit 0
+
diff --git a/system/vlc/vlc.confd b/system/vlc/vlc.confd
new file mode 100644
index 000000000..9a58842bd
--- /dev/null
+++ b/system/vlc/vlc.confd
@@ -0,0 +1,15 @@
+# Sample vlc params suitable for running as a daemon
+
+## --file-logging enable file logging
+## --logfile logfile name/path
+## -vvv verbose logging
+## -I dummy disable X11 interface
+## --sout PARAMS encoding parameters
+
+
+## Do NOT quote 'PARAMS' otherwise shell expansions will broke vlc
+##
+## The --daemon option will automatically be added so no need to add it
+## here.
+
+VLC_OPTS="--quiet -I dummy alsa://hw:0,0 --file-logging --logfile /var/log/vlc/vlc.log --sout #transcode{acodec=mp3,ab=48,channels=1,samplerate=22050}:std{access=http,mux=ogg,dst=:8080}"
diff --git a/system/vlc/vlc.initd b/system/vlc/vlc.initd
new file mode 100755
index 000000000..541a07180
--- /dev/null
+++ b/system/vlc/vlc.initd
@@ -0,0 +1,32 @@
+#!/sbin/openrc-run
+
+description="VideoLAN daemon"
+pidfile="/var/run/vlc/${RC_SVCNAME}.pid"
+command="/usr/bin/vlc"
+
+depend() {
+ need net
+ after firewall
+}
+
+start_pre() {
+ checkpath --directory --owner vlc:vlc --mode 775 ${pidfile%/*}
+}
+
+start() {
+ ebegin "Starting ${RC_SVCNAME}"
+ start-stop-daemon --start \
+ --user vlc \
+ --pidfile ${pidfile} \
+ --exec ${command} \
+ -- \
+ --daemon --pidfile ${pidfile} ${VLC_OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${RC_SVCNAME}"
+ start-stop-daemon --stop \
+ --pidfile ${pidfile}
+ eend $?
+}
diff --git a/system/wine/APKBUILD b/system/wine/APKBUILD
new file mode 100644
index 000000000..b1aaad45b
--- /dev/null
+++ b/system/wine/APKBUILD
@@ -0,0 +1,139 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Martell Malone <martell@marinelayer.io>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=wine
+pkgver=3.0
+_pkgver=${pkgver/_/-}
+pkgrel=0
+pkgdesc="A compatibility layer for running Windows programs"
+url="http://www.winehq.com"
+arch="pmmx x86 x86_64"
+license="LGPL-2.0-or-later"
+# As of 2.0.3 most of the tests fails
+options="!check"
+subpackages="$pkgname-libs $pkgname-dev $pkgname-doc"
+depends_dev="$pkgname perl"
+makedepends="fontconfig-dev openldap-dev libxslt-dev libxxf86dga-dev
+ libxcursor-dev libxrandr-dev libxdamage-dev mesa-dev flex-dev bison
+ libpng-dev libjpeg-turbo-dev freetype-dev ncurses-dev libressl-dev
+ libxcomposite-dev libxrender-dev libxinerama-dev zlib-dev
+ cups-dev alsa-lib-dev lcms-dev libxml2-dev paxmark dbus-dev libxi-dev
+ gnutls-dev tiff-dev v4l-utils-dev udisks2-dev autoconf automake
+ openal-soft-dev pulseaudio-dev sane-dev eudev-dev
+ "
+source="http://dl.winehq.org/$pkgname/source/${pkgver%.[1-9]}/$pkgname-$_pkgver.tar.xz
+ no-pie.patch
+ winhlp32-flex.patch
+ "
+builddir="$srcdir/$pkgname-$_pkgver"
+
+prepare() {
+ cd "$builddir"
+
+ default_prepare
+ aclocal && autoheader && autoreconf
+}
+
+build() {
+ cd "$builddir"
+
+ case "$CARCH" in
+ x86_64) _win64=--enable-win64;;
+ esac
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --libdir=/usr/lib \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-cups \
+ --with-curses \
+ --with-dbus \
+ --with-fontconfig \
+ --with-freetype \
+ --with-jpeg \
+ --with-openal \
+ --with-opengl \
+ --with-png \
+ --with-pulse \
+ --with-sane \
+ --with-udev \
+ --with-va \
+ --with-x \
+ --with-xcomposite \
+ --with-xinerama \
+ --with-xslt \
+ $_win64
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ local file
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+
+ case "$CARCH" in
+ x86_64) _wine="wine64";;
+ *) _wine="wine";;
+ esac
+
+ paxmark -psmre "$pkgdir"/usr/bin/$_wine-preloader \
+ "$pkgdir"/usr/bin/$_wine
+
+ install -Dm755 tools/wineapploader \
+ "$pkgdir"/usr/bin/wineapploader
+
+ for file in msiexec notepad regedit regsvr32 wineboot \
+ winecfg wineconsole winefile winemine winepath
+ do
+ rm "$pkgdir"/usr/bin/$file
+ ln -sf /usr/bin/wineapploader "$pkgdir"/usr/bin/$file
+ done
+}
+
+dev() {
+ local file
+ default_dev
+
+ install -d "$subpkgdir"/usr/bin
+ for file in widl wmc wrc winebuild winedump function_grep.pl \
+ winedbg winemaker winegcc winecpp wineg++
+ do
+ mv "$pkgdir"/usr/bin/$file "$subpkgdir"/usr/bin/
+ done
+
+ install -d "$subpkgdir"/usr/lib/wine
+ mv "$pkgdir"/usr/lib/wine/*.def "$subpkgdir"/usr/lib/wine/
+}
+
+doc() {
+ default_doc
+ rm -fr "$subpkgdir"/usr/share/man/*.UTF-8
+}
+
+libs() {
+ local file ext
+ default_libs
+
+ install -d "$subpkgdir"/usr/lib/wine/fakedlls
+ for ext in dll16 drv16 exe16 acm dll drv ds ocx sys tlb vxd; do
+ for file in $(find "$pkgdir/usr/lib/wine/fakedlls" -name "*.$ext"); do
+ mv "$pkgdir"/usr/lib/wine/fakedlls/${file##*/} \
+ "$subpkgdir"/usr/lib/wine/fakedlls/
+ mv "$pkgdir"/usr/lib/wine/${file##*/}.so \
+ "$subpkgdir"/usr/lib/wine/
+ done
+ done
+}
+
+sha512sums="a51f41b66f4805e09b223528eff6670e94b9c0c0c947be647507baf9d8d9afe7c3fdc88684c2c8d3573b4739d9a086ab929a744a8594d3c8f6ceb52070f43f0a wine-3.0.tar.xz
+d853875f7d659617bdfba364704abd75b760d12977f1f13acc73acb3c8fefec0549677fb79a4f8955e073d64078b3071d63d97262522e22b7832a66d3d820a9c no-pie.patch
+522a94a31fc459e80ea7dd05f7aee64f6ae666ec05236d06614acde118d5c60002e0f253ae75edb5f02164f22937ca89578504b690d1a5611bd60f703c8f0c00 winhlp32-flex.patch"
diff --git a/system/wine/no-pie.patch b/system/wine/no-pie.patch
new file mode 100644
index 000000000..5fb5d87b6
--- /dev/null
+++ b/system/wine/no-pie.patch
@@ -0,0 +1,14 @@
+diff --git a/loader/Makefile.in b/loader/Makefile.in
+index 8190037..437d4d9 100644
+--- a/loader/Makefile.in
++++ b/loader/Makefile.in
+@@ -26,7 +26,7 @@ wine64_DEPS = $(WINELOADER_DEPENDS)
+ wine64_LDFLAGS = $(LDEXECFLAGS) -lwine $(PTHREAD_LIBS)
+
+ wine_preloader_OBJS = preloader.o
+-wine_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
++wine_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 -no-pie
+
+ wine64_preloader_OBJS = preloader.o
+-wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
++wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 -no-pie
diff --git a/system/wine/nopie.patch b/system/wine/nopie.patch
new file mode 100644
index 000000000..54eb141be
--- /dev/null
+++ b/system/wine/nopie.patch
@@ -0,0 +1,10 @@
+diff --git a/loader/Makefile.in b/loader/Makefile.in
+index 8190037..b4f2902 100644
+--- a/loader/Makefile.in
++++ b/loader/Makefile.in
+@@ -29,4 +29,4 @@ wine_preloader_OBJS = preloader.o
+ wine_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
+
+ wine64_preloader_OBJS = preloader.o
+-wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
++wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 -no-pie
diff --git a/system/wine/winhlp32-flex.patch b/system/wine/winhlp32-flex.patch
new file mode 100644
index 000000000..daeb790c2
--- /dev/null
+++ b/system/wine/winhlp32-flex.patch
@@ -0,0 +1,9 @@
+--- a/programs/winhlp32/Makefile.in
++++ b/programs/winhlp32/Makefile.in
+@@ -1,5 +1,5 @@
+ MODULE = winhlp32.exe
+-APPMODE = -mwindows
++APPMODE = -mwindows -lfl
+ IMPORTS = user32 gdi32
+ DELAYIMPORTS = shell32 comctl32 comdlg32
+
diff --git a/user/acpilight/APKBUILD b/user/acpilight/APKBUILD
new file mode 100644
index 000000000..97956accd
--- /dev/null
+++ b/user/acpilight/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=acpilight
+pkgver=1.0.1
+pkgrel=0
+pkgdesc="Control backlight brightness level"
+url="https://github.com/wavexx/acpilight"
+arch="noarch"
+license="GPL-3.0"
+depends="eudev python3"
+makedepends=""
+install="$pkgname.post-install"
+subpackages="$pkgname-doc"
+options="!check" # Just a udev rule and a python script
+source="$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz
+ python3.patch
+ rules-warning.patch"
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+}
+
+package() {
+ cd "$builddir"
+ install -Dm755 xbacklight \
+ "$pkgdir/usr/bin/xbacklight"
+ install -Dm644 90-backlight.rules \
+ "$pkgdir/lib/udev/rules.d/90-$pkgname.rules"
+ install -Dm644 xbacklight.1 \
+ "$pkgdir/usr/share/man/man1/xbacklight.1"
+}
+
+sha512sums="c9b5805f919172d4806942ba1987d0c11fda420a807c45c404eda83cbcfc6011729b09d7ae3113106e006d2ed65ab26e4932869305e48d9493514b597c6e9713 acpilight-1.0.1.tar.gz
+9ed3bc124a0120d7d4ea8831e7bef715c5c45b3e3389aed55261cf436db8cb123a8bffe463a29107cb27161a59ed6a31623e23f2b55797c99be92a2d26eabca0 python3.patch
+63521df95b943c941c6687960b69f4ca51f2b36c3d390ef50738034f13afbab175b0a69c7874bc47bc85a1b8d877a26427eba3a264803b700ff652c3c28cd2ad rules-warning.patch"
diff --git a/user/acpilight/acpilight.post-install b/user/acpilight/acpilight.post-install
new file mode 100644
index 000000000..0e64cf725
--- /dev/null
+++ b/user/acpilight/acpilight.post-install
@@ -0,0 +1,11 @@
+#!/bin/sh
+chgrp video /sys/class/backlight/*/brightness || true
+chmod g+w /sys/class/backlight/*/brightness || true
+chgrp video /sys/class/leds/*/brightness || true
+chmod g+w /sys/class/leds/*/brightness || true
+
+echo "*"
+echo "* Any user wishing to use xbacklight must be in the 'video' group."
+echo "* Check using 'groups \$USER' and add using 'usermod -aG video \$USER'."
+echo "*"
+exit 0
diff --git a/user/acpilight/python3.patch b/user/acpilight/python3.patch
new file mode 100644
index 000000000..ab0ffe61f
--- /dev/null
+++ b/user/acpilight/python3.patch
@@ -0,0 +1,22 @@
+--- acpilight-1.0/xbacklight 2017-02-23 21:03:30.000000000 +0000
++++ acpilight-1.0/xbacklight 2018-01-13 08:52:42.400000000 +0000
+@@ -1,9 +1,8 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+ # xbacklight: control backlight and led brightness on linux using the sys
+ # filesystem with a backward-compatibile user interface
+ # Copyright(c) 2016-2017 by wave++ "Yuri D'Elia" <wavexx@thregr.org>
+ # -*- coding: utf-8 -*-
+-from __future__ import print_function, division, generators
+
+ APP_DESC = "control backlight brightness"
+ SYS_PATH = ["/sys/class/backlight", "/sys/class/leds"]
+@@ -99,7 +98,7 @@
+
+ # set current operating controller
+ if args.ctrl is None:
+- ctrl = Controller(next(iter(ctrls.values())))
++ ctrl = Controller(next(iter(list(ctrls.values()))))
+ else:
+ if args.ctrl not in ctrls:
+ error("unknown controller '{}'".format(args.ctrl))
diff --git a/user/acpilight/rules-warning.patch b/user/acpilight/rules-warning.patch
new file mode 100644
index 000000000..45c7abacb
--- /dev/null
+++ b/user/acpilight/rules-warning.patch
@@ -0,0 +1,8 @@
+--- acpilight-1.0/90-backlight.rules 2017-02-23 21:03:30.000000000 +0000
++++ acpilight-1.0/90-backlight.rules 2018-01-13 09:14:11.290000000 +0000
+@@ -1,4 +1,5 @@
+ # Allow video group to control backlight and leds
++# do not edit this file, it will be overwritten on update
+ SUBSYSTEM=="backlight", ACTION=="add", \
+ RUN+="/bin/chgrp video %S%p/brightness", \
+ RUN+="/bin/chmod g+w %S%p/brightness"
diff --git a/user/akonadi-contacts/APKBUILD b/user/akonadi-contacts/APKBUILD
index 72e0ac6ab..9afa44db6 100644
--- a/user/akonadi-contacts/APKBUILD
+++ b/user/akonadi-contacts/APKBUILD
@@ -1,12 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi-contacts
-pkgver=17.08.1.55
-realpkgver=${pkgver/.55/-55}
+pkgver=17.12.2
pkgrel=0
pkgdesc="Library for integrating contact lists with Akonadi"
url="https://www.kde.org/"
arch="all"
+options="!check" # Tests require X11
license="LGPL-2.1 GPL-2.0 BSD-2"
depends=""
depends_dev="qt5-qtbase-dev kio-dev kcontacts-dev kmime-dev akonadi-mime-dev
@@ -14,9 +14,8 @@ depends_dev="qt5-qtbase-dev kio-dev kcontacts-dev kmime-dev akonadi-mime-dev
makedepends="$depends_dev cmake extra-cmake-modules"
install=""
subpackages="$pkgname-dev"
-source="https://distfiles.adelielinux.org/source/akonadi-contacts-$realpkgver.tar.xz
- build-without-trunk.patch"
-builddir="$srcdir/akonadi-contacts-$realpkgver"
+source="http://download.kde.org/stable/applications/$pkgver/src/akonadi-contacts-$pkgver.tar.xz"
+builddir="$srcdir/akonadi-contacts-$pkgver"
build() {
cd "$builddir"
@@ -44,5 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="37bb7fa73efbbdcc59e5832b4e956eb9051d13de3232eb9bb812e4a8c37d326f99874b2f9e9653c36234d6c2c606fadeca1ab2b030eee1160dd1934b44e7d3b0 akonadi-contacts-17.08.1-55.tar.xz
-f47a7c2f2c844d691dc688e953bdbf241f89bcda590fb066102a633babdd850eee53fedb04de8f172410266c29e224ca42ef01f1810ad6a128215e44193bb054 build-without-trunk.patch"
+sha512sums="36b8c18d31661857d47bbe1dca3d912f1a3b4969ad03002014d18cd7978857dde100d95b5736799c0e18d2b6564820bcb865258d1848f2965dd3c675bd978729 akonadi-contacts-17.12.2.tar.xz"
diff --git a/user/akonadi-mime/APKBUILD b/user/akonadi-mime/APKBUILD
index 5d785d64f..b381bd39b 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Libraries to implement basic MIME message handling"
url="https://www.kde.org/"
@@ -10,7 +10,8 @@ license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev kmime-dev kdbusaddons-dev kio-dev kitemmodels-dev
akonadi-dev kconfig-dev kxmlgui-dev"
-makedepends="$depends_dev cmake extra-cmake-modules libxslt-dev"
+makedepends="$depends_dev cmake extra-cmake-modules libxslt-dev
+ shared-mime-info"
install=""
subpackages="$pkgname-dev $pkgname-lang"
source="http://download.kde.org/stable/applications/$pkgver/src/akonadi-mime-$pkgver.tar.xz"
@@ -42,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="309cbe124f8649cc33f1759eaa6ef76c32b9eeabf7b21b9d8dbe30caab67a4d748a24b8b31f5f3efa12e94bc444cd7aa2a5aabf318eee0c901878da5348c6cda akonadi-mime-17.08.2.tar.xz"
+sha512sums="a0bc9110bbc4d51910b17efdc3347c84f409d21bd43bdb2b44552dcaca6bbc16424ea89e95296351a7bec655fe3c0601a960fb8367238eebaf4c7ed7f1ae757f akonadi-mime-17.12.2.tar.xz"
diff --git a/user/akonadi-notes/APKBUILD b/user/akonadi-notes/APKBUILD
index f122b6688..46ba2f531 100644
--- a/user/akonadi-notes/APKBUILD
+++ b/user/akonadi-notes/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi-notes
-pkgver=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Library for integrating notes into Akonadi"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e8c6aa4d1ea7ca2cc4601197f570aad4377949d70a86ac1a37925a947254e73e9f2d799b6adc52d58f4551dd77abba44a4bd82c6f21bf880d4f59f975ad68b1e akonadi-notes-17.08.2.tar.xz"
+sha512sums="8c10178dd8d0de8b9d405a45aff8f70f58a4c66e79355f831c08202665b24e2584f716e32694ade4acfb07cd8707d37c82c3c1feba9fb219a67aec7f01abe4f7 akonadi-notes-17.12.2.tar.xz"
diff --git a/user/akonadi/APKBUILD b/user/akonadi/APKBUILD
index 1971e333b..f29a5993c 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Libraries and storage system for PIM data"
url="https://community.kde.org/KDE_PIM/Akonadi"
@@ -14,7 +14,7 @@ depends_dev="qt5-qtbase-dev qt5-qttools-dev ki18n-dev kcompletion-dev kio-dev
kiconthemes-dev kitemmodels-dev kitemviews-dev kwidgetsaddons-dev
kwindowsystem-dev kxmlgui-dev kcrash-dev kdesignerplugin-dev"
makedepends="$depends_dev cmake extra-cmake-modules sqlite-dev libxml2-dev
- libxslt-dev"
+ libxslt-dev shared-mime-info"
install=""
subpackages="$pkgname-dev $pkgname-lang"
source="http://download.kde.org/stable/applications/$pkgver/src/akonadi-$pkgver.tar.xz
@@ -51,5 +51,5 @@ package() {
"$pkgdir"/usr/share/config/akonadi
}
-sha512sums="892e3616fc0b83ec50b6dada6aa0345eb8c09324e941933f059a20d1f5ba9bc30f90a90798933cb7df3e711bd98a28b21b8f882a136ff7d60cccd4bc552e3846 akonadi-17.08.2.tar.xz
+sha512sums="c0004d09cae94b4f8a348c0439830a3ec6e906b04a95e8db7f3d15c6aa159910e764c06e3d92ade20e02c16598378cf2eb3f6e99018f2f47d7505bd0fb968905 akonadi-17.12.2.tar.xz
b0c333508da8ba5c447827b2bad5f36e3dc72bef8303b1526043b09c75d3055790908ac9cbb871e61319cfd4b405f4662d62d2d347e563c9956f4c8159fca9ab akonadiserverrc"
diff --git a/user/analitza/APKBUILD b/user/analitza/APKBUILD
new file mode 100644
index 000000000..2c562f252
--- /dev/null
+++ b/user/analitza/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=analitza
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Mathematical object library"
+url="https://api.kde.org/4.x-api/kdeedu-apidocs/analitza/html/index.html"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+depends_dev="qt5-qtbase-dev qt5-qtsvg-dev qt5-qtdeclarative-dev eigen-dev"
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/analitza-$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 \
+ -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 -E '(export|curve|plots|surface)'
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e326d397db3193492258f156cd71f63e4544abd9724b58769a1593ff57242b18de09291a433ea37658015bd57f75e430ed95bdf99d3863fccfc4b546a9686933 analitza-17.12.2.tar.xz"
diff --git a/user/ark/APKBUILD b/user/ark/APKBUILD
index 5ab4dfbb4..fa470d168 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Graphical file compression/decompression utility with support for multiple formats"
url="https://utils.kde.org/projects/ark/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="060d4b17d191bb87c99c44452544dea936c5dcc40a8f71f29aaea37a0fd9d526d14510a5a4fb42d8794d9d8b640bf6773369b8647ce017082efa9ba580f4f0bf ark-17.08.2.tar.xz"
+sha512sums="8b87bb8e96ed1483503ebd26ce505962cafe96b9294dac9dd548a0659c0ff8795cf1e699c86ec2168f761819906d8958cedbe3858e05d50f7cb41a9d780a78af ark-17.12.2.tar.xz"
diff --git a/user/artikulate/APKBUILD b/user/artikulate/APKBUILD
new file mode 100644
index 000000000..31a45e447
--- /dev/null
+++ b/user/artikulate/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=artikulate
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Pronunciation trainer for languages"
+url="https://www.kde.org/applications/education/artikulate/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtxmlpatterns-dev
+ kdoctools-dev ki18n-dev kconfig-dev kcrash-dev knewstuff-dev
+ kxmlgui-dev karchive-dev qt5-qtmultimedia-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/artikulate-$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 \
+ -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"
+ # TestCourseFiles needs X11
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E TestCourseFiles
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a5157cb099e32069e30fdee0be3cbc484a5e13b9f968da8bc04526c49db3ba47d07c5deb9a432bcef9154e616aba9ff7911cbb7bc09307e44fbd2149bfd2e9a9 artikulate-17.12.2.tar.xz"
diff --git a/user/attica/APKBUILD b/user/attica/APKBUILD
index e0453877e..4243f54a6 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Qt 5-based implementation of Open Collaboration Services"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9e9fc456bd1e7853140c71fead1ac6205e4f572d1d69d485d95188355e3b2fc775fa85c6d115564bd444f9925526a77da1decf990226ef46302fa5f605d73b09 attica-5.41.0.tar.xz"
+sha512sums="1584c7f121c4e5092e1f694d0ebed1ac2b31a3a7ce5ee9330ee00852a470266011d3e076da3174b3f37207aad93dd2070fcee9384e466afe202d8e5175fb81e1 attica-5.43.0.tar.xz"
diff --git a/user/audacious-plugins-qt/APKBUILD b/user/audacious-plugins-qt/APKBUILD
new file mode 100644
index 000000000..c6e9589a4
--- /dev/null
+++ b/user/audacious-plugins-qt/APKBUILD
@@ -0,0 +1,77 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: William Pitcock <nenolod@dereferenced.org>
+pkgname=audacious-plugins
+pkgver=3.9
+pkgrel=1
+pkgdesc="A playlist-oriented media player with multiple interfaces (plugins)"
+url="http://audacious-media-player.org/"
+arch="all"
+options="!check" # No test suite
+license="ISC"
+depends="audacious"
+install_if="audacious=$pkgver"
+makedepends="libmowgli-dev
+ libguess-dev
+ dbus-glib-dev
+ audacious-dev>=${pkgver%.*}
+ libxml2-dev
+
+ mpg123-dev
+
+ libcdio-dev
+ libcdio-paranoia-dev
+ libcddb-dev
+
+ libxcomposite-dev
+ libsamplerate-dev
+ libcue-dev
+ libmms-dev
+ libsndfile-dev
+
+ libnotify-dev
+
+ libogg-dev
+ libvorbis-dev
+
+ ffmpeg-dev
+
+ alsa-lib-dev
+ neon-dev
+ curl-dev
+ wavpack-dev
+ lame-dev
+ flac-dev
+ sdl-dev
+
+ automake
+ autoconf"
+subpackages="$pkgname-lang"
+source="http://distfiles.audacious-media-player.org/$pkgname-$pkgver.tar.bz2"
+
+prepare() {
+ default_prepare
+ msg "Rebuilding configure..."
+ aclocal -I m4 && autoheader && autoconf
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-gtk \
+ --enable-qt
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="00c8c53d69995ca1fedb91c7df609cc6c65b13e1af23b98a2fbda143c02ac554cc2c42c01f1c593af252e36bfb85b6324f2daca8632d3b672c69fb4dead2e3fa audacious-plugins-3.9.tar.bz2"
diff --git a/user/audacious-qt/APKBUILD b/user/audacious-qt/APKBUILD
new file mode 100644
index 000000000..3a5c07723
--- /dev/null
+++ b/user/audacious-qt/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: William Pitcock <nenolod@dereferenced.org>
+pkgname=audacious
+pkgver=3.9
+pkgrel=1
+pkgdesc="A playlist-oriented media player with multiple interfaces"
+url="http://audacious-media-player.org/"
+arch="all"
+options="!check" # No test suite.
+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 $pkgname-dbg"
+source="http://distfiles.audacious-media-player.org/$pkgname-$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname-$pkgver"
+
+prepare() {
+ default_prepare
+ msg "Rebuilding configure..."
+ aclocal -I m4 && autoheader && autoconf
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-qt \
+ --disable-gtk
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d8ef24c91c84bfa80831075cd9a12fc4bf02cec8bc96bcfa5a941254d194cccdc482482b1c015bc63e1142718c2221034c0f3a87e2cb6e4daf3b4cc428328aaa audacious-3.9.tar.bz2"
diff --git a/user/audiofile/APKBUILD b/user/audiofile/APKBUILD
new file mode 100644
index 000000000..6fd6242f4
--- /dev/null
+++ b/user/audiofile/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=audiofile
+pkgver=0.3.6
+pkgrel=0
+pkgdesc="Library for reading and writing audio files in many formats"
+url="https://audiofile.68k.org"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+depends_dev="flac-dev"
+makedepends="$depends_dev alsa-lib-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://audiofile.68k.org/audiofile-$pkgver.tar.gz
+ tests-unsigned-gcc6.patch"
+
+prepare() {
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ export CXXFLAGS="$CXXFLAGS -fpermissive"
+ ./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="f9a1182d93e405c21eba79c5cc40962347bff13f1b3b732d9a396e3d1675297515188bd6eb43033aaa00e9bde74ff4628c1614462456529cabba464f03c1d5fa audiofile-0.3.6.tar.gz
+b85546eaccf0911fb2f5ba26c323ea2c0b18cae7d7476d5ac9e821c90097f331e3391b787f390d130382fffb6b777887344f914489ca1bc0a3974f1ebe16e328 tests-unsigned-gcc6.patch"
diff --git a/user/audiofile/tests-unsigned-gcc6.patch b/user/audiofile/tests-unsigned-gcc6.patch
new file mode 100644
index 000000000..34e179a92
--- /dev/null
+++ b/user/audiofile/tests-unsigned-gcc6.patch
@@ -0,0 +1,29 @@
+--- audiofile-0.3.6/test/NeXT.cpp.old 2013-02-11 17:23:26.000000000 +0000
++++ audiofile-0.3.6/test/NeXT.cpp 2018-03-25 04:19:46.050797108 +0000
+@@ -37,7 +37,7 @@
+
+ #include "TestUtilities.h"
+
+-const char kDataUnspecifiedLength[] =
++const unsigned char kDataUnspecifiedLength[] =
+ {
+ '.', 's', 'n', 'd',
+ 0, 0, 0, 24, // offset of 24 bytes
+@@ -57,7 +57,7 @@
+ 0, 55
+ };
+
+-const char kDataTruncated[] =
++const unsigned char kDataTruncated[] =
+ {
+ '.', 's', 'n', 'd',
+ 0, 0, 0, 24, // offset of 24 bytes
+@@ -152,7 +152,7 @@
+ ASSERT_EQ(::unlink(testFileName.c_str()), 0);
+ }
+
+-const char kDataZeroChannels[] =
++const unsigned char kDataZeroChannels[] =
+ {
+ '.', 's', 'n', 'd',
+ 0, 0, 0, 24, // offset of 24 bytes
diff --git a/user/baloo/APKBUILD b/user/baloo/APKBUILD
index 4eab19c68..a2e961dc9 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Semantic desktop search framework"
url="https://www.kde.org/"
@@ -58,5 +58,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="15f03a62d1525dc7062b4361e883ee4170a1ea36d8bc10846fae0bf73549504bdcb7cff2349b3f0fcbc1da77102b0383d1140c00191823884d719c18771a858a baloo-5.41.0.tar.xz
+sha512sums="918d615adc07ee71414eabe15cd18f3cfee264c206cbef32f6807cff2eac701a58ae7eebb087e618e9bc7741ad8409514af8361e216ff68b07b65dd0da0a802a baloo-5.43.0.tar.xz
5622f1eb7a692c0ebd5d904b421612292375d3ea3f4ffdc4624fa8e2dc4a5fe56e5636f11a388224642be03c8fc28a678cffb9b167eb3de48ff4ae2979e6435e initialise-variable.patch"
diff --git a/user/blinken/APKBUILD b/user/blinken/APKBUILD
new file mode 100644
index 000000000..851889c49
--- /dev/null
+++ b/user/blinken/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=blinken
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Memory enhancement game"
+url="https://www.kde.org/applications/education/blinken/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev ki18n-dev
+ kxmlgui-dev kguiaddons-dev kdoctools-dev kdbusaddons-dev kcrash-dev
+ phonon-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/blinken-$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 \
+ -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="a09b23b2cc91513c2cbabbdb94b2d45aa987f21d5f135f3f878163d3ee9211eab6a2c26d7e0c979122b6361df7b8f9147f457432bb3a6277eb1e513b1c811dbc blinken-17.12.2.tar.xz"
diff --git a/user/blinken/test.patch b/user/blinken/test.patch
new file mode 100644
index 000000000..d24c03491
--- /dev/null
+++ b/user/blinken/test.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2a1b077..019efcd 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -17,7 +17,7 @@ find_package (KF5 REQUIRED COMPONENTS
+ I18n XmlGui GuiAddons DocTools DBusAddons Crash
+ )
+
+-find_package (Phonon4Qt5)
++find_package (Phonon4Qt5 REQUIRED)
+
+ include(KDEInstallDirs)
+ include(KDECompilerSettings NO_POLICY_SCOPE)
diff --git a/user/bomber/APKBUILD b/user/bomber/APKBUILD
index 11d8775b0..f86f18197 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Arcade bombing game"
url="https://www.kde.org/applications/games/bomber/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="901b58a067deb3e53ddc43c7330437e4f53d8d68e6091174406cbcbbbcc617653eb10271b3e912f7338e6f9e6737f3ab7151818f1d8250d16059dde4fca30725 bomber-17.08.2.tar.xz"
+sha512sums="27563ac622e4b3e2eb796ddc9aa7a90b6971775f2873464466e9c82e5c813afcfb2ea4f37bb7d1eb22c42d3f2300e4d75f6fa96ce262ad072710ddc48a27edc1 bomber-17.12.2.tar.xz"
diff --git a/user/bovo/APKBUILD b/user/bovo/APKBUILD
index cef3f1c74..a14d75396 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Gomoku or Connect Five game"
url="https://www.kde.org/applications/games/bovo/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="deb03072844467ea622076de2f76245dd8e6eafa8e62941c97608bb4eb5d6b0746a9c034107525fdbfe4d24ac66f12f033a137b7bfb2da043e26128676353a29 bovo-17.08.2.tar.xz"
+sha512sums="42b37cf929755e730b30125977ef19858a9f006582eed62d20646b1fe5428c9731aaf840966d67c6e251c1cf279ee852e5bb4d31e58c2e93e92225a55f407ed0 bovo-17.12.2.tar.xz"
diff --git a/user/breeze-icons/APKBUILD b/user/breeze-icons/APKBUILD
index 5c6c11653..267795261 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Modern, coherent icon set for desktops"
url="https://www.kde.org/"
@@ -48,4 +48,4 @@ dark() {
mv "$pkgdir"/usr/share/icons/breeze-dark "$subpkgdir"/usr/share/icons/
}
-sha512sums="880d05d0dc69d3ea521a1b7e572a1af249733f05d541e58684e2ef004644444b9d498862a679b3e5279af93e3180df0c0a74922b42dbea54b7a004c1e7dfe4fa breeze-icons-5.41.0.tar.xz"
+sha512sums="ebc090a41c9377152ac99352bcd096e59932fbd9f4e4717cd652c0abce122c0812f18bb62f76b3321f774da8bb3a89f8287d23f2a36d3f3b4ac3c083aa402c78 breeze-icons-5.43.0.tar.xz"
diff --git a/user/breeze/APKBUILD b/user/breeze/APKBUILD
index 4c89cd53e..e0b946fe7 100644
--- a/user/breeze/APKBUILD
+++ b/user/breeze/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=breeze
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="Default KDE Plasma 5 style"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2c2081994de9a3580de4cef13689d9fe8118c826c1f753600066939aaf8978dac100815d9110ee45e09dcf3778128849d96ad10fb6f731c18b79b03bbae33c1e breeze-5.8.7.tar.xz"
+sha512sums="2bdc27ca2a1df0234f22ebb1c56723b2ad1345417889b5fc2e66bebef4e2ad1592b78f4391b38a1b2a994f414390789bcbbe213c80f29e1440827bf2bc3d2ead breeze-5.12.2.tar.xz"
diff --git a/user/cflow/APKBUILD b/user/cflow/APKBUILD
index 9191dc66e..acb41fcc7 100644
--- a/user/cflow/APKBUILD
+++ b/user/cflow/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=cflow
pkgver=1.5
-pkgrel=0
+pkgrel=1
pkgdesc="Chart control flow in a C program"
url="https://www.gnu.org/software/cflow/"
arch="all"
@@ -24,6 +24,11 @@ build() {
make
}
+check() {
+ cd "$builddir"
+ make check
+}
+
package() {
cd "$builddir"
make DESTDIR="$pkgdir" install
diff --git a/user/corindon-red/APKBUILD b/user/corindon-red/APKBUILD
index ec54bd03a..a43e51e89 100644
--- a/user/corindon-red/APKBUILD
+++ b/user/corindon-red/APKBUILD
@@ -12,7 +12,7 @@ depends=""
makedepends=""
install=""
subpackages=""
-source="https://dl.opendesktop.org/api/files/download/id/1460740699/122445-corindon-red.tar.gz"
+source="https://dl.opendesktop.org/api/files/downloadfile/id/1460740699/s/90b6b780028e72203f2a0fba41edf43a/t/1520219138/u//122445-corindon-red.tar.gz"
builddir="$srcdir/"
build() {
diff --git a/user/digikam/APKBUILD b/user/digikam/APKBUILD
new file mode 100644
index 000000000..caa015a9d
--- /dev/null
+++ b/user/digikam/APKBUILD
@@ -0,0 +1,53 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=digikam
+pkgver=5.8.0
+pkgrel=0
+pkgdesc="Professional photo management and digital camera import"
+url="https://www.digikam.org/"
+arch="all"
+options="!check" # Test suite doesn't support our version of Boost
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtxmlpatterns-dev
+ qt5-qtsvg-dev kconfig-dev kwindowsystem-dev kxmlgui-dev ki18n-dev
+ karchive-dev kio-dev qt5-qtwebkit-dev kcoreaddons-dev kservice-dev
+ solid-dev kiconthemes-dev kfilemetadata-dev threadweaver-dev libpng-dev
+ knotifyconfig-dev knotifications-dev akonadi-contacts-dev kcalcore-dev
+ libjpeg-turbo-dev tiff-dev zlib-dev boost-dev lcms2-dev expat-dev
+ exiv2-dev flex bison libxml2-dev libxslt-dev eigen-dev libgphoto2-dev
+ libksane-dev libkipi-dev glu-dev qt5-qtx11extras-dev jasper-dev
+ opencv opencv-dev"
+# YES, both are needed. opencv-dev only pulls in -libs; CMake module in opencv
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/digikam/digikam-$pkgver.tar.xz"
+builddir="$srcdir/digikam-$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" \
+ -DENABLE_APPSTYLES=ON \
+ -DENABLE_MYSQLSUPPORT=OFF \
+ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ -DENABLE_OPENCV3=ON \
+ -DBUILD_TESTING=OFF \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f4b33fce0d5ef1e7032d3bb023b3037327c105fb3dd25f9a84f432e28b3a92c9904bbc33bba2066d766ea02721d5634dc643d7cc0c990ccf2285a0c697278b6c digikam-5.8.0.tar.xz"
diff --git a/user/dolphin/APKBUILD b/user/dolphin/APKBUILD
index b2149d87f..a52aa23bd 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Lightweight desktop file manager"
url="https://www.kde.org/applications/system/dolphin/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="de77ab439243b13952cb8d11343b0bd575b77c0daae7fc3936e91b0de9aed069593fbf97024ec84c7342d2993cfb4b2c64bf18da82cdf362b38e8623954559a2 dolphin-17.08.2.tar.xz"
+sha512sums="3c576d6eeb373790b8b4c6a13b01df606bbfde7b0c08da5965d31e77a1f88a3ccc79387b0546bfc039a1abc65b4bc466b39f7e128e67ecfe0f613c3d51e85d21 dolphin-17.12.2.tar.xz"
diff --git a/user/dracut/APKBUILD b/user/dracut/APKBUILD
index c423d4cbe..5eeab3cf1 100644
--- a/user/dracut/APKBUILD
+++ b/user/dracut/APKBUILD
@@ -2,16 +2,16 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dracut
pkgver=046
-pkgrel=1
+pkgrel=2
pkgdesc="An event-driven initramfs infrastructure"
url="https://dracut.wiki.kernel.org/"
arch="all"
license="GPL-2.0+"
-depends="libarchive-tools"
+depends="libarchive-tools musl-utils xz"
makedepends="fts-dev kmod-dev"
install=""
options="!check" # Test suite is for kernel developers only, requires ext3 rootfs
-subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch"
+subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch $pkgname-lvm::noarch"
source="https://www.kernel.org/pub/linux/utils/boot/$pkgname/$pkgname-$pkgver.tar.xz
header-fix.patch
"
@@ -42,7 +42,7 @@ package() {
}
bashcomp() {
- depends=""
+ depends="dracut"
pkgdesc="Bash completions for $pkgname"
install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
@@ -51,5 +51,11 @@ bashcomp() {
"$subpkgdir"/usr/share
}
+lvm() {
+ depends="device-mapper dracut lvm2"
+ pkgdesc="$pkgname - LVM2 module"
+ mkdir -p "$subpkgdir"
+}
+
sha512sums="75cefc184960024ef32f7bb5a0fe060e9c7d82dbfd0fe247d54b585e2ebbf0f8af5d5dc1be7e5e8cf2c3bc27b3293842c6361ae62d047289d0c59d7d40b09122 dracut-046.tar.xz
988f03a3fd2e7ee62409d3c57e8029403513dcec5efb37e64633d989728e4c7b619ce5b8775a04c5a0b654f7f093777d94fe6e4098a99a690c353a94f537e24c header-fix.patch"
diff --git a/user/dragonplayer/APKBUILD b/user/dragonplayer/APKBUILD
new file mode 100644
index 000000000..618d6f60d
--- /dev/null
+++ b/user/dragonplayer/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=dragonplayer
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Multimedia player with a focus on simplicity"
+url="https://www.kde.org/applications/multimedia/dragonplayer/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
+ kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev kdoctools-dev
+ ki18n-dev kjobwidgets-dev kio-dev kparts-dev solid-dev phonon-dev
+ kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev knotifications-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/dragon-$pkgver.tar.xz"
+builddir="$srcdir/dragon-$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="8df5e3b846b01cf56fe19413aa16ec99933fe85bc15a5e04d3203d6020c335c715e7ce23a424edb3f3544f12a0f647988777f7c0ac213b618008f270edb7ffd9 dragon-17.12.2.tar.xz"
diff --git a/user/extra-cmake-modules/APKBUILD b/user/extra-cmake-modules/APKBUILD
index 13c89c561..e20322d0d 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.41.0
+pkgver=5.43.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="034c67ed56ee4f6002ff2f0bfca2d7eb7877180b5aa5cf5eb3babb6e40c0669eb0728f45832bd8250ff304647f9a6555233bff4fdf6eccc9b14b420f4b1c3924 extra-cmake-modules-5.41.0.tar.xz
+sha512sums="fcdd96ad0db73f75708fdc97bbc74e28ef271a5dc27d8730f57efaf9e451ed5aaa51d20831c3cf20c82d377d50d51ba4abbfd09cdfbf02998396f907f6fa9cc5 extra-cmake-modules-5.43.0.tar.xz
0af703a9d4696080bc52032d1d341e86fd142bef91f3c1afa9cf180e1cf2ff3bba2ea47fd36b8f52135f056a202c58a08e7c7525f671d6993839865ce6aef0f6 posix.patch"
diff --git a/user/featherpad/APKBUILD b/user/featherpad/APKBUILD
index 11d0e0fb3..617ec6380 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.6
+pkgver=0.7
pkgrel=0
pkgdesc="Featureful Qt-based text editor"
url="https://github.com/tsujan/FeatherPad"
@@ -32,4 +32,4 @@ package() {
make INSTALL_ROOT="$pkgdir" PREFIX=/usr install
}
-sha512sums="5cf5f46a3e8a09fa81c247b5731f7fa35b7232ac8db789acd974161f4ad5a2ffc992f62a66f9ee0ff6adb66f99f650a173f12c91938132e11efa6ec0feee26e7 FeatherPad-0.6.tar.gz"
+sha512sums="67a5fde1dd6e1c2e438342923c90cea7d6173b31b7b3c97106b4fbd5bc1e855ead8e021337fcb0a6d1dafac9980e644132e88fa0e4ca57176c6a64fd77951784 FeatherPad-0.7.tar.gz"
diff --git a/user/feh/APKBUILD b/user/feh/APKBUILD
index b68566ae2..1ea78d33e 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.23
+pkgver=2.25.1
pkgrel=0
pkgdesc="feh is a fast, lightweight image viewer which uses imlib2"
url="http://feh.finalrewind.org/"
@@ -12,9 +12,7 @@ depends=
makedepends="libxt-dev libpng-dev giblib-dev imlib2-dev libjpeg-turbo-dev
libxinerama-dev curl-dev libexif-dev"
checkdepends="perl-utils perl-test-command"
-source="https://feh.finalrewind.org/$pkgname-$pkgver.tar.bz2
- stdout-buff.patch
- cflags.patch"
+source="https://feh.finalrewind.org/$pkgname-$pkgver.tar.bz2"
builddir="$srcdir/$pkgname-$pkgver"
build() {
@@ -37,6 +35,4 @@ package() {
install
}
-sha512sums="4b75f0053c3a4b1fb51251536896fd48470117ca3d59de1ac5a87f8071f37f886542e7d82730eec4579a1ebf507e4bc8a00fc45cf1364d2445b1aa82c5664ee7 feh-2.23.tar.bz2
-38ead15a58c402181da3e39c09002d9f951b03cfdf5edde19072da313638025dca5fa7dbe466b8f05094d49d44750c467d7fa3832fbaa11ac135c5839e0ecdc1 stdout-buff.patch
-577e0420aef6bbf1cc43fe97813fd56a877c45b9cb01f1f86ee41863a8bf12f97b5f62c01b37a6b8fc78f7dd8ab9a372d1b09ba00e3811d0043772f5e16e0707 cflags.patch"
+sha512sums="a821d46901d4cf59bb09b911f28c6ab26fbd0ee9784b50fbacfb6cf23483da5d29ebbb4cc53b23289181bb3ba0dc9893a3f39a90b3420d0bd98d740d5583fc3e feh-2.25.1.tar.bz2"
diff --git a/user/feh/cflags.patch b/user/feh/cflags.patch
deleted file mode 100644
index 88f0c05c9..000000000
--- a/user/feh/cflags.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- feh-2.23/config.mk 2017-12-28 18:28:35.000000000 +0000
-+++ feh-2.23/config.mk 2018-01-08 01:19:54.440000000 +0000
-@@ -38,7 +38,7 @@
- CFLAGS += -Wall -Wextra -pedantic
-
- # Settings for glibc >= 2.19 - may need to be adjusted for other systems
--CFLAGS += -std=c11 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=500
-+CFLAGS += -std=c11 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700
-
- ifeq (${curl},1)
- CFLAGS += -DHAVE_LIBCURL
diff --git a/user/feh/stdout-buff.patch b/user/feh/stdout-buff.patch
deleted file mode 100644
index eaa251a3a..000000000
--- a/user/feh/stdout-buff.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-On glibc, if output is redirected to a file, output will look like this:
-
-touch test/ok/gif
-touch test/ok/jpg
-touch test/ok/png
-touch test/ok/pnm
-test/ok/gif
-test/ok/jpg
-test/ok/png
-test/ok/pnm
-
-On musl, if stdout is redirected to a file, output looks like this:
-
-test/ok/gif
-touch test/ok/gif
-touch test/ok/jpg
-touch test/ok/png
-touch test/ok/pnm
-test/ok/jpg
-test/ok/png
-test/ok/pnm
-
-On glibc and musl, if stdout is interactive, it looks like this:
-
-test/ok/gif
-touch test/ok/gif
-test/ok/jpg
-touch test/ok/jpg
-test/ok/png
-touch test/ok/png
-test/ok/pnm
-touch test/ok/pnm
-
-Adding two fflush calls makes all behavior look like the last example.
-
---- feh-2.22/src/list.c 2017-11-04 14:03:43.000000000 +0000
-+++ feh-2.22/src/list.c 2018-01-03 02:59:08.840000000 +0000
-@@ -92,6 +92,7 @@
- if (opt.verbose)
- feh_display_status('.');
- puts(file->filename);
-+ fflush(stdout);
- feh_action_run(file, opt.actions[0], NULL);
- }
- else {
-@@ -106,6 +107,7 @@
- if (opt.verbose)
- feh_display_status('.');
- puts(file->filename);
-+ fflush(stdout);
- feh_action_run(file, opt.actions[0], NULL);
- }
- else {
---- feh-2.22/test/nx_action/loadable_action 2017-11-04 14:03:43.000000000 +0000
-+++ feh-2.22/test/nx_action/loadable_action 2018-01-03 02:46:48.030000000 +0000
-@@ -1,8 +1,8 @@
--touch test/ok/gif
--touch test/ok/jpg
--touch test/ok/png
--touch test/ok/pnm
- test/ok/gif
-+touch test/ok/gif
- test/ok/jpg
-+touch test/ok/jpg
- test/ok/png
-+touch test/ok/png
- test/ok/pnm
-+touch test/ok/pnm
---- feh-2.22/test/nx_action/loadable_naction 2017-11-04 14:03:43.000000000 +0000
-+++ feh-2.22/test/nx_action/loadable_naction 2018-01-03 02:51:05.340000000 +0000
-@@ -1,8 +1,8 @@
--touch test/ok/gif
--touch test/ok/jpg
--touch test/ok/png
--touch test/ok/pnm
- test/ok/gif
-+touch test/ok/gif
- test/ok/jpg
-+touch test/ok/jpg
- test/ok/png
-+touch test/ok/png
- test/ok/pnm
-+touch test/ok/pnm
---- feh-2.22/test/nx_action/unloadable_action 2017-11-04 14:03:43.000000000 +0000
-+++ feh-2.22/test/nx_action/unloadable_action 2018-01-03 02:51:36.480000000 +0000
-@@ -1,8 +1,8 @@
--rm test/fail/gif
--rm test/fail/jpg
--rm test/fail/png
--rm test/fail/pnm
- test/fail/gif
-+rm test/fail/gif
- test/fail/jpg
-+rm test/fail/jpg
- test/fail/png
-+rm test/fail/png
- test/fail/pnm
-+rm test/fail/pnm
---- feh-2.22/test/nx_action/unloadable_naction 2017-11-04 14:03:43.000000000 +0000
-+++ feh-2.22/test/nx_action/unloadable_naction 2018-01-03 02:51:51.850000000 +0000
-@@ -1,8 +1,8 @@
--rm test/fail/gif
--rm test/fail/jpg
--rm test/fail/png
--rm test/fail/pnm
- test/fail/gif
-+rm test/fail/gif
- test/fail/jpg
-+rm test/fail/jpg
- test/fail/png
-+rm test/fail/png
- test/fail/pnm
-+rm test/fail/pnm
diff --git a/user/fluidsynth/APKBUILD b/user/fluidsynth/APKBUILD
new file mode 100644
index 000000000..c9865559a
--- /dev/null
+++ b/user/fluidsynth/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=fluidsynth
+pkgver=1.1.10
+pkgrel=0
+pkgdesc="Real-time, software synthesiser based on SoundFont 2"
+url="http://www.fluidsynth.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="alsa-lib-dev dbus-dev glib-dev libsndfile-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
+source="fluidsynth-$pkgver.tar.gz::https://github.com/FluidSynth/fluidsynth/archive/v$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_INSTALL_DIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7ff7757baf6dee37f65a4fd214ffab1aa1434cfd1545deb4108fe2e9b0ed19d616880b2740a693b51ade0a4be998a671910b43cae26eb67fb97b16a513752cbc fluidsynth-1.1.10.tar.gz"
diff --git a/user/frameworkintegration/APKBUILD b/user/frameworkintegration/APKBUILD
index ff9645e9f..78829ff99 100644
--- a/user/frameworkintegration/APKBUILD
+++ b/user/frameworkintegration/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=frameworkintegration
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework providing components to allow applications to integrate with a KDE Workspace"
url="https://www.kde.org/"
arch="all"
+options="!check" # All tests require X11.
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kconfigwidgets-dev kiconthemes-dev
@@ -42,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="aa0c5b98bbfb287a850145c760d116c6d7d61d0a3ec966ebec27ebe27a82ab65e71e5d3f12702c0bd927ba07d9ad07874cddebc947ed073afe514d73e83ef402 frameworkintegration-5.41.0.tar.xz"
+sha512sums="f313fc3c0e16f877312f0c8e64e28c9368ef93fdafde1d6d3fa4f972290643139cdeb6a7376b57596042e4aaae0a87c9c9dad68ae895cb227d709a58ecbe7960 frameworkintegration-5.43.0.tar.xz"
diff --git a/user/gcompris-qt/APKBUILD b/user/gcompris-qt/APKBUILD
new file mode 100644
index 000000000..501b791e2
--- /dev/null
+++ b/user/gcompris-qt/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=gcompris-qt
+pkgver=0.90
+pkgrel=0
+pkgdesc="Educational software suite in many languages"
+url="http://gcompris.net/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-3.0-only"
+depends="gst-plugins-base qml-box2d"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
+ qt5-qtmultimedia-dev qt5-qtsvg-dev qt5-qtxmlpatterns-dev gstreamer-dev
+ qt5-qttools-dev qt5-qtsensors-dev kdoctools-dev"
+install=""
+langdir="/usr/share/gcompris-qt/translations"
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://gcompris.net/download/qt/src/gcompris-qt-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ mkdir build
+ cd build
+ 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
+}
+
+package() {
+ cd "$builddir"/build
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3eda9c608440f4a3888a156af0ee97c39714da0e83d8fd95cbbfd374caa07d19c37f97a4eb7e3240665629de8d96eec5acf9aeb1564f56d06208696583eadd74 gcompris-qt-0.90.tar.xz"
diff --git a/user/granatier/APKBUILD b/user/granatier/APKBUILD
index f044d8c2b..45742a180 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Clone of the classic Bomberman game"
url="https://www.kde.org/applications/games/granatier/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="dd8c544cfb270162f02458f4882f8bfccaf11974b0788e40a8235ea503dc8ae960dfb55bce97f01bca7a86d8d9845464aa8bd31aae88d9c78b829210e65f23fa granatier-17.08.2.tar.xz"
+sha512sums="0a7747d65918c90d47d83bb3056c3e05a4ecb560c64b37dc4eb52b7e7329ce76ec45e99bbfa102e21f3877d147d8121e97c858bcb4804832187c5e41723a8217 granatier-17.12.2.tar.xz"
diff --git a/user/gwenview/APKBUILD b/user/gwenview/APKBUILD
new file mode 100644
index 000000000..470387207
--- /dev/null
+++ b/user/gwenview/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=gwenview
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Fast and easy image viewer by KDE"
+url="https://www.kde.org/applications/graphics/gwenview/"
+arch="all"
+options="!check" # All tests require X11.
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev phonon-dev
+ kio-dev kactivities-dev kitemmodels-dev ki18n-dev kdoctools-dev
+ kparts-dev kwindowsystem-dev kiconthemes-dev knotifications-dev
+ libkipi-dev libjpeg-turbo-dev libpng-dev lcms2-dev zlib-dev exiv2-dev
+ baloo-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/gwenview-$pkgver.tar.xz"
+builddir="$srcdir/gwenview-$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="d6fca3dc4435f2bcd77ad8428edbee022af88a6a2d959f5b142ab91e0ed2514b51ba34dc214f808bdf44dc0e3c2eb4992f1918499f36b194eca6b78dc5b4b1ea gwenview-17.12.2.tar.xz"
diff --git a/user/heirloom-pax/APKBUILD b/user/heirloom-pax/APKBUILD
new file mode 100644
index 000000000..3ccb03460
--- /dev/null
+++ b/user/heirloom-pax/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=heirloom-pax
+pkgver=1.0
+pkgrel=0
+pkgdesc="Portable Archive eXchange, the POSIX archival tool"
+url="http://heirloom.sourceforge.net/"
+arch="all"
+options="!check" # No test suite.
+license="Zlib"
+depends="!libarchive<3.3.2-r3"
+replaces="pax"
+makedepends="bsd-compat-headers bzip2-dev zlib-dev"
+subpackages="$pkgname-doc"
+source="https://distfiles.adelielinux.org/source/${pkgname}-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ make LD="gcc"
+}
+
+package() {
+ cd "$builddir"
+
+ mkdir -p "$pkgdir"/usr/bin
+ mkdir -p "$pkgdir"/usr/5bin
+ mkdir -p "$pkgdir"/usr/share/man/man1
+ make install ROOT="$pkgdir"
+ rm -r "$pkgdir"/usr/5bin # we don't need 1992 spec pax
+}
+
+sha512sums="7b0ad20cc51b5bcec9c07e84c603e4891f636944f6f6bd13d3decb0e9d6b23d6164b663468ee2293b37721aae20334774f4e56fd8541ffceee934050e819b642 heirloom-pax-1.0.tar.xz"
diff --git a/user/id3lib/APKBUILD b/user/id3lib/APKBUILD
new file mode 100644
index 000000000..d97b8c684
--- /dev/null
+++ b/user/id3lib/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=id3lib
+pkgver=3.8.3
+pkgrel=0
+pkgdesc="Library for reading, writing, and manipulating ID3v2 tags"
+url="http://id3lib.sourceforge.net"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+depends_dev="zlib-dev"
+makedepends="$depends_dev"
+install=""
+subpackages="$pkgname-dev"
+source="https://downloads.sourceforge.net/project/id3lib/id3lib/$pkgver/id3lib-$pkgver.tar.gz
+ modern-cpp.patch
+ test-expose-proper-stdlib-symbols.patch
+ "
+
+prepare() {
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ export CFLAGS="$CFLAGS -fPIC"
+ export CXXFLAGS="$CXXFLAGS -fPIC"
+ ./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="3787e261f86933c1c2f2bff2c4b349b42f5d8636e489e4f39f9d75e6dfbdc79b87009a0f4ce4b786f2fb3dbc01ca9d56c4112095b46244f897e6c9a28573adaf id3lib-3.8.3.tar.gz
+334eed099c93ea279d877437a92f684bfb0df12774fd7fffb628b6e8c4b17b17952d6f7c0bf0dff03a87887f0f1233c70d98b69f23580dcf3bf64c8d4b93fc85 modern-cpp.patch
+cd79daddffbafc11e555f16be827ccedc03e419b7c24ab1da1852af294dc486a0836d612318eb9861691ef8462ca38be41cfa2c12849f022ebb187c6ef95a1b9 test-expose-proper-stdlib-symbols.patch"
diff --git a/user/id3lib/modern-cpp.patch b/user/id3lib/modern-cpp.patch
new file mode 100644
index 000000000..e56460167
--- /dev/null
+++ b/user/id3lib/modern-cpp.patch
@@ -0,0 +1,22 @@
+The <iomanip> header is already checked; <iomanip.h> is pre-C++98 alias.
+
+--- id3lib-3.8.3/configure.in.old 2003-03-02 00:23:00.000000000 +0000
++++ id3lib-3.8.3/configure.in 2018-03-25 06:43:58.270837035 +0000
+@@ -227,7 +227,6 @@
+ )
+ AC_CHECK_HEADERS( \
+ string \
+- iomanip.h \
+ ,,AC_MSG_ERROR([Missing a vital header file for id3lib])
+ )
+
+--- id3lib-3.8.3/configure.old 2003-03-02 00:23:00.000000000 +0000
++++ id3lib-3.8.3/configure 2018-03-25 06:44:02.260837054 +0000
+@@ -10296,7 +10296,6 @@
+
+ for ac_header in \
+ string \
+- iomanip.h \
+
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
diff --git a/user/id3lib/test-expose-proper-stdlib-symbols.patch b/user/id3lib/test-expose-proper-stdlib-symbols.patch
new file mode 100644
index 000000000..fbb4d5260
--- /dev/null
+++ b/user/id3lib/test-expose-proper-stdlib-symbols.patch
@@ -0,0 +1,12 @@
+--- id3lib-3.8.3/examples/test_io.cpp.old 2003-03-02 00:23:00.000000000 +0000
++++ id3lib-3.8.3/examples/test_io.cpp 2018-03-25 19:10:54.891043851 +0000
+@@ -11,6 +11,9 @@
+ #include <id3/io_strings.h>
+ #include <id3/utils.h>
+
++using std::cin;
++using std::dec;
++using std::hex;
+ using std::cout;
+ using std::endl;
+ using std::cerr;
diff --git a/user/juk/APKBUILD b/user/juk/APKBUILD
new file mode 100644
index 000000000..5a3efc433
--- /dev/null
+++ b/user/juk/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=juk
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="KDE Jukebox"
+url="https://juk.kde.org/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
+ kcoreaddons-dev kcompletion-dev kcrash-dev kglobalaccel-dev ki18n-dev
+ kiconthemes-dev kdoctools-dev kio-dev kjobwidgets-dev ktextwidgets-dev
+ knotifications-dev kxmlgui-dev kwallet-dev kwidgetsaddons-dev
+ kwindowsystem-dev taglib-dev phonon-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/juk-$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 \
+ -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="32f35ba5d1f7bc0d38555ab5a1da3deda0055e96ec2ca993f18f5339b3e231d903fa73d1a26a72413a159708cd08575b111bae8046603672f80f20678c36a362 juk-17.12.2.tar.xz"
diff --git a/user/kactivities-stats/APKBUILD b/user/kactivities-stats/APKBUILD
index 1989f13e4..57ff98d06 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Gather statistics about KDE activities"
url="https://api.kde.org/frameworks/kactivities/html/index.html"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1a6a605d87215677f94a048cfb17081ad32e4d8fa6f791fe29a15eadd4095652fdc9bb69c7315235c8b1abc2cf93c37541c17944045af5be52473bb62c00de89 kactivities-stats-5.41.0.tar.xz"
+sha512sums="777b94ff72504904d36e5e9a9a3c85bb3088379aa860c8e6ada4db20c44aa57c9c123ce2638b7126a3c57958f170272494ef99f3d8fedf0e4cb4b23e2a113546 kactivities-stats-5.43.0.tar.xz"
diff --git a/user/kactivities/APKBUILD b/user/kactivities/APKBUILD
index 254a1e1af..8ad5d5f22 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.41.0
+pkgver=5.43.0
pkgrel=1
pkgdesc="Runtime and library to organize work into separate activities"
url="https://api.kde.org/frameworks/kactivities/html/index.html"
@@ -49,4 +49,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="942fe93f27ca1549be881dce8374f32b04cadaf4690a9bb966189a4daeec0768366f465f5fffbd26d48f4102ebd7d7dcc0482ed177d372473b232f07e22960d7 kactivities-5.41.0.tar.xz"
+sha512sums="121a3704558bdc8fc4e71519face18593800a549b2cffff1919ccb0255a29d24075523e96ca3bdf7c999b0dca1dd8b30609b3db7e7538c94f550bb7d69f17c19 kactivities-5.43.0.tar.xz"
diff --git a/user/kactivitymanagerd/APKBUILD b/user/kactivitymanagerd/APKBUILD
index 636e217d0..2f13e2b92 100644
--- a/user/kactivitymanagerd/APKBUILD
+++ b/user/kactivitymanagerd/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kactivitymanagerd
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="Service to manage KDE Plasma activities"
url="https://www.kde.org/"
@@ -47,4 +47,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="cba671eaca863e80bb2e92fd0f1fc84121a9670ba8c48a14e13ac874bd830deedb215228c29b4f7e249843591ba12ab1acd81612d462bf26edeebab28eb082d8 kactivitymanagerd-5.8.7.tar.xz"
+sha512sums="c8ea26b4948898cd1734bde5a5fe50991c7d61f997fe4539b819e2ef90e3a1c0fb57dec3331106f42616f9ce0485b81bf61a462832a46a35dcbe87050ecc3c08 kactivitymanagerd-5.12.2.tar.xz"
diff --git a/user/kaffeine/APKBUILD b/user/kaffeine/APKBUILD
new file mode 100644
index 000000000..f2501fae8
--- /dev/null
+++ b/user/kaffeine/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kaffeine
+pkgver=2.0.14
+pkgrel=0
+pkgdesc="Media player with a focus on Digital TV (DVB)"
+url="https://www.kde.org/applications/multimedia/kaffeine/"
+arch="all"
+license="GPL-2.0-only"
+depends="vlc"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
+ kcoreaddons-dev ki18n-dev kwidgetsaddons-dev kwindowsystem-dev kio-dev
+ kxmlgui-dev solid-dev kdbusaddons-dev vlc-dev libxscrnsaver-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/kaffeine/kaffeine-$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 \
+ -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="03a4ffbfbe7b9c90de546bf7449e8e5f05d5e7023b75b5253297e885c412677a0c4b46c7f60761ef5f48ad3c284591acba6ff0fe4fa7256d5b01ca9a07d7276f kaffeine-2.0.14.tar.xz"
diff --git a/user/kalarmcal/APKBUILD b/user/kalarmcal/APKBUILD
index 9908653f7..e123a0929 100644
--- a/user/kalarmcal/APKBUILD
+++ b/user/kalarmcal/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kalarmcal
-pkgver=17.08.1
+pkgver=17.12.2
pkgrel=0
pkgdesc="Calendar library to integrate with your alarm clock"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="dabe0f3c2297c11a24a4e7cb33262e7a1102e0fdb794e1ad1d02b4432889bb5de5c1bb70a17c2992ab9d35e5df4f3c4643a1ede0aaaf1ea420fd3d7eac4a950c kalarmcal-17.08.1.tar.xz"
+sha512sums="c3946dde1609e8925c4bcfbfb3403e2e536eb84724dd5007d8d0ef14210c14e7aaadd6349117d55a57d522904b90413052200790d060553058684f0c2f01c5b4 kalarmcal-17.12.2.tar.xz"
diff --git a/user/kalarmcal/build-with-kf5-kholidays.patch b/user/kalarmcal/build-with-kf5-kholidays.patch
new file mode 100644
index 000000000..0d5bd88f8
--- /dev/null
+++ b/user/kalarmcal/build-with-kf5-kholidays.patch
@@ -0,0 +1,11 @@
+--- kalarmcal-17.12.2/CMakeLists.txt.old 2018-02-06 00:37:47.000000000 +0000
++++ kalarmcal-17.12.2/CMakeLists.txt 2018-03-04 22:17:25.340681117 +0000
+@@ -26,7 +26,7 @@
+ set(KALARM_LIB_VERSION ${PIM_VERSION})
+
+ set(CALENDARCORE_LIB_VERSION "5.7.2")
+-set(HOLIDAY_LIB_VERSION "5.7.2")
++set(HOLIDAY_LIB_VERSION "5.6.2")
+ set(IDENTITYMANAGER_LIB_VERSION "5.7.2")
+ set(AKONADI_LIB_VERSION "5.7.2")
+ ecm_setup_version(PROJECT VARIABLE_PREFIX KALARMCAL
diff --git a/user/kalgebra/APKBUILD b/user/kalgebra/APKBUILD
new file mode 100644
index 000000000..7ef317ded
--- /dev/null
+++ b/user/kalgebra/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kalgebra
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Graph calculator and plotter"
+url="https://www.kde.org/applications/education/kalgebra/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+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 readline-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kalgebra-$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 \
+ -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="28263c27a8f26c880237ab0fabc103dd4810e1bd42ce28a5890319105178289c96579dd15c6ef511b60860ebea5f8080bc5a5c0d3984fe3976375abbfc839fc7 kalgebra-17.12.2.tar.xz"
diff --git a/user/kalzium/APKBUILD b/user/kalzium/APKBUILD
new file mode 100644
index 000000000..032a5269d
--- /dev/null
+++ b/user/kalzium/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kalzium
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Periodic table of elements (PSE) with calculators"
+url="https://www.kde.org/applications/education/kalzium/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtscript-dev
+ eigen-dev qt5-qtdeclarative-dev qt5-qtsvg-dev karchive-dev kconfig-dev
+ kcoreaddons-dev kdoctools-dev ki18n-dev kdelibs4support-dev khtml-dev
+ kparts-dev kplotting-dev solid-dev kunitconversion-dev
+ kwidgetsaddons-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kalzium-$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 \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="2f2c4ed44cd0302b63819a4b6ec0ec15038aae74f825b30ae84ccb15eb593380b77a6de84a11d94dd20ae9e66225ad977e8d127b3c120bcaa02950ffe62737c7 kalzium-17.12.2.tar.xz"
diff --git a/user/kanagram/APKBUILD b/user/kanagram/APKBUILD
new file mode 100644
index 000000000..aef3dfa19
--- /dev/null
+++ b/user/kanagram/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kanagram
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Letter order (anagram) game"
+url="https://www.kde.org/applications/education/kanagram/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
+ ki18n-dev kcrash-dev sonnet-dev kconfig-dev kconfigwidgets-dev kio-dev
+ kcoreaddons-dev kdeclarative-dev kdoctools-dev knewstuff-dev
+ libkeduvocdocument-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kanagram-$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 \
+ -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="3de3df86c5f2b7c4a1590e9c3cb16509b5ef4f36e63981e1842c30e8034d34cac5626eb8ac00d3c8137a90975f64c14bc69dc6bf53551faf94d7e7991d3e5fe4 kanagram-17.12.2.tar.xz"
diff --git a/user/kapman/APKBUILD b/user/kapman/APKBUILD
index 1aa38ba28..49724c3d6 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Pac-Man clone"
url="https://www.kde.org/applications/games/kapman/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1930ecb18da0a18fac75e43405993ee6dcd7f5228efa31f2f8f077bc2e10cb3e95acdb178f406cade75eff91a001a44760324eea92882dcf2428e13aca26f439 kapman-17.08.2.tar.xz"
+sha512sums="718f4ed82d71be259cc07f0b0001004e28880db6b0cc1a3931f641653a318d289b6b70687ff8a9815baa20181553d8713eb2f800dc462f116fa8ec831dcb964b kapman-17.12.2.tar.xz"
diff --git a/user/karchive/APKBUILD b/user/karchive/APKBUILD
index 120186b87..514b03e32 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for manipulating archive files"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fd28292b0076ef516ee695c057b026c3601386f1f4733f4ddc6ad21e416c27e891ffb2339f31100105834a84dc9adf4cef518d110e84f9f2d56ac92abe440f05 karchive-5.41.0.tar.xz"
+sha512sums="228516471fc9e961f68b77d06b55d640606f5adaaa1dcba67d12086d57a3184c87a5d9636085b00bc56007cee1af9863e213bc82317b3c917737de4a3d84c74e karchive-5.43.0.tar.xz"
diff --git a/user/kate/APKBUILD b/user/kate/APKBUILD
index a4abe8a80..4e29ab3ac 100644
--- a/user/kate/APKBUILD
+++ b/user/kate/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kate
-pkgver=17.08.2
+pkgver=17.12.2
pkgrel=1
pkgdesc="Advanced text editor with autocomplete, syntax highlighting, and more"
url="https://kate-editor.org/"
arch="all"
+options="!check" # All tests require X11.
license="LGPL-2.1 LGPL-3.0 GPL-3.0"
depends=""
makedepends="$depends_dev cmake extra-cmake-modules qt5-qtbase-dev python3
@@ -93,4 +94,4 @@ kwrite_lang() {
done
}
-sha512sums="9fa3fa7cb2c7b8b542dc2c03073fec83daea4c33c1868b8353519c97db3e63b094ea8f5cff945d7531bf571cdff9108428431afe87468813c370a19355c20dad kate-17.08.2.tar.xz"
+sha512sums="cb71a569e4bd04c9ca1aeed81a7261b3838bf78d6bd731e31163f1eb254d81e78b13889d2118483de0d9cae6a92ebbc4e4dec9f3c62e29444ac1c3fd8dc7efe1 kate-17.12.2.tar.xz"
diff --git a/user/katomic/APKBUILD b/user/katomic/APKBUILD
index 35ebc08ed..78e0bdac1 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Fun, educational game involving molecular geometry"
url="https://games.kde.org/game.php?game=katomic"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="73ceca0600160e5db277473ee0659dff6f0dca7ae46b9c05a1c802d304c04152e5a1038def9ea9f912a1c64962e700612f641c408b3028c25c76c58504eae041 katomic-17.08.2.tar.xz"
+sha512sums="4d6129fabab44cb9b5eea083e7ba3c406581c3b382fda417aad3988de8321b5a17f5ea8af6fc2437a5eb04f87311b964551e54547edbfb854fd2e19e0658dafd katomic-17.12.2.tar.xz"
diff --git a/user/kauth/APKBUILD b/user/kauth/APKBUILD
index e517740b3..9c2f7bdbd 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for allowing software to gain temporary privileges"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="cbdd40ccd9c0cf067cb08b0db252f4cef1ea58a810246e232038caabadd92111e6b8cd3947f1591cd5e69e5ee00f8b9d93fce6ef0c063cb7991e0d88948d6bd6 kauth-5.41.0.tar.xz"
+sha512sums="e20f2f911084f48e81f85f4bc0e4559ce87c476a9dcaacba1e1f4db47ac0b0b3cbd01b185fba0817037838b6fae0e80abea1bc0ab72ced23a2c58fb95f9eb681 kauth-5.43.0.tar.xz"
diff --git a/user/kblackbox/APKBUILD b/user/kblackbox/APKBUILD
index 6fb07c456..e68351d6e 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Hide-and-seek logic game"
url="https://www.kde.org/applications/games/kblackbox/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7f70bc7f132f8b7df1373257d5d50695a68f67706c5be6adb52a675fbd3575e73da33b9e8ca3fe5d40a8f8636e82815a354d82fc3fb4f6ed03b1adfd9aa4985e kblackbox-17.08.2.tar.xz"
+sha512sums="fe68f2162233f77a734099a4520d53c9a404900076d474ad93f98b3fe1c818ff7e04b8a51530f887cb0565d8032dc7902f91c112a0f8d7ea55a99d803f91eac0 kblackbox-17.12.2.tar.xz"
diff --git a/user/kblocks/APKBUILD b/user/kblocks/APKBUILD
index c19e067cb..9aed79891 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Falling blocks game"
url="https://www.kde.org/applications/games/kblocks/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="50d8863202f58ce1a7f6dbb7d98569f0590196b2f38c1fa77c694e8826c90fe77111f3d332ffb2d4aaf172b6103b60388613ad9d667a55f91f4bf9fbed9e001a kblocks-17.08.2.tar.xz"
+sha512sums="6f36b752a4313f8b8345cb54d18e145cf06dbdc00954adfb54831f93643d94e9da130417433aeccfc537d383d60002fc979b2f3b9dd55b7e43808c4e7a760b7f kblocks-17.12.2.tar.xz"
diff --git a/user/kbookmarks/APKBUILD b/user/kbookmarks/APKBUILD
index 7678dc2a4..22cc45551 100644
--- a/user/kbookmarks/APKBUILD
+++ b/user/kbookmarks/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbookmarks
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for managing XBEL-format bookmarks"
url="https://www.kde.org/"
arch="all"
+options="!check" # Test requires X11.
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kcodecs-dev
@@ -44,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3ff852733019099e7badd8647f8b58522877e3e47bb0a0e9edac210ea40590731cc801870e6c0ba2b4cbbc20673d13f39c558ddfd5c8ed05dec5de66ae5baa0f kbookmarks-5.41.0.tar.xz"
+sha512sums="5cfd55d94efa69267dd1e61e857fa541cd0c7ae55a02d83e91a9a0a02dfa020cfeb16b0a8cc10228f838c17de5bca95f683f445749263fc0e28bc55e2ac6f2bf kbookmarks-5.43.0.tar.xz"
diff --git a/user/kbounce/APKBUILD b/user/kbounce/APKBUILD
index d139360e6..00bec3956 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Puzzle/arcade game to build walls"
url="https://games.kde.org/game.php?game=kbounce"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2066d533816ec9f23bd9685f9eefc840b37b0739f7b1fd95e1432c2ed91325d6526b5b6912d2df1cfaa2817f30950fa04aa5db36ce29fa1d302eacfbad7d5d53 kbounce-17.08.2.tar.xz"
+sha512sums="d680381f4c63eee640befbca643948f6671b1601e0d2a700b42f366af9cc242f2446d862f43b1876f3c62653863a54aced101f729314240e66454b7cdaba5436 kbounce-17.12.2.tar.xz"
diff --git a/user/kbreakout/APKBUILD b/user/kbreakout/APKBUILD
index 52dfc16b6..483cf8285 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Break-Out like game with a ball and paddle"
url="https://games.kde.org/game.php?game=kbreakout"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a2233a5eab165467ef1d3728b47259e61182bcc19ea47d640de5dcf800faf5f487f6807eab91704855125defe10a2536dcf69be6bf16c40fe425b9b44cf60fea kbreakout-17.08.2.tar.xz"
+sha512sums="d14a0a0493f5f265578c62a403e7f422efcb322e5de2657d1461c027599b13b43e35ef296b29ddcf0db4147caeee70d8f0cbe44dd4141d37d9fc8fdc19f1f5e2 kbreakout-17.12.2.tar.xz"
diff --git a/user/kbruch/APKBUILD b/user/kbruch/APKBUILD
new file mode 100644
index 000000000..2962c54a5
--- /dev/null
+++ b/user/kbruch/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kbruch
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Practice calculating percentages and fractions"
+url="https://www.kde.org/applications/education/kbruch/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
+ kdoctools-dev ki18n-dev kwidgetsaddons-dev kxmlgui-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kbruch-$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 \
+ -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="fe8d14961034f6f85e568803ce5c12976d5396e8025cd6d53927edc83e10cb4b145fda18793798fcf91b3879aa2f093e41611d569acb709e2e5bcf9a30e43d2d kbruch-17.12.2.tar.xz"
diff --git a/user/kcalc/APKBUILD b/user/kcalc/APKBUILD
index 5d84b3b71..30364d146 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Calculator with many mathematical, scientific, and logic functions"
url="https://utils.kde.org/projects/kcalc/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5b11fad5060ec4a5f3255b2b404bb70f093caebbd054ce1831fcc35282e4befaf286153ce8ddba6f748d670931474b6c909c52747a96632b337ebb4da6c4b263 kcalc-17.08.2.tar.xz"
+sha512sums="902e64eb0bca993b557be9ca2c4807645913fbbfb8cbd3964df18de84d8a90c62fc0a0dedca10c9aa709bfb82d1be0cbd63087d79be92866947af938feb6d631 kcalc-17.12.2.tar.xz"
diff --git a/user/kcalcore/APKBUILD b/user/kcalcore/APKBUILD
index 84b325876..e8dd3a776 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Library for managing a calendar of events"
url="https://www.kde.org/"
@@ -35,7 +35,7 @@ build() {
check() {
cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E RecursOn-RFC2445_RRULETest39.ics
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(RecursOn-RFC2445_RRULETest39.ics|Compat-Mozilla|Compat-Evolution)'
}
package() {
@@ -43,5 +43,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0f116b4aeee847c96383f2e911e1c90f751cc1c4e93ab2c3be44b7a321337a47006d1d5f0c2621efa96c735f11bea13d1077a0cda8504acf9f51960dbd9df165 kcalcore-17.08.2.tar.xz
+sha512sums="ed9195e902cbeff2d48a013cb4c7cade458109696476496a4f8a7a340016c46c9e90d707292d16dde9d80b19290c6d4562297b71f81a5bfdea0eefe76889943c kcalcore-17.12.2.tar.xz
d911c2a03b1db1f9f3b19e7087ae5cbee59ced24ded3b43f2d3286651d13e5f531d171cf7dc6c26906116d4b51a79f2801828956fa1f4e7094fa2f53fe2b888f posix-header.patch"
diff --git a/user/kcalutils/APKBUILD b/user/kcalutils/APKBUILD
index 162970ab7..17683d175 100644
--- a/user/kcalutils/APKBUILD
+++ b/user/kcalutils/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcalutils
-pkgver=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Utility library for managing a calendar of events"
url="https://www.kde.org/"
arch="all"
+options="!check" # Tests require X11 now
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev kcoreaddons-dev kconfig-dev ki18n-dev kcodecs-dev
@@ -43,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1ceaba6676f3cdd962e112d8aea65aae7bf8fb45beace07cf1dbfb634716501cfb9e7b69d2fd65960694a4a9702c35400b0b0a5a342871572666501d015cb424 kcalutils-17.08.2.tar.xz"
+sha512sums="51f5b1fa076360c6b6ffd30af4a94970905cc14d5c23017ba4a163cdd1e27d762674403d2b78473cdb4c671a8190e0e4f8f5003d687fb873b7e4f5abbd2d3d7a kcalutils-17.12.2.tar.xz"
diff --git a/user/kcharselect/APKBUILD b/user/kcharselect/APKBUILD
index 6775e9c87..784ec5fe1 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Tool to select special characters from all installed fonts"
url="https://utils.kde.org/projects/kcharselect/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="21d35ee11da98010381c89236a4968be491426f262bda056b6880755d6fe877fb0ec0d205a9b961d9cd3efe8fc2feed9b99c1aefa1746f23f15022b3f3fd98ca kcharselect-17.08.2.tar.xz"
+sha512sums="9b4bce1fbabc8b51b8d18a1d9b9a754fed7de3809c7bdc392a875061344ab213cd7c1b06c2e30fafb6bbd4e1e7923bebd5a688ca00c9e00323977f39e4206509 kcharselect-17.12.2.tar.xz"
diff --git a/user/kcmutils/APKBUILD b/user/kcmutils/APKBUILD
index c87275e47..749d3868e 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for writing System Settings modules"
url="https://api.kde.org/frameworks/kcmutils/html/index.html"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="65c12664c93bb2405f9570db8e961149c019f28b50b145bc166ada20bf97548f334c1dfad401b57352fada5cadcfc34aeb3d23db84cbcbba4ab4b3355f3d24f1 kcmutils-5.41.0.tar.xz"
+sha512sums="07c668fc50e2890809bac3287a37591abbfb26ff8f4fdb70ae4ebcd141cc54be78f7b3b86f20b68e582b16d6af85b507bae49fb4b7083f1ae61c340dae48115e kcmutils-5.43.0.tar.xz"
diff --git a/user/kcodecs/APKBUILD b/user/kcodecs/APKBUILD
index 79a8a4e22..cfda23196 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for manipulating strings in differing encodings"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1ad2132ee20012cbddbc5281dbd88e41c0247201d6ff32580068842fbb6acec25b34d80a3f236799f9000ba6c5474858ed16ca1892bec45a54a395bd2d835793 kcodecs-5.41.0.tar.xz"
+sha512sums="a6d81395a8b495fa2dded4d7a8331c8b987cf3e8d3b254cc9339863f0ff02c3b972b58f033075dfcc56d1fff21710b000f834de9bf9ce1d3ae1bab1a6bb90d64 kcodecs-5.43.0.tar.xz"
diff --git a/user/kcolorchooser/APKBUILD b/user/kcolorchooser/APKBUILD
new file mode 100644
index 000000000..09e6b565e
--- /dev/null
+++ b/user/kcolorchooser/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kcolorchooser
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Simple application to choose a colour from the screen"
+url="https://www.kde.org/applications/graphics/kcolorchooser/"
+arch="all"
+license="MIT"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev ki18n-dev kxmlgui-dev"
+install=""
+subpackages="$pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kcolorchooser-$pkgver.tar.xz"
+builddir="$srcdir/kcolorchooser-$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="1b3e75f86d0db24d0d32e831a5a95fec32adfc546b63f8def341f4a8844e21177e68ecda7e6f1d5603013af3ea983fff1a9f44df4d7197ab37c25c792b059792 kcolorchooser-17.12.2.tar.xz"
diff --git a/user/kcompletion/APKBUILD b/user/kcompletion/APKBUILD
index 03b15c0f4..671bccb34 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for implementing automatic completion of input"
url="https://www.kde.org/"
@@ -34,7 +34,8 @@ build() {
check() {
cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # All other tests require X11.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -R ksortablelisttest
}
package() {
@@ -42,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5301f19fd2d8b18652b5ec1d0484514cbc696e7cbc747f4e71dec66f801c42c80fede9809d917bda89a074b4aa5ebf1e2b6e49541df5cbbce0306e2e79b4aba9 kcompletion-5.41.0.tar.xz"
+sha512sums="a9ff9f512a46df6d70580150f702339b408390353b0c665eb60d28f34ec4484d558896d510f82300b8178a402f7b6c8e5d9f587a33c4bb242860855bfce8e158 kcompletion-5.43.0.tar.xz"
diff --git a/user/kconfig/APKBUILD b/user/kconfig/APKBUILD
index 5873064b4..08ff036ed 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for managing software configuration"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="966f88c7c02390551cdf072159cf7e224719cc7cf20f3bb90acee7fa46a82b80f64a3c4c6bfdcdf779451f2a42e92ec51212cf8442bd360fa2ac30dd1fa3487b kconfig-5.41.0.tar.xz"
+sha512sums="446d0b5b1aadc32a73e44cae77959d212a83cc036c288591c82b46734e616ce1124d3df09d4fa031f91c8bb08e452348588831435c44fe64247b341d62eb3279 kconfig-5.43.0.tar.xz"
diff --git a/user/kconfigwidgets/APKBUILD b/user/kconfigwidgets/APKBUILD
index c517d59ec..e523b0df7 100644
--- a/user/kconfigwidgets/APKBUILD
+++ b/user/kconfigwidgets/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kconfigwidgets
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework providing widgets for software configuration"
url="https://www.kde.org/"
arch="all"
+options="!check" # All tests require X11
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev kauth-dev kcodecs-dev kconfig-dev kguiaddons-dev
@@ -42,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="58e9a86211832694b920680550b7ba61769bacfd56cd6469aa6423504a9a72bf3c0f0beb04bc64cc1a852590db74589195477b57ec1ac55111267046031739ae kconfigwidgets-5.41.0.tar.xz"
+sha512sums="57b5b8a76a7973bb04dec739b7ac3da0a8146623849fa8cbfee9eddc7224a5bf0ee933ee95787617217ecf38841355abef24c6d70da378b743401270ca25083d kconfigwidgets-5.43.0.tar.xz"
diff --git a/user/kcontacts/APKBUILD b/user/kcontacts/APKBUILD
index 71ac6fef0..b5ce62443 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Library for working with contact information"
url="https://www.kde.org"
@@ -34,7 +34,8 @@ build() {
check() {
cd "$builddir"
# addresstest requires the library to already be installed.
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E addresstest
+ # picturetest requires X11 running.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E "(address|picture)test"
}
package() {
@@ -42,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0c87a84b3bc588150d5c46cdce78f516c7e002bdd99527f78d7ca4a51658aa0eed3326d94a4a2add5d12a8d8f432df1c32e8b5aca3de172df7785304c9f879a2 kcontacts-17.08.2.tar.xz"
+sha512sums="f6b18421b06d6991c0f99921ccfbe30b8ff79e6912fb1dda2fde06da21600ebcf231549176192ee6ff7f4ca043045a3134389c0b6189c8876a999b4d4d4a2a40 kcontacts-17.12.2.tar.xz"
diff --git a/user/kcoreaddons/APKBUILD b/user/kcoreaddons/APKBUILD
index 04875c5b0..4873bde13 100644
--- a/user/kcoreaddons/APKBUILD
+++ b/user/kcoreaddons/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcoreaddons
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Core KF5 framework"
url="https://www.kde.org/"
arch="all"
+options="!check" # Needs more than 8192 open fds
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev"
@@ -43,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="86d6943c303786e4c7b5ea3e2f5c17dae89152597e305316b5e5977e7a037727579a25fd4d6e6f8c272bcae24af5185b06d87189a0a6a8ab8b8232cd059c030f kcoreaddons-5.41.0.tar.xz"
+sha512sums="895a6b3547f78f5222a16be71c8fe8865b922e2d9b2a8fedf322c7df607ccdb6b4fd3928470dc5cef385eaf13c37a5d1dcbd959afc326afb48b8636cb4a4b77b kcoreaddons-5.43.0.tar.xz"
diff --git a/user/kcrash/APKBUILD b/user/kcrash/APKBUILD
index 402b7f338..5f3cb82fc 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for gracefully handling software errors~"
url="https://www.kde.org/"
@@ -46,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ff21f33d14813aad00a2cc231cb889eb219555ee0302a3575d0ea5e237d7b5d6b9a50c354b289b087ccbce9bd4b5c76e8c94e7bde6a00e8148c63a13e79780ef kcrash-5.41.0.tar.xz"
+sha512sums="1733807f55d5914b67d7b009ef8b34d0c54e3e1fb40a373df7651d65dc3180033ec8872c105d243134e7e38ea6fa9992f2d4803d9b2915721a3c0d8c43c7464c kcrash-5.43.0.tar.xz"
diff --git a/user/kdbusaddons/APKBUILD b/user/kdbusaddons/APKBUILD
index c7d996df4..87aac1692 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for coping with D-Bus"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="52323367b827268e0ed8319184d93066663bbe2b44e1f72833107f8c695ab0024a6c9bbff1fcad66add79d341fe22085c07c0c5f4a0032f0bb3bf9208d95732d kdbusaddons-5.41.0.tar.xz"
+sha512sums="395fdb0e2387c6eb2dfafc1f84eb86e24d4bc79dc4f3b914fe956f0614ffb40d2cbd66a550b88e8fc19d676de20fccd786737f03291c11624bdb5704da7a8e1b kdbusaddons-5.43.0.tar.xz"
diff --git a/user/kde-cli-tools/APKBUILD b/user/kde-cli-tools/APKBUILD
index a85d55916..8b7fcef04 100644
--- a/user/kde-cli-tools/APKBUILD
+++ b/user/kde-cli-tools/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-cli-tools
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="KDE command-like utilities"
url="https://www.kde.org/"
@@ -11,7 +11,7 @@ options="!check" # MIME types for some reason think .doc == .txt
depends=""
makedepends="qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev kiconthemes-dev kinit-dev
ki18n-dev kcmutils-dev kio-dev kwindowsystem-dev kdelibs4support-dev
- kdesu-dev qt5-qtx11extras-dev
+ kactivities-dev kdesu-dev qt5-qtx11extras-dev
cmake extra-cmake-modules kdoctools-dev"
install=""
subpackages="$pkgname-lang $pkgname-doc"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3be34730ba417c80a6acf23c5428a16912270ea7dc0731a2e03670ae8b8350250280973342fc41f933f6f5db9f97947db97164cf4fb40ee0774a339daeb3479d kde-cli-tools-5.8.7.tar.xz"
+sha512sums="2dc5be967d7888abda1b28af465754ae1530a3cd8cb919a77dc65d8566f961faa17e0c2d351b20fb3fcd4fd08d06f65bbe169cb20e78735d9ad3d7cc8664003e kde-cli-tools-5.12.2.tar.xz"
diff --git a/user/kde-education/APKBUILD b/user/kde-education/APKBUILD
new file mode 100644
index 000000000..27686bf6b
--- /dev/null
+++ b/user/kde-education/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kde-education
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Educational software from the KDE Software Collection"
+url="https://www.kde.org/applications/education/"
+arch="noarch"
+license="NCSA"
+options="!check" # Empty meta package, no point in testing.
+depends="artikulate blinken gcompris-qt kalgebra kalzium kanagram kbruch
+ kgeography khangman kig kiten klettres kmplot ktouch kturtle kwordquiz
+ labplot marble rocs step"
+makedepends=""
+install=""
+subpackages=""
+source="org.adelie-linux.about-education.desktop"
+build() {
+ return 0
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/applications
+ cp -pr "$srcdir"/*.desktop "$pkgdir"/usr/share/applications/
+}
+
+sha512sums="d88ee909e3ce8d26f3fbfeebc8656e0b72ec399f5ba0a1225babf217b01f5c7caec6e81e95cabb00b23dcbd41416360ae15958f38a5cbf4d548b89e3dd3229d5 org.adelie-linux.about-education.desktop"
diff --git a/user/kde-education/org.adelie-linux.about-education.desktop b/user/kde-education/org.adelie-linux.about-education.desktop
new file mode 100644
index 000000000..3aca1d1b5
--- /dev/null
+++ b/user/kde-education/org.adelie-linux.about-education.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About KDE Education
+Comment=Learn about KDE educational software included with Adélie
+Icon=dialog-information
+Categories=KDE;Education
+Exec=xdg-open https://support.adelielinux.org/html/desktop-kde/education.html
diff --git a/user/kde-games/APKBUILD b/user/kde-games/APKBUILD
index 274d93b38..c8c1778f4 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="All the KDE games"
url="https://www.kde.org/applications/games/"
@@ -16,17 +16,15 @@ depends="kapman katomic kblackbox kblocks kbounce kbreakout kdiamond
makedepends=""
install=""
subpackages=""
-source="https://distfiles.adelielinux.org/source/meta/kde-games-$pkgver.tar.xz"
-builddir="$srcdir/kde-games-$pkgver"
+source="org.adelie-linux.about-games.desktop"
build() {
- cd "$builddir"
+ return 0
}
package() {
- cd "$builddir"
- install -D -m644 "$builddir"/org.adelie-linux.about-games.desktop \
- "$pkgdir"/usr/share/applications/org.adelie-linux.about-games.desktop
+ mkdir -p "$pkgdir"/usr/share/applications
+ cp -pr "$srcdir"/*.desktop "$pkgdir"/usr/share/applications/
}
-sha512sums="55f98ad2a1c539feedcd96961e87f2d5b0d60a0f8eadbdc16a3cbd137cf0a2ca586e179c4c00b50eba3619a30d63d3a265f4e3a6beaf5f37a8847fb6c0caa723 kde-games-17.08.2.tar.xz"
+sha512sums="1748420b49e7cf9194b74a17ee71a567c66c3966e6a0cfa8aabb28ab878f95dfb9755ffbade30cdfc3054d21f903f52db7276697e85e0aacc9eec5231f1b21d9 org.adelie-linux.about-games.desktop"
diff --git a/user/kde-games/org.adelie-linux.about-games.desktop b/user/kde-games/org.adelie-linux.about-games.desktop
new file mode 100644
index 000000000..5e647ce3a
--- /dev/null
+++ b/user/kde-games/org.adelie-linux.about-games.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About KDE Games
+Comment=Learn about KDE Games included with Adélie
+Icon=dialog-information
+Categories=KDE;Game
+Exec=xdg-open http://support.adelielinux.org/html/desktop-kde/games.html
diff --git a/user/kde-graphics/APKBUILD b/user/kde-graphics/APKBUILD
new file mode 100644
index 000000000..f99a5cb4e
--- /dev/null
+++ b/user/kde-graphics/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kde-graphics
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Graphics software from the KDE Software Collection"
+url="https://www.kde.org/applications/graphics/"
+arch="noarch"
+license="NCSA"
+options="!check" # Empty meta package, no point in testing.
+### FIXME: add karbon when calligra is packaged
+depends="digikam gwenview kcolorchooser kgraphviewer kolourpaint
+ kphotoalbum krita kruler kxstitch okular skanlite spectacle
+ symboleditor"
+makedepends=""
+install=""
+subpackages=""
+source="org.adelie-linux.about-graphics.desktop"
+build() {
+ return 0
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/applications
+ cp -pr "$srcdir"/*.desktop "$pkgdir"/usr/share/applications/
+}
+
+sha512sums="03fb3a4894b3d393ad156450880eef22b061b2e7e2e17ab7a2d8498793b7b862c1029583c591e486633a3b37c2ac084c4c314705964ea8f8d1d899aba98da4ca org.adelie-linux.about-graphics.desktop"
diff --git a/user/kde-graphics/org.adelie-linux.about-graphics.desktop b/user/kde-graphics/org.adelie-linux.about-graphics.desktop
new file mode 100644
index 000000000..503be06cb
--- /dev/null
+++ b/user/kde-graphics/org.adelie-linux.about-graphics.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About KDE Graphics Software
+Comment=Learn about KDE graphics software included with Adélie
+Icon=dialog-information
+Categories=KDE;Graphics
+Exec=xdg-open https://support.adelielinux.org/html/desktop-kde/graphics.html
diff --git a/user/kde-multimedia/APKBUILD b/user/kde-multimedia/APKBUILD
new file mode 100644
index 000000000..b7288b32d
--- /dev/null
+++ b/user/kde-multimedia/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kde-multimedia
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Multimedia software from the KDE Software Collection"
+url="https://www.kde.org/applications/multimedia/"
+arch="noarch"
+license="NCSA"
+options="!check" # Empty meta package, no point in testing.
+depends="dragonplayer juk kaffeine kdenlive kmediaplayer kmix kwave"
+makedepends=""
+install=""
+subpackages=""
+source="org.adelie-linux.about-multimedia.desktop"
+build() {
+ return 0
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/applications
+ cp -pr "$srcdir"/*.desktop "$pkgdir"/usr/share/applications/
+}
+
+sha512sums="279f625f4a3190b2703bcfd10b15932aa99a0c00559c33d3676793c34023ea573404aac27879671af126bdf4c4078db0ef843d1e63aedd14acd7fafdedab3670 org.adelie-linux.about-multimedia.desktop"
diff --git a/user/kde-multimedia/org.adelie-linux.about-multimedia.desktop b/user/kde-multimedia/org.adelie-linux.about-multimedia.desktop
new file mode 100644
index 000000000..a59e6dcd6
--- /dev/null
+++ b/user/kde-multimedia/org.adelie-linux.about-multimedia.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About KDE Multimedia
+Comment=Learn about KDE multimedia software included with Adélie
+Icon=dialog-information
+Categories=KDE;Multimedia
+Exec=xdg-open https://support.adelielinux.org/html/desktop-kde/multimedia.html
diff --git a/user/kde-system/APKBUILD b/user/kde-system/APKBUILD
index c19063453..9acc9b4c1 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=17.08.2
+pkgver=17.12.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 6cb1017ff..a74fa3d3a 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Desktop utiltiies from the KDE Software Collection"
url="https://www.kde.org/applications/utilities/"
@@ -14,15 +14,15 @@ depends="ark kate kcalc kcharselect kfind kgpg kleopatra kmag kmousetool
makedepends=""
install=""
subpackages=""
-source="https://distfiles.adelielinux.org/source/meta/kde-utilities-$pkgver.tar.xz"
+source="org.adelie-linux.about-utilities.desktop"
+
build() {
- cd "$builddir"
+ return 0
}
package() {
- cd "$builddir"
- mkdir -p "$pkgdir"/usr/share/applications
- cp -pr *.desktop "$pkgdir"/usr/share/applications/
+ mkdir -p "$pkgdir"/usr/share/applications
+ cp -pr "$srcdir"/*.desktop "$pkgdir"/usr/share/applications/
}
-sha512sums="f31378c0e4b61e1e7984650a4b654cb1c1a8c78db1b782ae8245b9efc936e5430917fadf382b9d9c9dbe2fb4ebee0b6737318acd5ed0768044dd4331f86bd188 kde-utilities-17.08.2.tar.xz"
+sha512sums="e037aa802389d92b3795b2225c092180a81238a3d5b3118149bae892fec998ee576eceea0d5ae7c5e3ee03451923d4bccd45271d5e4fe7f88f52c4262ff3a595 org.adelie-linux.about-utilities.desktop"
diff --git a/user/kde-utilities/org.adelie-linux.about-utilities.desktop b/user/kde-utilities/org.adelie-linux.about-utilities.desktop
new file mode 100644
index 000000000..9ca5f1c17
--- /dev/null
+++ b/user/kde-utilities/org.adelie-linux.about-utilities.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About KDE Utilities
+Comment=Learn about KDE Utilities included with Adélie
+Icon=dialog-information
+Categories=KDE;Utility
+Exec=xdg-open https://support.adelielinux.org/html/desktop-kde/utilities.html
diff --git a/user/kdeclarative/APKBUILD b/user/kdeclarative/APKBUILD
index f7b185cb2..3ba7f1b16 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Frameworks for creating KDE components using QML"
url="https://www.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e52cf32828cc94132b07844707ca3bb12b87457aa4978380e39655206164002b889e5dfb49151a2c6717a7d65d273f259eca7e35147d12b9c46d0755c6cabea2 kdeclarative-5.41.0.tar.xz"
+sha512sums="5e9494adee19b40ffefbf006e318ba34302e073e9a22a94db255ebba2cec2e066df380063c7c617af81d0fc3f719753e2c050e6daf792f2f3a9d6c08163b616d kdeclarative-5.43.0.tar.xz"
diff --git a/user/kdecoration/APKBUILD b/user/kdecoration/APKBUILD
index 9285f2562..3673e4bff 100644
--- a/user/kdecoration/APKBUILD
+++ b/user/kdecoration/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdecoration
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="Window decoration plugin library"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ef1f7f3eb09872f0ceb0552300493f2701fdb6fb262dec00cad2f06a2ac034a7e278815a90220e94ab366956b0e62157b7c1e0f4fd743a6d5fa7c77931fd54e8 kdecoration-5.8.7.tar.xz"
+sha512sums="12440920014d703156665d80a1c43f3bbbd0aea534f2a79d51536609aa5a50b3419015c1455a8b5c591d15aafc5a317c1a4b0a360e62be0fadcec0785788242c kdecoration-5.12.2.tar.xz"
diff --git a/user/kded/APKBUILD b/user/kded/APKBUILD
index f09ae3aa2..8c1f874ad 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Central KDE workspace daemon"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d904f730ec15c04bd4db0c628c3112da942c46923ceb93faab2c14c049ac7f3f3e9955c5d1a4c16405184662f2170935141ba01f2e76f1f3e9367892fd54d7df kded-5.41.0.tar.xz"
+sha512sums="cb62ad4b0be13b103810a0396614da3a6137076041102a6aca5b30c477b5bab472298bdedd869e3476725dd21368075273193afd7027b9dcf1ad84594f6bbb32 kded-5.43.0.tar.xz"
diff --git a/user/kdelibs4support/APKBUILD b/user/kdelibs4support/APKBUILD
index 23085c225..f9ddead19 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Legacy support for KDE 4 software"
url="https://www.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ecda32a36099bc6b7fcdb56a7608cabb20fd30ea591a47c789b499924c7beda37f9479b8321d5e0a09094cd1274060e9546f4fb089cad70b80991e7f9a6fdc61 kdelibs4support-5.41.0.tar.xz"
+sha512sums="bd73459e5334a1158f68d2af2032fa9236bae303c2c45ac9c3b46ffcf46654f9175fae68222a7cfb3398642634aa21fd023f19f0318af633574f448bfab8e467 kdelibs4support-5.43.0.tar.xz"
diff --git a/user/kdenlive/APKBUILD b/user/kdenlive/APKBUILD
new file mode 100644
index 000000000..22a707446
--- /dev/null
+++ b/user/kdenlive/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kdenlive
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Libre video editor"
+url="https://kdenlive.org/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtscript-dev kio-dev
+ qt5-qtsvg-dev qt5-qtdeclarative-dev kxmlgui-dev karchive-dev kcrash-dev
+ kbookmarks-dev kcoreaddons-dev kconfig-dev kconfigwidgets-dev mlt-dev
+ kdbusaddons-dev kwidgetsaddons-dev knotifyconfig-dev knewstuff-dev
+ knotifications-dev kguiaddons-dev ktextwidgets-dev kiconthemes-dev
+ kdoctools-dev kfilemetadata-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kdenlive-$pkgver.tar.xz"
+builddir="$srcdir/kdenlive-$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="7a70ba8de9b034cabd6ce4fc6b92b01b57994327bab35e3410110b1d3dbe88fcae586a3f0ee82b387a205503b5853a3471c72d6c94bb6b0e9d5b96d7db24ecf0 kdenlive-17.12.2.tar.xz"
diff --git a/user/kdesignerplugin/APKBUILD b/user/kdesignerplugin/APKBUILD
index ba5682fa1..e48cc41a8 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Qt Designer plugin for KDE widgets"
url="https://www.kde.org/"
@@ -46,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="dc981f77b154ce33de111d7cfe7193f35fe58c7e92bb8e72306d67e35ca633ccf3ad9c7c92361f136cf3df618980c0df2bbcd636a7c9e556d08f6c91d0b423c7 kdesignerplugin-5.41.0.tar.xz"
+sha512sums="38422393c7a061fada3054fd511bafa3c2d529fe819c86854cbf48db1ea92ec2496fa3df947a985f029d5d3110fae33c89d60b853d59a601f6f172f5b15c0684 kdesignerplugin-5.43.0.tar.xz"
diff --git a/user/kdesu/APKBUILD b/user/kdesu/APKBUILD
index 5b93d4d34..7abff9080 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for elevating privileges"
url="https://api.kde.org/frameworks/kdesu/html/index.html"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a94f9433906669a64d12c4ebf7e895fbcec6b77e64dad1d810cfe5be2404632352466753d2453dbca930becfeefbc6b1426c72b262fe7189f575fbd8dc05ad57 kdesu-5.41.0.tar.xz"
+sha512sums="efed4e7583b2f862115a5a016c647bbe0a6043027a0466d4237f7c3e0c0b2afc8995ea75ae371e0c73a7d550628d3713adf430173ba411d958d807fed35cbd38 kdesu-5.43.0.tar.xz"
diff --git a/user/kdf/APKBUILD b/user/kdf/APKBUILD
index a87585522..265884b1b 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="View disk usage information"
url="https://utils.kde.org/projects/kdf/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8fddc0b5c156d0ac536237395951eee787b53d6c4fde6b90fd24be2e2f07ec3e27be45a52e6cc4976f68b5a0d61aed42b5701aac24ffb6ede7b3ffad4cf9abe5 kdf-17.08.2.tar.xz"
+sha512sums="f7e3fb2a7336ba587295f6dd8b25f48aaf304e4130e05fa13a659c43277b4dfd98d6f3036d4e64d6cb95e44a16ff4888910db629cd982f23750f334438925080 kdf-17.12.2.tar.xz"
diff --git a/user/kdiamond/APKBUILD b/user/kdiamond/APKBUILD
index bad366e84..76bab2ecb 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Three-in-a-row game"
url="https://games.kde.org/game.php?game=kdiamond"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b6513bf87f1af519edd3aac5ef93e8e3a762e7f7cf83dab3d66867e1b6fda492f233b88b92cfb7e05a89a7df26295b94dfda7e193742ec7ead873cc2c7ef4e5d kdiamond-17.08.2.tar.xz"
+sha512sums="f7e693c519c4d7c0ce2717540de4d456239760f65e6e00b191b76fcf78dd69d2bb0cac271d3676509c883b9580af415306de057a8f379d154da983ead145cde0 kdiamond-17.12.2.tar.xz"
diff --git a/user/kdnssd/APKBUILD b/user/kdnssd/APKBUILD
index 4568bfc0a..d3330aa75 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for discovering network services using Zeroconf"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f1e0136baaf5dbfe8578654a2a7c71acfb002c38b745a50d4574dd4855b2f470afe44aa88b11c94f5d366ee9d4cd6603abf68d367234f3348cc0a70405708aee kdnssd-5.41.0.tar.xz"
+sha512sums="d84714e0d9b247f719b4c8d82c8927a132c98d8261d858fc6cbc2d1be619daa4d64f513d0c71d626e63ed887639689436cc593c8024b07d583103cb2537402b3 kdnssd-5.43.0.tar.xz"
diff --git a/user/kdoctools/APKBUILD b/user/kdoctools/APKBUILD
index f36303ddc..67511f3a9 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Tools to generate user-readable documentation from DocBook XML"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8e5519bc6872d2c6da226d95c9d69e17a19b587e48cfb2de881e1bd735a869b2055b25c5121ce024f65237b1c1f886e93da6992e2213b163aa2940ee04eb6866 kdoctools-5.41.0.tar.xz"
+sha512sums="af93b4ab7966246b38933eccd02ce2dd02c288e3f582c9b3e14e05aa03293c32ae78c0b3cda6710012faf368de4efab5d06ad3df8e279d1dda967d2860d5e62c kdoctools-5.43.0.tar.xz"
diff --git a/user/kemoticons/APKBUILD b/user/kemoticons/APKBUILD
index 11f027f3f..836c16993 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Emoticons to express emotions in KDE"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4f21d7fc428dcaeab1f82b40c60125590f5b077729a9b2995abfc153a044dc9d71dcdbc34adf53f5b83a434a421d86022a15df8c6e4a0e03b1d3c095d7718d88 kemoticons-5.41.0.tar.xz"
+sha512sums="130011a2158f5d84ba664354900e23eaf8867623eeab0fe018c6b8c60b3fd413d3f5e1ad43a3fe51dbc0153bec3e8c14d88b7f06f82d873c2d7f2237441eb8d8 kemoticons-5.43.0.tar.xz"
diff --git a/user/kfilemetadata/APKBUILD b/user/kfilemetadata/APKBUILD
index 9e81ef284..0a8d0e942 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="File metadata extraction framework"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="79d9322b1b7c21809f287a555b4577eb885248becb7bd7236b40d446c0e5fe154778d9784d3bc06efd8697c485b01a2bfa042aee2911d49b2f31faca0706af15 kfilemetadata-5.41.0.tar.xz"
+sha512sums="0e669ae832aeef2a54e6a26df5541d607301e13798082e716f6caf682d4e28d87d7eb0a4487c7f2c8bfee0311a5a3342238dfa806413fccb20d3cfbf6b8733be kfilemetadata-5.43.0.tar.xz"
diff --git a/user/kfind/APKBUILD b/user/kfind/APKBUILD
index d9655339a..74f18c367 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Standalone search utility for KDE"
url="https://www.kde.org/applications/utilities/kfind/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a652bd1fac8fecab9e40a246e7c7f08061848596c93695847d15947d48235602624de13b47735ccba7435d4a6e501e7680d1f094c4d02a181d8445fc91b0845a kfind-17.08.2.tar.xz"
+sha512sums="2de77210e6c2e84addc54c99d3b7329c490ae9c8c614281d904a70dcda8905945beaa92e9927c03a71f7bfd72a353f9361ecea8030c2761abbd872c7ebe45636 kfind-17.12.2.tar.xz"
diff --git a/user/kfloppy/APKBUILD b/user/kfloppy/APKBUILD
index 9cbf16286..14c3f0db2 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Utility for formatting floppy diskettes"
url="https://utils.kde.org/projects/kfloppy/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2c17c305ecb41e6ded4bb4391ddf15390f7cd09d6a91f7279d31adb640b4b88c30814b80a5cd7aaa6c7382cfaf2c8e5ffa74f7ddc13e91ba2e43206a396c2d9f kfloppy-17.08.2.tar.xz"
+sha512sums="d95a7072754a4bcc95c2fc8a8c5149759e33717bd29377ebed78cfe40ee3e0f7793d537476d1807f830c11f9af5b5c15e1db6c82540b385bf46a6f4749ca8691 kfloppy-17.12.2.tar.xz"
diff --git a/user/kfourinline/APKBUILD b/user/kfourinline/APKBUILD
index 88f7c2572..88dcd259d 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Two player board game based on Connect Four"
url="https://games.kde.org/game.php?game=kfourinline"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="104e8fcb12a97d8876813c37d862cd8f103e2267f229e373066f89132e496fb89ecb1a76df40f232ad8af18dc1583f6d9a1e69c72b96b47f115f29dcfe3e5ec2 kfourinline-17.08.2.tar.xz"
+sha512sums="3f7e0b179347bbb2cafb43f02af8a99becd872c35419a432e213afec1f1767b53a07a2abcae193fe868c891cbb464768bf5ade33565b5fba8c6f2c452d234594 kfourinline-17.12.2.tar.xz"
diff --git a/user/kgeography/APKBUILD b/user/kgeography/APKBUILD
new file mode 100644
index 000000000..aed98eaaf
--- /dev/null
+++ b/user/kgeography/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kgeography
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Geography learning tool and trainer"
+url="https://www.kde.org/applications/education/kgeography/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kxmlgui-dev kcrash-dev
+ kwidgetsaddons-dev kcoreaddons-dev kconfigwidgets-dev ki18n-dev
+ kitemviews-dev kiconthemes-dev kdoctools-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kgeography-$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 \
+ -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="31bb488144ce8c17d3aa11e7155a83dbec49281803c814076c92fc71b758aaebce87d796dfb2b20f22baad50e1b31c466436d627a40bfa1265a6c02b84d11c32 kgeography-17.12.2.tar.xz"
diff --git a/user/kglobalaccel/APKBUILD b/user/kglobalaccel/APKBUILD
index 171c0fa8e..9a1989d39 100644
--- a/user/kglobalaccel/APKBUILD
+++ b/user/kglobalaccel/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kglobalaccel
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for implementing global shortcuts/accelerators"
url="https://www.kde.org/"
arch="all"
+options="!check" # Only test requires X11.
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kcrash-dev
@@ -44,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d0a36a9aee6bbf4198f1324e98174750c914caa72c0ee33076875c41e4a41e0cfc9fc1f1d395bba595f1bb397b27597cb1356c3654230e6d1958f8f9ecf0c4a6 kglobalaccel-5.41.0.tar.xz"
+sha512sums="1b10d9e5c454b1a4c9fb2553fb1847e30ada2b36050a4fd13637c9a1ba2cff642b19c2934414fc5e104958856c0d0dae4d20b8fdb6f51454125b0e2941fd1d22 kglobalaccel-5.43.0.tar.xz"
diff --git a/user/kgoldrunner/APKBUILD b/user/kgoldrunner/APKBUILD
index a883519ee..1a552e025 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Puzzle game with a gold hunt, dodging enemies, and digging around"
url="https://games.kde.org/game.php?game=kgoldrunner"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8815c6658542ac5191ef7b88a97d4c572b772d5afcf483f03c6c999a037652c2bf56b63a844425629f08bcb4c82d07961129dce37f91dcc6f7beae2468e9edad kgoldrunner-17.08.2.tar.xz"
+sha512sums="a68a9b16fe8ae20b3613cd3d8dc872a0a222476cf6e9a4d0bd8b0563604703ef5eb910770499355e8f75fc20a44a3917234f1be88f06dff23a721d0049014ff6 kgoldrunner-17.12.2.tar.xz"
diff --git a/user/kgpg/APKBUILD b/user/kgpg/APKBUILD
index 1c8b27096..77d2d5451 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Simple interface for GnuPG, a powerful encryption utility"
url="http://utils.kde.org/projects/kgpg/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c30db0d037d90e7fc2dbb84fa26b7603a3fb06b84fcf0e682ed4d08948f3d7122c357e57ce11527b44a0e9114de84514726a586928d80426a3dbd67161774093 kgpg-17.08.2.tar.xz"
+sha512sums="5f5078b0a72d0837d023e89079f7d0206b5952ea437af2eb9ba76d9c3706c7e77e92ded7ae61a5ec18ff5b4b0dc93425b265200fe0acdec43ddccc1eaca9df44 kgpg-17.12.2.tar.xz"
diff --git a/user/kgraphviewer/APKBUILD b/user/kgraphviewer/APKBUILD
new file mode 100644
index 000000000..4d7c4fda1
--- /dev/null
+++ b/user/kgraphviewer/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kgraphviewer
+pkgver=2.4.2
+pkgrel=0
+pkgdesc="Graphviz DOT graph viewer"
+url="https://www.kde.org/applications/graphics/kgraphviewer/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kparts-dev
+ kcoreaddons-dev kdoctools-dev kio-dev kiconthemes-dev graphviz-dev
+ kwidgetsaddons-dev boost-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/kgraphviewer/$pkgver/kgraphviewer-$pkgver.tar.xz"
+builddir="$srcdir/kgraphviewer-$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="2a25f8493881ffa057602e7a141ea610b8db7c43da2db007aea118e2ec7b1f069fbfa6ca80b0e1048c9b20535764679c8d77027337c47a4c18e5240c3058d935 kgraphviewer-2.4.2.tar.xz"
diff --git a/user/kguiaddons/APKBUILD b/user/kguiaddons/APKBUILD
index f715724c3..b0a89eb6d 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for creating high-level user interfaces"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0811bbaafad90109cdd18bc188fda7f99c2e2f53a399d823af333a052b6999cae612ecd1cdfd373f3cbc3b79133d10abd28e8c909c2e933883293ed93434f1a0 kguiaddons-5.41.0.tar.xz"
+sha512sums="ea560ba016914037ddad6d07da849a1f9b20d241a7d5e21353237e00e960d5ca5005de3bc95db67e0ff1d432b0a52b99e8d7f85a0930ec40ff1fddf932a15e41 kguiaddons-5.43.0.tar.xz"
diff --git a/user/khangman/APKBUILD b/user/khangman/APKBUILD
new file mode 100644
index 000000000..08f129dae
--- /dev/null
+++ b/user/khangman/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=khangman
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Hangman word game"
+url="https://www.kde.org/applications/education/khangman/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
+ qt5-qtsvg-dev ki18n-dev kcrash-dev kcompletion-dev kconfig-dev kio-dev
+ kcoreaddons-dev kconfigwidgets-dev kdeclarative-dev kdoctools-dev
+ knewstuff-dev knotifications-dev kxmlgui-dev libkeduvocdocument-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/khangman-$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 \
+ -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="fbaa1ef829f53966ab754d9d2ec2efc184505421c08f2f86cacdd2e05088deb9fead44db9b90556b9b5006dc0630f72ddd49b8b0214b179ffac501f204621000 khangman-17.12.2.tar.xz"
diff --git a/user/khelpcenter/APKBUILD b/user/khelpcenter/APKBUILD
index 865851289..b3b709350 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Graphical documentation viewer"
url="https://www.kde.org/applications/system/khelpcenter/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="634a5d9cbe17469e7a3916d315d028adf64ed6a828787a822e0e6e99607e0321cfce78cc07d57ba069fe48ac5a96a4be1d3e17c4d7741bda38c1032afafe92a1 khelpcenter-17.08.2.tar.xz"
+sha512sums="5f2bca81072a21c26853c66b5ae3fd228c92b8c74474797cf45eddbde0d9954b62c6277957698a30538ef28445f83c6e9ca570a8cfe747762486465dea6db6f8 khelpcenter-17.12.2.tar.xz"
diff --git a/user/kholidays/APKBUILD b/user/kholidays/APKBUILD
index 4683a1dc3..bded7abd0 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=17.08.2
+pkgver=5.43.0
pkgrel=0
pkgdesc="List of national holidays for many countries"
url="https://www.kde.org/"
@@ -12,7 +12,7 @@ depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev"
install=""
subpackages="$pkgname-dev $pkgname-lang"
-source="http://download.kde.org/stable/applications/$pkgver/src/kholidays-$pkgver.tar.xz"
+source="http://download.kde.org/stable/frameworks/${pkgver%.*}/kholidays-$pkgver.tar.xz"
builddir="$srcdir/kholidays-$pkgver"
build() {
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e46e9ee8886ca6deac3cfd2a8c4cf700484a4f8430edc7b55b98b2ba138bc8fb612135600de62bd1660e52581f755331023305079760462399c427437e520f30 kholidays-17.08.2.tar.xz"
+sha512sums="57e82a4ed8d7de87b48b3dda3db915c0944ce2eba87cba6143aa509ffa8fe7f877b796c064d6fccf42d5d6e9dc624cfcd3a34e429c705a6dbf9bf626c09f9b1b kholidays-5.43.0.tar.xz"
diff --git a/user/khtml/APKBUILD b/user/khtml/APKBUILD
index 388ceafdc..ede3c5f9d 100644
--- a/user/khtml/APKBUILD
+++ b/user/khtml/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=khtml
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="The KDE HTML library, ancestor of WebKit"
url="https://konqueror.org/"
arch="all"
+options="!check" # Tests require X11.
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev karchive-dev kcodecs-dev kglobalaccel-dev ki18n-dev
@@ -43,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="64210f2b9b17a8abea88c71e78abf2456578292e62350e93f62b8c690344399779fa1e2421d97dd9a6d5306270b071e1d6d7faebf6273ca8118a09b059469d96 khtml-5.41.0.tar.xz"
+sha512sums="55d2806c28d5da5999bb3ba03d33ef026c1c3fefcd1a76c6e74ecd2f659a015f55b2fd1fec34efcddf25fb2e921b4c76358d37498fc3429b6bcf6e5e790f7cd8 khtml-5.43.0.tar.xz"
diff --git a/user/ki18n/APKBUILD b/user/ki18n/APKBUILD
index b0cc5b6bb..c98f373a7 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.41.0
+pkgver=5.43.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="9e108cd8f9cc32c3fe1447415b427981baac58c01cd3127fe0df58b8f7b6ebd6716d48e87b99561c220178f3e6de6e557ce935326451e632028cb6253afd8488 ki18n-5.41.0.tar.xz"
+sha512sums="14b7f632feed5c71a44259b4f0d9cc11ab72d7f132a59fba597e048efee7a4ff360eb01b95c5b4957ca28ba8ab0e2cf9ed752cd146f6dc19855c6c78c05a7e6e ki18n-5.43.0.tar.xz"
diff --git a/user/kiconthemes/APKBUILD b/user/kiconthemes/APKBUILD
index 737a01d40..a2fb3ea50 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for icon theming"
url="https://www.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7cf106a044c2ec2b61bc8e8f138d158de707066059926ed1cbac323a58024ee2cd99a79400ab9fba0661e9835f8ce34ea75748de02c38cd7699233850177573e kiconthemes-5.41.0.tar.xz"
+sha512sums="742a2c79b37830e319e4d807359e9bd16950889753a46f85ee5b8d5e0b1dc6868aaafc625c3df7717371440a1cf4e6168981ec34dae328aa3eb1aecc7962d759 kiconthemes-5.43.0.tar.xz"
diff --git a/user/kidentitymanagement/APKBUILD b/user/kidentitymanagement/APKBUILD
index 2ac1f3db8..65b4b2b91 100644
--- a/user/kidentitymanagement/APKBUILD
+++ b/user/kidentitymanagement/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kidentitymanagement
-pkgver=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Library for managing user identities"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="317e65c2c4d2e5fb9216fb95efa738f16d3ac4603764747a9275d7eeb51722df07d9f55e12ebea0304f4cd86085dc0b2216c9d6a64530f513383525967d3150f kidentitymanagement-17.08.2.tar.xz"
+sha512sums="81a97151b0c7db2b44305b479d5673e42dffd04c5d707f2072db92cc44dc40a412e47000b916fce6be941bc59419f6968debe5ad8173852952378d1b801cbd0e kidentitymanagement-17.12.2.tar.xz"
diff --git a/user/kidletime/APKBUILD b/user/kidletime/APKBUILD
index 881ec5d3a..070eee861 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for determining a user's idle time"
url="https://api.kde.org/frameworks/kidletime/html/index.html"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7dab05f459592ff4b81f56761cd04845c4c236a1674cdc273aef5604fcf5b649cc3a9ca6092d9222dfafaf2b38d9d783820e632d44228b5e5e26d1337f98f9ec kidletime-5.41.0.tar.xz"
+sha512sums="aab85a3143fce87751cd3e9c2b55306f5c4aad1f396dbdea7678605dab4ce47b53b95a42d42667fea937dbd6b20b84c349d00076216753dcb31beab52d05df3d kidletime-5.43.0.tar.xz"
diff --git a/user/kig/APKBUILD b/user/kig/APKBUILD
new file mode 100644
index 000000000..fc2c4cc70
--- /dev/null
+++ b/user/kig/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kig
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Interactive geometry learning and exploration tool"
+url=" https://www.kde.org/applications/education/kig/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kparts-dev
+ qt5-qtxmlpatterns-dev ki18n-dev ktexteditor-dev kiconthemes-dev
+ kconfigwidgets-dev karchive-dev kxmlgui-dev kcrash-dev kcoreaddons-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kig-$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 \
+ -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="3bd9496e17e77ed475e6bb6d28ccb5d2a91dd261ffa7a4b3f8a7d5603b3688ca865da7cf1480411646efcc3a24a1f83bcb5078498ed8534d048b69becc71c653 kig-17.12.2.tar.xz"
diff --git a/user/kigo/APKBUILD b/user/kigo/APKBUILD
index c88d0741b..b9dbe4e9f 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Go or Igo game for KDE"
url="https://www.kde.org/applications/games/kigo/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7d0880f53be246553f627eb317072cb81a01b56af1cd35b4d41a55c717c5cb59598bed5c29b8d090fc867297309e742ac7900113b0bd100bb57687cffc80a423 kigo-17.08.2.tar.xz"
+sha512sums="d758f72efcc797f9b060b6b01065cce4649a69a5031d358ddae3dc3cfc167d9c10cc2ed577089e1dd23925f9ffe3e4d5c5636184678dd1a70ee0715a0b14eb9d kigo-17.12.2.tar.xz"
diff --git a/user/killbots/APKBUILD b/user/killbots/APKBUILD
index af3c34f42..f0305831a 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Simple game of evading killer robots"
url="https://www.kde.org/applications/games/killbots/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="488c4a5660daf7ca48391aa67d2de687e9d78b7ecf4539372e2a55c778ed8c333732253734e6eaa39a54349aa4b26457fed55982b4251d0fe7a1c3253e414b2a killbots-17.08.2.tar.xz"
+sha512sums="70ce103e39cc35e872d61afbb73d1f5498c35266d1715d56c595db17c9028eb264d7d4486254c3032812e9608812fbef95f935947f7138fca3ba5bd08a0e7f21 killbots-17.12.2.tar.xz"
diff --git a/user/kimap/APKBUILD b/user/kimap/APKBUILD
index d1fcb263a..fe83fd937 100644
--- a/user/kimap/APKBUILD
+++ b/user/kimap/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kimap
-pkgver=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="IMAP framework for KDE"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f776850d3604c5e59cfc46bf55baaea5cd81b5a39c10222508573dc97fed97bf201e7cfc529425cb571eb804b9eeb05d2f859a4e3a9cbf406c8e3b31c3ac44a0 kimap-17.08.2.tar.xz"
+sha512sums="e4342382afc3694476608c561871d175aa1c2f9334e66dd7c8460ea8ffd6e016c48777fe7d9039b0d0934e92b5efba6d32acca3cc05fcff6082fc7aa2db38ac1 kimap-17.12.2.tar.xz"
diff --git a/user/kinfocenter/APKBUILD b/user/kinfocenter/APKBUILD
index 4e9bba38f..b3e1bd295 100644
--- a/user/kinfocenter/APKBUILD
+++ b/user/kinfocenter/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kinfocenter
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="Information about the running computer"
url="https://www.kde.org/applications/system/kinfocenter/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="37da25c445d8315dac7bb4cf33124cd73de9c84644920238a2ec66d54650b62106cd4022a76a64cd1b59dee3843a9ba58ecd27d979b2394bd1feb2b86875a452 kinfocenter-5.8.7.tar.xz"
+sha512sums="7150e3376d515d6e542deeb3834bcdb5a253629755e2a3ccc826db84cfd1ef7477119c318ba5a28a6c3b8800a1aa1b6d95e40b99b669d254bf21beec6109ff9b kinfocenter-5.12.2.tar.xz"
diff --git a/user/kinit/APKBUILD b/user/kinit/APKBUILD
index 685917fa3..f576b13cc 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="KDE initialisation routines"
url="https://www.kde.org/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d8bba487b3cefba337bc1c5656f7fa0aeb6c0ee1cb18b3e394de29572af4fe5fbf14c833b7ca6e941687899e7828b9571cd76dfc6b64ff2e110ac5f9b6669a02 kinit-5.41.0.tar.xz"
+sha512sums="1326c6a3d67d5ff9e483f05506c4c21486377c793fb6e6e8f6657d60f28b69bc03bd45619783a76464971b81997b1f546f18043f133f048c4836c023f2ba54f7 kinit-5.43.0.tar.xz"
diff --git a/user/kio-extras/APKBUILD b/user/kio-extras/APKBUILD
index 868fb9e32..8a4892fc8 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="KIO plugins for various data tasks"
url="https://www.kde.org/"
@@ -14,7 +14,7 @@ depends_dev="qt5-qtbase-dev qt5-qtsvg-dev karchive-dev kconfig-dev kio-dev
kiconthemes-dev ki18n-dev solid-dev kbookmarks-dev kguiaddons-dev
kdnssd-dev kpty-dev kactivities-dev phonon-dev libssh2-dev
libtirpc-dev taglib-dev"
-makedepends="$depends_dev cmake extra-cmake-modules"
+makedepends="$depends_dev cmake extra-cmake-modules shared-mime-info"
install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="http://download.kde.org/stable/applications/$pkgver/src/kio-extras-$pkgver.tar.xz"
@@ -46,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="dcdef6f3079218b283cbfabcad9a7981ba969abcb7cfcc8c4694a1767cceaa5dc81e189dd991ca01d20913a8ce59c31d44a7ac2d1826605d9aac6a99e9a37d9b kio-extras-17.08.2.tar.xz"
+sha512sums="5918057745fa201460c8a21e48e669313dce28c40c26ee663e53997af0a5109c6f8396c9ab6939527bf3d315ec29d23aa865290c3fec12896e47dd0526d07fb1 kio-extras-17.12.2.tar.xz"
diff --git a/user/kio/APKBUILD b/user/kio/APKBUILD
index da831e364..56bfab7fa 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for data and file management"
url="https://www.kde.org/"
@@ -16,7 +16,8 @@ makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev gettext-dev
python3 qt5-qttools-dev doxygen graphviz"
install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="http://download.kde.org/stable/frameworks/${pkgver%.*}/kio-$pkgver.tar.xz"
+source="http://download.kde.org/stable/frameworks/${pkgver%.*}/kio-$pkgver.tar.xz
+ D11011-msghdr-iovec-struct.patch"
builddir="$srcdir/kio-$pkgver"
build() {
@@ -46,4 +47,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8f7072bf6268bf07c0c1266cdbee58aacdf43721d193aaa7574c683a4339de3d9701977c8bdd604f301d11393b8d2031e0b90e9ccc42a2c5e62050f41bc04216 kio-5.41.0.tar.xz"
+sha512sums="23885d851dade24bb08ba1de2eda65db3ab13c8f378a42281f8a50230c9e836b5255643c89fbfca3dedc1e41ee259e67aaed2933cdf739ee4fb1c7eb650b95f6 kio-5.43.0.tar.xz
+c08360de86780f63703d70f607d90410043c8a8711eab7315e2ac66e2e656fec9f9a6f5d04c031f739a0187c0d34aa35b5942f59f47efb60ad95584f95087979 D11011-msghdr-iovec-struct.patch"
diff --git a/user/kio/D11011-msghdr-iovec-struct.patch b/user/kio/D11011-msghdr-iovec-struct.patch
new file mode 100644
index 000000000..641bb8629
--- /dev/null
+++ b/user/kio/D11011-msghdr-iovec-struct.patch
@@ -0,0 +1,23 @@
+diff --git a/src/ioslaves/file/sharefd_p.h b/src/ioslaves/file/sharefd_p.h
+--- a/src/ioslaves/file/sharefd_p.h
++++ b/src/ioslaves/file/sharefd_p.h
+@@ -74,9 +74,16 @@
+ FDMessageHeader()
+ : io_buf{0}
+ , cmsg_buf{0}
+- , io{io_buf, sizeof io_buf}
+- , msg{nullptr, 0, &io, 1, &cmsg_buf, sizeof cmsg_buf, 0}
+ {
++ memset(&io, 0, sizeof io);
++ io.iov_base = io_buf;
++ io.iov_len = sizeof io_buf;
++
++ memset(&msg, 0, sizeof msg);
++ msg.msg_iov = &io;
++ msg.msg_iovlen = 1;
++ msg.msg_control = &cmsg_buf;
++ msg.msg_controllen = sizeof cmsg_buf;
+ }
+
+ msghdr *message()
+
diff --git a/user/kirigami2/APKBUILD b/user/kirigami2/APKBUILD
index 73928f9b9..ba4414ff4 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for rapidly designing usable interfaces"
url="https://www.kde.org/"
@@ -10,7 +10,7 @@ license="LGPL-2.1"
options="!check" # Tests require accelerated X11 desktop.
depends="qt5-qtgraphicaleffects"
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtsvg-dev
- qt5-qtquickcontrols2-dev plasma-framework-dev"
+ qt5-qtquickcontrols2-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
graphviz"
install=""
@@ -49,4 +49,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="987f666822aa2c137c57019aed6e811ddd6406318252cd48e71412ee3e6bcb22cd35042c5e3a0e0da5d12db48e4bf7168199d7c473f100a07913f32b1cd23bd1 kirigami2-5.41.0.tar.xz"
+sha512sums="a41a139170853853fd7520912eac273e0cff8b5b798e41fd44cff528d210703b650e86ef9c8e67d8b8f14b89ed63b419e71cebe0e499ed32e9374e9346013c3b kirigami2-5.43.0.tar.xz"
diff --git a/user/kiriki/APKBUILD b/user/kiriki/APKBUILD
index 50f5d763d..1a6baad85 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Yahtzee-like dice game for one or more players"
url="https://games.kde.org/game.php?game=kiriki"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6489e862d3d6c76a1718c3c78282b7f257e9b87890a7d275954f918b452103136c8738708ff9a63c3249882e4edbe4bee4ce38ecc79064e749b0176ebcb72e3d kiriki-17.08.2.tar.xz"
+sha512sums="6fcc187cf3cf25cf3056d6388094f203f533506ead4a8dbb77298cb34fb881958449131a1a89047ac59739fb17db448a95a54c04e9afdc85b96225256a03d2a3 kiriki-17.12.2.tar.xz"
diff --git a/user/kitemmodels/APKBUILD b/user/kitemmodels/APKBUILD
index fe22417ac..6aad0c792 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for sorting and searching objects"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="36d3d07c467cbc249f0554dc96866bfa136617893dbf543ac8f821c693ecbe7d79a24dfb5e99527a0c7f13594cfe5847841d1772fccb1f7cafbf734507f6d9e3 kitemmodels-5.41.0.tar.xz"
+sha512sums="8bc5d6d43abede2478d1e67516cd89e16c0033ea762c057047e898a4d31542ca4e1d7c2bd6e2d4e5cf1cf2c22113f5d69f7a25d022fcc47fabf51364a26cef8d kitemmodels-5.43.0.tar.xz"
diff --git a/user/kitemviews/APKBUILD b/user/kitemviews/APKBUILD
index 69349cd57..e674d25cc 100644
--- a/user/kitemviews/APKBUILD
+++ b/user/kitemviews/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kitemviews
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for displaying collections of items"
url="https://www.kde.org/"
arch="all"
+options="!check" # Test requires X11
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev"
@@ -43,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="81e8d1d158e7fc11e3afcf262a0da41f3c9b80a55134c315f7ebf610254d741d999a7ab3cc1eb8d8f63627c2c155282b0727e2ffefedba65f58a254a2e9d862a kitemviews-5.41.0.tar.xz"
+sha512sums="e54af77d29d1aad0a1e0d842d82a23397f98bc2c146d74c6f1609af66099b0b7413b7d33ae1749036e90db54b1f2217d534d598ddead00be31934a6973a77a05 kitemviews-5.43.0.tar.xz"
diff --git a/user/kiten/APKBUILD b/user/kiten/APKBUILD
new file mode 100644
index 000000000..539a0ce9f
--- /dev/null
+++ b/user/kiten/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kiten
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Japanese reference and study tool"
+url="https://www.kde.org/applications/education/kiten/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kconfig-dev
+ kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kcrash-dev ki18n-dev
+ kdoctools-dev khtml-dev kxmlgui-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kiten-$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 \
+ -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="3c10a77b3ba78cbeaa160ccd6ef1c0cd004c28b18042535a65b735cfaff2b1773ce1d65a15a4da078edb5237a4e45055a193be40d2cbf69d09bc01dae29e584c kiten-17.12.2.tar.xz"
diff --git a/user/kjobwidgets/APKBUILD b/user/kjobwidgets/APKBUILD
index 3ec46c4be..c65660afb 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework providing widgets that show job progress"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0760da48a1f1db220b2c845f774195d143bda2cee451953840beb3d787294e39183dac9d06e4498bccb5ba0e15ff20a268b308c362c93cb38c04af7b53a7ccb6 kjobwidgets-5.41.0.tar.xz"
+sha512sums="41a8a7c9c81f66eb90c196dc05e6159948c30bc1957fc99c477aa56e25f714665d6b5a1af381ebdd1194e4f2a7a68f8975e48d09d98771d67e899ae542d5f6af kjobwidgets-5.43.0.tar.xz"
diff --git a/user/kjs/APKBUILD b/user/kjs/APKBUILD
index 57bb732ae..91c5058fe 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Independent, free JavaScript engine"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8a3bc231f1595704f8ee92ad9680b5d6fc715f304bab311445bb599a2e0cadfaec95f9c04f45a6f2a2be186f51bf54d2de702289a2f02fbf3c1acd93ff06f91b kjs-5.41.0.tar.xz"
+sha512sums="44b52dbeed8d23972eefa9f2a68a6a0f15352c54fe5a8a1563d750899740044dd4539c8b5f6f42a196bd8d3216862437b36c6fd9aa65c653691c1f7ce9428772 kjs-5.43.0.tar.xz"
diff --git a/user/kjsembed/APKBUILD b/user/kjsembed/APKBUILD
index 060041cf6..596c04a47 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="JavaScript bindings for QObject"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4029c45a86bc1e415d8bf9a2e6df019c6e4988d1c9935f1120966f04f2722627652d0fa856dd5a31aac2b848b71a3aabcb870ada5b24338351956d7cad43147a kjsembed-5.41.0.tar.xz"
+sha512sums="54c005f1cdd60a3cedbe636d8abddfe92967ff27ac91086d9e7c0cf9983ef643547c04bde85a5e0558f51c0e68f85900db26ddb627c084396f750da22d30d549 kjsembed-5.43.0.tar.xz"
diff --git a/user/kjumpingcube/APKBUILD b/user/kjumpingcube/APKBUILD
index 499904819..0ebed81a7 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Dice-driven tactical game"
url="https://games.kde.org/game.php?game=kjumpingcube"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="73c7a9390b70e22c91cc30b4f3df9e03cc8661be7a75ba2e790fc601749714eb2bc04756036338c6c251022135537a7fef430ff68065804be48f6984e78e51df kjumpingcube-17.08.2.tar.xz"
+sha512sums="a85b094dc916d01b96a60037173c2e9e298814d575c66408d42de69b20674e65040bb6b4284edb2229b05849776d30e11e197d3d587fb76d7de77c09a3fa3f28 kjumpingcube-17.12.2.tar.xz"
diff --git a/user/kleopatra/APKBUILD b/user/kleopatra/APKBUILD
index db309fed2..ced61dddc 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Certificate manager and cryptography GUI"
url="https://www.kde.org/applications/utilities/kleopatra/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="73eb35aef5b340cbe3dca6042069feb1474512b69998db3adcd67ee5564cedbfd01187687d798dd0357039709d77d9e88aca74c762701e2143873a60ee8d49a1 kleopatra-17.08.2.tar.xz"
+sha512sums="e487d186b3b857929cbbe9023258273890104395b04394fefc7c7bb1a4391c85ff2f52da196ab13500b6d8ad243e646f62922b6dd7d0bee15c32ce92e66347e5 kleopatra-17.12.2.tar.xz"
diff --git a/user/klettres/APKBUILD b/user/klettres/APKBUILD
new file mode 100644
index 000000000..9ae468535
--- /dev/null
+++ b/user/klettres/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=klettres
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Learn alphabets for multiple languages"
+url="https://www.kde.org/applications/education/klettres/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev phonon-dev
+ kcompletion-dev kcrash-dev kdoctools-dev kemoticons-dev ki18n-dev
+ knewstuff-dev kwidgetsaddons-dev kconfigwidgets-dev kcoreaddons-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/klettres-$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 \
+ -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="aac1bba83a093db707185ef77d514ac3f6d909065045b6beaaeb277fd03cf9c882ecd1a3ff35b7256e61517effeac302792e8a6e32a5de4c4cd3082aa257609e klettres-17.12.2.tar.xz"
diff --git a/user/klickety/APKBUILD b/user/klickety/APKBUILD
index dfc9d9665..29c251ffb 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Fun, simple colour matching game"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6fd78ddb0b4b5a1b5b5966c12c5410090332c669e237abbdc7b3aff441dea4388eaff2cb1a150d613cc51ae4c7a3ed2cf60bc1bf6e3adce6536942f54fe19288 klickety-17.08.2.tar.xz"
+sha512sums="d96dd76c8495c68ec52dabf328b0100ddf656ecce0463c65dfd899b46c30e69451c8a94bb00e73a53b492e27c6bb69971532baabba8047cdd063fe65ca8fea64 klickety-17.12.2.tar.xz"
diff --git a/user/klines/APKBUILD b/user/klines/APKBUILD
index 751766ff3..326129ea0 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Simple yet addictive single-player game"
url="https://games.kde.org/game.php?game=klines"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1061a94299617a67fadced2713197f996f9fde5fbb057a0ffe7aba9392f64d81bc225dabb2f1626f2084f0d9fce1413a0f793304ac0c22057842056713e49e94 klines-17.08.2.tar.xz"
+sha512sums="d22b242933f61c2c7c8ade81aeed5126a92398fe9754857adebf03adb7d02d88c642f1ac0dc0a3bea8aa62487314e80bf509645cfd642f97c6b7ec617b5379a0 klines-17.12.2.tar.xz"
diff --git a/user/kmag/APKBUILD b/user/kmag/APKBUILD
index 1917b4323..b55934069 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Screen magnification utility"
url="https://www.kde.org/applications/utilities/kmag/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3c938dedfb482edb85e80edd8ca36c5c55e4377a0342fbbcad473d5c418f99c8e67589a999b4f1f7d52993e6a83843b113e0cf52ba54e17742f95f32b9413275 kmag-17.08.2.tar.xz"
+sha512sums="c3819d26296e19558b6656c965410e97ff2cbd33b98b1cf8f428df8f7c8827f9d627556a975f246addbe5a1a3e7ebfe8a25195962bd2a218a7f4ebedb5f4793a kmag-17.12.2.tar.xz"
diff --git a/user/kmahjongg/APKBUILD b/user/kmahjongg/APKBUILD
index 5936ac6a7..d1a38af60 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Mah Jongg desktop game"
url="https://games.kde.org/game.php?game=kmahjongg"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0ae7203213d60bff74a61caeb83a3ab544632c386fc746af22e2b26d83e9bc5d1fbd1268e88ec4a0323c265d3834a033bcc11727272f4d95e92c3cbe0db28c52 kmahjongg-17.08.2.tar.xz"
+sha512sums="499d1e6eda3094dfbcf1e2535c650341bfc621bc2327a03b66d7539429231f8d6a92fbb360cce49357ad0e7a1bf1c3cdc960f2629a5790ab054a1f595803b41e kmahjongg-17.12.2.tar.xz"
diff --git a/user/kmediaplayer/APKBUILD b/user/kmediaplayer/APKBUILD
new file mode 100644
index 000000000..15e335bdb
--- /dev/null
+++ b/user/kmediaplayer/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kmediaplayer
+pkgver=5.43.0
+pkgrel=0
+pkgdesc="Media player framework for KDE 5"
+url="https://www.kde.org/"
+arch="all"
+license="X11 LGPL-2.1+"
+depends=""
+depends_dev="qt5-qtbase-dev kparts-dev kxmlgui-dev"
+makedepends="$depends_dev cmake extra-cmake-modules"
+install=""
+subpackages="$pkgname-dev"
+source="https://download.kde.org/stable/frameworks/5.43/portingAids/kmediaplayer-$pkgver.tar.xz"
+builddir="$srcdir/kmediaplayer-$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"
+ # viewtest requires X11
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E viewtest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="2e4a0ad713da37521e236a4e1e6ad8bb1cec63546dcbb9c114a40b3165228ac447d54b0d774c576bd59ece219af5898fa033464c13b14ac82da7ab7e99fb49e2 kmediaplayer-5.43.0.tar.xz"
diff --git a/user/kmime/APKBUILD b/user/kmime/APKBUILD
index 1e58f9afb..9da29c26e 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="KDE support library for MIME"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0e69c6f9c24f4373eadbe2b53d7ac672014c1ee23f38ceac68a4ea230a414b0b37ef07c44746d9faa9bf030fcb60e353836370a0937c0d373ac5fc9ff12bf9b5 kmime-17.08.2.tar.xz"
+sha512sums="8687759164779e262ca2923a7fbc60cb37ecc7dd4cf24265ed290829cae4f067d3abbf021f823caeb17483731ee1712652c8cb1c1ce13a3c26b59af00aad2e5d kmime-17.12.2.tar.xz"
diff --git a/user/kmines/APKBUILD b/user/kmines/APKBUILD
index 9a71065f8..fb8298b2f 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Classic Minesweeper game"
url="https://games.kde.org/game.php?game=kmines"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="15514d0a1212088a0d9a0d8601457af0311cd877a0e4ae1fff7348a61b71f79643ef35d123b7fa8cd58c2b30e7506330c4184ba61e0919c10132b91e470be42a kmines-17.08.2.tar.xz"
+sha512sums="447bcde5189365346d0fb9d752d42e58a0e1517496b262ac04c22ebc06392d7317b4d7b829b5bf3bc4debe0c3797fe6cad9d575cf92d141965c8d3c519cd5ae7 kmines-17.12.2.tar.xz"
diff --git a/user/kmix/APKBUILD b/user/kmix/APKBUILD
new file mode 100644
index 000000000..a0141faf6
--- /dev/null
+++ b/user/kmix/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kmix
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="KDE sound mixer"
+url="https://www.kde.org/applications/multimedia/kmix/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcompletion-dev ki18n-dev
+ kconfig-dev kconfigwidgets-dev kcrash-dev kdbusaddons-dev kdoctools-dev
+ kglobalaccel-dev kiconthemes-dev kinit-dev knotifications-dev solid-dev
+ plasma-framework-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev
+ alsa-lib-dev libcanberra-dev pulseaudio-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kmix-$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 \
+ -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="2fc67512e5f2dfa816a77215070e2c7f250169fe6029d7d5be9ab5676e9d22875cfd7ae92dc70153939553bd460934a5b6b45f919557f6ace4216db0c22849aa kmix-17.12.2.tar.xz"
diff --git a/user/kmousetool/APKBUILD b/user/kmousetool/APKBUILD
index 2d875342a..a52a94160 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Tool to assist with clicking the mouse button"
url="https://userbase.kde.org/KMouseTool"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5c74667d7bf06843f957b3c7a188fcbe39f6d049f2a9d5d86cd9f34212a6c1c4ff4e5865d5bcee7282ecd0e2ffe7aebfc1f5ed0d73cbeb51a70d2ef7e583f3ed kmousetool-17.08.2.tar.xz"
+sha512sums="260b5fa3af4720e8dd0d073fe27246f55127759aed264567631d722afc28ad6e256904e782ff4c64e6f79da3f28c896bda1a5ab1ba37e5ee02e620b5e88f905d kmousetool-17.12.2.tar.xz"
diff --git a/user/kmplot/APKBUILD b/user/kmplot/APKBUILD
new file mode 100644
index 000000000..c2a679954
--- /dev/null
+++ b/user/kmplot/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kmplot
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Mathematical function plotter"
+url="https://www.kde.org/applications/education/kmplot/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kcrash-dev
+ kguiaddons-dev ki18n-dev kparts-dev kwidgetsaddons-dev kdoctools-dev
+ kdelibs4support-dev kdbusaddons-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kmplot-$pkgver.tar.xz"
+builddir="$srcdir/kmplot-$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="c58acfc3847993e075b6099a694fe484064298ec7c2e7f3671b6c58cc76125817f41e1c7d0096483163a6b3dce8f8b802cbf0a0c882bbbcb2b70e8cafbf4c6ca kmplot-17.12.2.tar.xz"
diff --git a/user/knetwalk/APKBUILD b/user/knetwalk/APKBUILD
index 3e3a98c4f..adafa9fee 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Build up a computer network by placing the wires correctly"
url="https://www.kde.org/applications/games/knetwalk/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="97df8d28387302ed91dc6fece315fbabc3b591a9ad8d2a19e15d7a704675946788ece2b374a7f2a814bd9c138cc0c6c6554808ba4a9cbc645909197386993d72 knetwalk-17.08.2.tar.xz"
+sha512sums="13f41a215694c3581ccd6ce4a508701dc043824523ee5d17c3011448d2f43209133bc0cb64453b3d9d2b08aaad0b0914a1a41e82f555c9f5f3317606ebb17dfd knetwalk-17.12.2.tar.xz"
diff --git a/user/knewstuff/APKBUILD b/user/knewstuff/APKBUILD
index c8d0c26ec..0f1499d75 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for discovering and downloading plugins, themes, and more"
url="https://www.kde.org/"
@@ -37,7 +37,8 @@ build() {
check() {
cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # kmoretoolstest requires X11.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'kmoretoolstest'
}
package() {
@@ -45,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="52001c0283c445eb0d2ea0d9f4a8f5d4dbdba518ae99d6e97fd12fcc522e422adc9d897b564a8adf45259ded9c674ab021d574ce084d9ed7f5242478ffa32ed8 knewstuff-5.41.0.tar.xz"
+sha512sums="27846ef7ff3b1357926ea04df88ecbf9f0810f38077f3ee06dcbb016d4dc76764660fde3f9d40bce1aec381a95700fb5e18844c9895ffefd2237978f282358af knewstuff-5.43.0.tar.xz"
diff --git a/user/knotifications/APKBUILD b/user/knotifications/APKBUILD
index 9fa972b9c..ea3e7ba47 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.41.0
+pkgver=5.43.0
pkgrel=1
pkgdesc="Framework for sending notifications to users"
url="https://www.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="403adbafd6408bfe8c38afd312ec3b2b4f73d6601a6ea076d309ea7e7e599365cd89dbd5aad2358fb931c1414c22069228dd7991f65dc0adbeda54701f70354d knotifications-5.41.0.tar.xz"
+sha512sums="a90296cdcf557bba36185edda0da037e6a8bc069e5d2d7e3c4f7a692d0fcc8345fd28abed374ba25dd97c5e3f6834cd661d102629a1811b9e76285afac105c36 knotifications-5.43.0.tar.xz"
diff --git a/user/knotifyconfig/APKBUILD b/user/knotifyconfig/APKBUILD
index e7e412947..541915f0b 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for configuring notifications"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c5a14f6bd65272c0742df82526d526a352be02c71608b8812fc584a9c1378f40d5abc681a3ecc881c03ef873d00b355fa4ae5dbd7a0cd2204fcc718fd2c79d94 knotifyconfig-5.41.0.tar.xz"
+sha512sums="2939609042d835eb5ea9c8abfbccd732854313e2882b4e0b966b633f43185ac8b4a0c9ab28a2bd4356b3f3a27fe12b1aee3b9a730280acdc952d0bc58bafa243 knotifyconfig-5.43.0.tar.xz"
diff --git a/user/kollision/APKBUILD b/user/kollision/APKBUILD
index 629aa18a4..31112dcf7 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Simple ball dodging game"
url="https://games.kde.org/game.php?game=kollision"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e4f86d54a13d7e6751629a288447a370c67c4dd5f0af76d976301f40892eff72ae38e7e66834a13c7194d0aff9a84cd9b37e610a333557ca5bd9ec0b33158b62 kollision-17.08.2.tar.xz"
+sha512sums="dd2b009858063a10e917ab0a71fc5ef799b91c3565807d525bc5357df18c8e1b89ec63e5975d8c41822451189ea651d0920cecc753577da3453a0e1e9ce8970c kollision-17.12.2.tar.xz"
diff --git a/user/kolourpaint/APKBUILD b/user/kolourpaint/APKBUILD
new file mode 100644
index 000000000..654a0aa99
--- /dev/null
+++ b/user/kolourpaint/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kolourpaint
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Simple painting program for KDE"
+url="http://www.kolourpaint.org/"
+arch="all"
+# yes, there is 2 only *and* 2+ code here.
+license="BSD-2-Clause AND LGPL-2.0-only AND LGPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdelibs4support-dev
+ libksane-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kolourpaint-$pkgver.tar.xz"
+builddir="$srcdir/kolourpaint-$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="47965664a9749fad289f24975eddac726b266351820c2f94a82f714825d53c9bd6c37ff6f2cc30d47f8be759554c8f9682504e9b2acb4e95751b474f443fd527 kolourpaint-17.12.2.tar.xz"
diff --git a/user/konquest/APKBUILD b/user/konquest/APKBUILD
index cd6689534..2eadb80be 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Galactic strategy game"
url="https://games.kde.org/game.php?game=konquest"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2f74cf16d5fd2fbe6b67facb921c6b68d93cb3ff7b6bb00a7a476b6dc181234dbad7094b61bbb1527d258adc565f96ad672acf95dbac5925693fe36e1fcf47d3 konquest-17.08.2.tar.xz"
+sha512sums="d57db91847a636c22db9969631ac8ebb06fe1b262cbff1cb25bcf79face3791e3a7ca554c1d6a12af70f7cc1deb5a17c8ed29bfb190da5df17d51da863a4b3d6 konquest-17.12.2.tar.xz"
diff --git a/user/konsole/APKBUILD b/user/konsole/APKBUILD
index 9dcb8a4f0..672935863 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Terminal emulator for Qt/KDE"
url="https://konsole.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="39e87e3aa31775b2999d05d719ffb506ff69adc958cb14a29fbe7edf056af179568b73ddb81fbc9bc75eabad50bb5c2fe2b7c025f3bf69f34b83607b7b5c6fe5 konsole-17.08.2.tar.xz"
+sha512sums="daffd82608fcbe4ded65cae336d2d6ab6f6a70a665e2b1841cca39b2933e8c615c072bcfe02958be8e8193c05a0c1ad317e6cda554dcb8e3b434a2f4d8d80036 konsole-17.12.2.tar.xz"
diff --git a/user/kpackage/APKBUILD b/user/kpackage/APKBUILD
index 2de0662f6..39891f0c5 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Frameworks for managing KDE data packages"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="953ed21f0ee5003a826ad2aba39c6155fe33cd7a965f0ac1dab77332cd6cf44ce72613325a8ee7fe407e67fc4d01504d4c67f3e12e818ea5f6adf3e15c970de4 kpackage-5.41.0.tar.xz"
+sha512sums="bb40407ac358fe2cfb555bd50a653503763412b9ab131cc42873f0ed0fb93ac122f551269848e8926c37722091ab3c5be1bc868eaded92a708e42c34960a375d kpackage-5.43.0.tar.xz"
diff --git a/user/kparts/APKBUILD b/user/kparts/APKBUILD
index 15e0f2519..4ca0ea0f2 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for user interface components"
url="https://www.kde.org/"
@@ -46,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="082971b4d7f017c03440c40ea4579ef3a8c75eac98b95a326255075a71bd98ae12c407c67049bcd46c4f65ba91d754c4f07c4253c7d6bc9269a4b0a80cb915da kparts-5.41.0.tar.xz"
+sha512sums="1ce3acf007f402e675e1c943ee43beaaf9cc54017c9b67cf72eed3c4194ef7499e2e8f5fd93fb8569e33b07ed05d41385f50b9f7c5406ce412ffec977e461d3d kparts-5.43.0.tar.xz"
diff --git a/user/kpat/APKBUILD b/user/kpat/APKBUILD
index dadd829d3..e1013e864 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Collection of card games for KDE"
url="https://games.kde.org/game.php?game=kpat"
@@ -11,7 +11,7 @@ depends=""
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"
+ kwidgetsaddons-dev kxmlgui-dev libkdegames-dev shared-mime-info"
install=""
subpackages="$pkgname-doc $pkgname-lang"
source="http://download.kde.org/stable/applications/$pkgver/src/kpat-$pkgver.tar.xz"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="45ac2ac232956238e5ccb84fb44df3ea0face807b77eb00b6eb6b1cc8687578a2ffdbbbba48648216c499709c744e97a2a94d93376653a1979156aa6a511f0f8 kpat-17.08.2.tar.xz"
+sha512sums="605dca9da10b4a419e028f9f7339d685e2fa6399d388502970b23fa51f5385607554c27de3898c20e3e7a098068a1770202097c2b02122b187c76800188db3a6 kpat-17.12.2.tar.xz"
diff --git a/user/kpeople/APKBUILD b/user/kpeople/APKBUILD
index aa0db7ac1..201337dae 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.41.0
+pkgver=5.43.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"
@@ -47,5 +47,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="11ca56d2ff9e97b7119dc97f75ec32260fdcc32720b54f42e8d3a17d4c17ce6b969bb65b280a5f8773f45ec90c2a75b8f9805f327c64f7fc377e443ad913f897 kpeople-5.41.0.tar.xz
+sha512sums="4eceebcf4a155713ee8b40027552c45d7cbcb8ce155394cb5aa57df28f7064486219f766cedc33a0de1e0969920d76b3252100688f546d71dba94064c1e2ff87 kpeople-5.43.0.tar.xz
77df2aefcdfb8e5b9c2fef7a6bfd79066819b0c6958b9e2f8fe94860155aaae9c284a110a15a189cd5b423dc7aa017b952196370f60a4fb382ed7eb77f15abd9 dont-crash-test.patch"
diff --git a/user/kphotoalbum/0001-Process-Don-t-use-stdio-identifiers-for-methods.patch b/user/kphotoalbum/0001-Process-Don-t-use-stdio-identifiers-for-methods.patch
new file mode 100644
index 000000000..99e82b80f
--- /dev/null
+++ b/user/kphotoalbum/0001-Process-Don-t-use-stdio-identifiers-for-methods.patch
@@ -0,0 +1,116 @@
+From 6aca702d252e108801b99113149fec1e89434167 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Wed, 14 Mar 2018 23:25:31 -0500
+Subject: [PATCH] Process: Don't use stdio identifiers for methods
+
+`stdout` and `stderr` are already used by POSIX <stdio.h>. This has
+already caused problems in the past as the (now removed) comment in
+Process.cpp noted with compilation on Mac OS X.
+
+This also causes a problem compiling on the musl libc, which
+specifically uses the preprocessor to avoid redefinition and changing of
+stdin, stdout, and stderr.
+
+This patch changes the names to be stdErr and stdOut, which are
+camel-cased like Qt methods typically are, and do not conflict with
+identifiers defined in <stdio.h>.
+---
+ ImageManager/VideoLengthExtractor.cpp | 12 ++++++------
+ Utilities/Process.cpp | 12 ++----------
+ Utilities/Process.h | 4 ++--
+ 3 files changed, 10 insertions(+), 18 deletions(-)
+
+diff --git a/ImageManager/VideoLengthExtractor.cpp b/ImageManager/VideoLengthExtractor.cpp
+index e751655a..9b3e756c 100644
+--- a/ImageManager/VideoLengthExtractor.cpp
++++ b/ImageManager/VideoLengthExtractor.cpp
+@@ -72,18 +72,18 @@ void ImageManager::VideoLengthExtractor::extract(const DB::FileName &fileName)
+
+ void ImageManager::VideoLengthExtractor::processEnded()
+ {
+- if ( !m_process->stderr().isEmpty() )
+- qCDebug(ImageManagerLog) << m_process->stderr();
++ if ( !m_process->stdErr().isEmpty() )
++ qCDebug(ImageManagerLog) << m_process->stdErr();
+
+ QString lenStr;
+ if (MainWindow::FeatureDialog::ffmpegBinary().isEmpty())
+ {
+- QStringList list = m_process->stdout().split(QChar::fromLatin1('\n'));
++ QStringList list = m_process->stdOut().split(QChar::fromLatin1('\n'));
+ list = list.filter(STR("ID_LENGTH="));
+ if ( list.count() == 0 ) {
+ qCWarning(ImageManagerLog) << "Unable to find ID_LENGTH in output from MPlayer for file " << m_fileName.absolute() << "\n"
+ << "Output was:\n"
+- << m_process->stdout();
++ << m_process->stdOut();
+ emit unableToDetermineLength();
+ return;
+ }
+@@ -99,12 +99,12 @@ void ImageManager::VideoLengthExtractor::processEnded()
+
+ lenStr = regexp.cap(1);
+ } else {
+- QStringList list = m_process->stdout().split(QChar::fromLatin1('\n'));
++ QStringList list = m_process->stdOut().split(QChar::fromLatin1('\n'));
+ // ffprobe -v 0 just prints one line, except if panicking
+ if ( list.count() < 1 ) {
+ qCWarning(ImageManagerLog) << "Unable to parse video length from ffprobe output!"
+ << "Output was:\n"
+- << m_process->stdout();
++ << m_process->stdOut();
+ emit unableToDetermineLength();
+ return;
+ }
+diff --git a/Utilities/Process.cpp b/Utilities/Process.cpp
+index d31699cc..49be0004 100644
+--- a/Utilities/Process.cpp
++++ b/Utilities/Process.cpp
+@@ -17,14 +17,6 @@
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+-// OS/X defines stdout and stderr as macros, which interfere with our code here:
+-#if defined(stdout)
+-#undef stdout
+-#endif
+-#if defined(stderr)
+-#undef stderr
+-#endif
+-
+ #include <QTextStream>
+
+ #include "Process.h"
+@@ -41,12 +33,12 @@ Utilities::Process::Process(QObject *parent) :
+ connect( this, SIGNAL(readyReadStandardOutput()), this, SLOT(readStandardOutput()));
+ }
+
+-QString Utilities::Process::stdout() const
++QString Utilities::Process::stdOut() const
+ {
+ return m_stdout;
+ }
+
+-QString Utilities::Process::stderr() const
++QString Utilities::Process::stdErr() const
+ {
+ return m_stderr;
+ }
+diff --git a/Utilities/Process.h b/Utilities/Process.h
+index b936e684..6280166d 100644
+--- a/Utilities/Process.h
++++ b/Utilities/Process.h
+@@ -30,8 +30,8 @@ class Process : public QProcess
+ Q_OBJECT
+ public:
+ explicit Process(QObject *parent = nullptr);
+- QString stdout() const;
+- QString stderr() const;
++ QString stdOut() const;
++ QString stdErr() const;
+
+ private slots:
+ void readStandardError();
+--
+2.15.0
+
diff --git a/user/kphotoalbum/APKBUILD b/user/kphotoalbum/APKBUILD
new file mode 100644
index 000000000..685329cd3
--- /dev/null
+++ b/user/kphotoalbum/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kphotoalbum
+pkgver=5.3
+pkgrel=0
+pkgdesc="Versatile photo album software by KDE"
+url="https://www.kphotoalbum.org/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev phonon-dev karchive-dev
+ kcompletion-dev kconfig-dev kcoreaddons-dev kdoctools-dev ki18n-dev
+ kiconthemes-dev kjobwidgets-dev kio-dev ktextwidgets-dev kxmlgui-dev
+ kwidgetsaddons-dev libjpeg-turbo-dev exiv2-dev libkipi-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/kphotoalbum/$pkgver/kphotoalbum-$pkgver.tar.xz
+ 0001-Process-Don-t-use-stdio-identifiers-for-methods.patch"
+builddir="$srcdir/kphotoalbum-$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="8296e9db17d7cc5b34dd29fbe9aeb8f7ab05e286e5d4a692c05f00cd1438dfd32bc48e1c4fd740c5fb932c463ba92fdb0620b9af49d3419ffcfa1354336dd26f kphotoalbum-5.3.tar.xz
+94251fb366bd0250bba3d192a442fc2712941fa2612123849c7abea4c5138d28d12b155c673bbf2713dd43f3abcdc663044783f89206c3c19fad33871879c1c0 0001-Process-Don-t-use-stdio-identifiers-for-methods.patch"
diff --git a/user/kpimtextedit/APKBUILD b/user/kpimtextedit/APKBUILD
index 20474d4c5..1fe51a2d9 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Text editor for Personal Information Managers (PIMs)"
url="https://pim.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f9dc85759395f270ed509b066fb9f8e5fbdd36e202f7788d3021c916782db7f88dc467b78ff962400fc3bd595974211988f0499dbeb5f032eede4052f2164f8e kpimtextedit-17.08.2.tar.xz"
+sha512sums="10c9a7766cf8ed83947f506d7664799601160a2041b8718aa5e124d0c4b400bb1c5da27c2e4ed1f8723697926ff7aa626f14e8bb4bbc47200733e7cf6040dfb4 kpimtextedit-17.12.2.tar.xz"
diff --git a/user/kplotting/APKBUILD b/user/kplotting/APKBUILD
index 8a3a22966..41d8472ae 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for data plotting functions"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d3f40de3df24e7d120889524ad9e30d745d34397bac3ffa8fbb132dfe1a8e7bc3b88dc10e9a3e91dd3b852f8bb5c55f4bdea4d8003b9ab41fbb59890dfdb0077 kplotting-5.41.0.tar.xz"
+sha512sums="98b06b2f5242e03b4e67bcbb28d3abb695e4fc21ac37de47384fb872045fd64016ebfc276b0bd48e797e5369a747c2da81fd03519e1b6747e48205c53e69c7cb kplotting-5.43.0.tar.xz"
diff --git a/user/kpty/APKBUILD b/user/kpty/APKBUILD
index 172c14b70..30a1e5e6e 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for implementing terminal emulation"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7a75989459870cde93205731984696fc17964ac8d38d49f8504d7b1f78c645e0918c56133e30de04a72aac2a11d0bafa6c76e94e4dbe59771a09d99662629e6a kpty-5.41.0.tar.xz"
+sha512sums="8a09b2c5b864e5c70d181eee387ce1890cdd3b2efd1641a982061a102a677699b4a4376ee9a02e16cd3ddd29185e446b257c54131d8259aa9e2303856907a016 kpty-5.43.0.tar.xz"
diff --git a/user/kreversi/APKBUILD b/user/kreversi/APKBUILD
index f0f14d26a..66247200b 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Reversi game"
url="https://games.kde.org/game.php?game=kreversi"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7699b9d8131f25e4db6a377af31e5153910c645817601e27a373c96cad86cffd898f70729ab79f723ce4046a1748b7f1f81bb467b10c1ef93a99c60ea607889d kreversi-17.08.2.tar.xz"
+sha512sums="e16bf1222acd61f00be68a9e6639243dbd2cea7264a909f79a5a1493790c8bdd9f6ab2fb7ce98339f55f25cdc8f60421671f360a9d867114c4878e0c02b0c506 kreversi-17.12.2.tar.xz"
diff --git a/user/krfb/APKBUILD b/user/krfb/APKBUILD
index 15e748b89..7080fbb91 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Share your screen with others for remote watching or assistance"
url="https://www.kde.org/applications/system/krfb/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4aa3f02403c399fd0cca9112c63e90a3c057ed48a8265af91e38f88f8cb8e58a7d78869e8a25c73d500c9700ba51db3ba07edc6054045fa04764c4de3b9db9b0 krfb-17.08.2.tar.xz"
+sha512sums="49d5afb3203777908310fb2ea490125827be7f921789c20ebb9cdc492daae34f793b3c0217e8b109aa542ae7c76e0da237d6cdaea1ca928f575d4a5802353f8e krfb-17.12.2.tar.xz"
diff --git a/user/krita/APKBUILD b/user/krita/APKBUILD
new file mode 100644
index 000000000..b25d10d38
--- /dev/null
+++ b/user/krita/APKBUILD
@@ -0,0 +1,57 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=krita
+pkgver=3.3.3
+pkgrel=0
+pkgdesc="Digital painting program by KDE"
+url="https://krita.org/"
+arch="all"
+options="!check" # Tests require X11.
+license="GPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kconfig-dev
+ kwidgetsaddons-dev kcompletion-dev kcoreaddons-dev kguiaddons-dev
+ ki18n-dev kitemmodels-dev kitemviews-dev kwindowsystem-dev kio-dev
+ qt5-qtsvg-dev qt5-qtmultimedia-dev kcrash-dev libice-dev libx11-dev
+ libxcb-dev zlib-dev libpng-dev boost-dev tiff-dev libjpeg-turbo-dev
+ fftw-dev eigen-dev exiv2-dev lcms2-dev openexr-dev poppler-qt5-dev
+ gsl-dev libxi-dev"
+install=""
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/krita/$pkgver/krita-$pkgver.tar.gz"
+builddir="$srcdir/krita-$pkgver/build"
+
+prepare() {
+ mkdir "$builddir"
+ # we CANNOT patch or call default_prepare because of builddir
+}
+
+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" \
+ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ ${CMAKE_CROSSOPTS} \
+ ..
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b6dc30809e0d6c19fee4bbb240aa53c65e88361ebe273c73c2f24f43904c3cd51719dadb9c11fb7f691f17d75732374295ce904810d8893b7f95b45f859901e0 krita-3.3.3.tar.gz"
diff --git a/user/kronometer/APKBUILD b/user/kronometer/APKBUILD
index 35a333b5a..d9d3b790f 100644
--- a/user/kronometer/APKBUILD
+++ b/user/kronometer/APKBUILD
@@ -6,6 +6,7 @@ pkgrel=0
pkgdesc="Easy-to-use stopwatch application"
url="https://userbase.kde.org/Kronometer"
arch="all"
+options="!check" # All tests require X11
license="GPL-2.0"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
diff --git a/user/kruler/APKBUILD b/user/kruler/APKBUILD
new file mode 100644
index 000000000..91599aa3d
--- /dev/null
+++ b/user/kruler/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kruler
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Screen ruler"
+url="https://www.kde.org/applications/graphics/kruler/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev ki18n-dev
+ knotifications-dev kwindowsystem-dev kxmlgui-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kruler-$pkgver.tar.xz"
+builddir="$srcdir/kruler-$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="7d57153d64af46e7a957d3c35089eea8382af4da5ea3e1365a86003f3199732c9ac5d38a3f400817f1b51e8db21b7ceed498ead9a567fec30f9d8a038e5e62ee kruler-17.12.2.tar.xz"
diff --git a/user/krunner/APKBUILD b/user/krunner/APKBUILD
index 0670db4c0..a9158dd6f 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Parallel query system"
url="https://api.kde.org/frameworks/krunner/html/index.html"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="53a24d6e16d70d3682a0311adfce610b78656bc44785f41f621acded778b6885f269e376364ee8ffa1f4d26b2c7d937a41f38367350013871771ede9ab483249 krunner-5.41.0.tar.xz"
+sha512sums="c6ec92e0dbb8eb2d583af1d763cea6df1231851367148a94d8eae6aa88c130798cb8f3f2fb65946c55a51253c91e25fee539d7720a1f7125f78d2d5aabf4b05c krunner-5.43.0.tar.xz"
diff --git a/user/kscreenlocker/APKBUILD b/user/kscreenlocker/APKBUILD
index da64afab3..98ac6e058 100644
--- a/user/kscreenlocker/APKBUILD
+++ b/user/kscreenlocker/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kscreenlocker
-pkgver=5.8.7
-pkgrel=3
+pkgver=5.12.2
+pkgrel=0
pkgdesc="Secure X11 screen locker"
url="https://www.kde.org/"
arch="all"
@@ -18,7 +18,6 @@ makedepends="$depends_dev cmake extra-cmake-modules python3 gettext-dev
install=""
subpackages="$pkgname-dev $pkgname-lang"
source="http://download.kde.org/stable/plasma/$pkgver/kscreenlocker-$pkgver.tar.xz
- kscreenlocker-5.8.5-stop-using-getpass.patch
kde.pam
kde-np.pam"
builddir="$srcdir/kscreenlocker-$pkgver"
@@ -51,7 +50,6 @@ package() {
install -m644 "$srcdir"/kde-np.pam "$pkgdir"/etc/pam.d/kde-np
}
-sha512sums="cee66e85efaafd5629c9e2b1eea1522cff960d7b9922be7b6d5f767c231fcb762cf80585d5528fdb5fc3684881bf2fa4a59da3136a1d23341ceb218da3f69e11 kscreenlocker-5.8.7.tar.xz
-44bbf365555668f7ef2f354a06d08b4b83c556f6e78ead028acd727363c287cfecc2e3eb4d0bb137feb2939da0fa21db694af6b10f8a3878d7071ad4e3b8d4e8 kscreenlocker-5.8.5-stop-using-getpass.patch
+sha512sums="cb293d69bc56fc3b2cde20b4088277a8d578896429dae2f66a8496ebb8750c23a32d56dcecad047d5a9a9180fa1c3a1a42ad12943fc937a009dcd8be4e7e08c3 kscreenlocker-5.12.2.tar.xz
56e87d02d75c4a8cc4ed183faed416fb4972e7f223b8759959c0f5da32e11e657907a1df279d62a44a6a174f5aca8b2ac66a5f3325c5deb92011bcf71eed74c3 kde.pam
565265485dd7466b77966d75a56766216b8bcc187c95a997e531e9481cf50ddbe576071eb0e334421202bcab19aa6de6b93e042447ca4797a24bf97e1d053ffd kde-np.pam"
diff --git a/user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch b/user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch
deleted file mode 100644
index f10789f88..000000000
--- a/user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- kscreenlocker-5.8.5/kcheckpass/kcheckpass.c.old 2016-12-27 11:25:36.000000000 +0000
-+++ kscreenlocker-5.8.5/kcheckpass/kcheckpass.c 2017-01-31 04:32:44.858227055 +0000
-@@ -56,6 +56,7 @@
- #include <stdlib.h>
- #include <errno.h>
- #include <time.h>
-+#include <termios.h>
-
- #include <config-kscreenlocker.h>
- #if HAVE_SYS_PRCTL_H
-@@ -75,9 +76,41 @@
- static int havetty, sfd = -1, nullpass;
-
- static char *
-+better_getpass (void)
-+{
-+ char *password = NULL, *nl;
-+ size_t buf_len = 0;
-+ ssize_t pass_len;
-+ struct termios ti;
-+
-+ tcgetattr(STDIN_FILENO, &ti);
-+ ti.c_lflag &= ~ECHO;
-+ tcsetattr(STDIN_FILENO, TCSANOW, &ti);
-+
-+ pass_len = getdelim(&password, &buf_len, '\n', stdin);
-+
-+ if (pass_len < 0) {
-+ free(password);
-+ return NULL;
-+ }
-+
-+ ti.c_lflag |= ECHO;
-+ tcsetattr(STDIN_FILENO, TCSANOW, &ti);
-+
-+ /* Do not include the \n at the end */
-+ nl = strchr(password, '\n');
-+ if (nl) {
-+ *nl = '\0';
-+ }
-+
-+ return password;
-+}
-+
-+
-+static char *
- conv_legacy (ConvRequest what, const char *prompt)
- {
-- char *p, *p2;
-+ char *p2;
- int len;
- char buf[1024];
-
-@@ -99,13 +132,10 @@
- return strdup(buf);
- case ConvGetHidden:
- if (havetty) {
--#ifdef HAVE_GETPASSPHRASE
-- p = getpassphrase(prompt ? prompt : "Password: ");
--#else
-- p = getpass(prompt ? prompt : "Password: ");
--#endif
-- p2 = strdup(p);
-- memset(p, 0, strlen(p));
-+ fputs(prompt ? prompt : "Password: ", stdout);
-+ fflush(stdout);
-+ p2 = better_getpass();
-+ printf("\n");
- return p2;
- } else {
- if (prompt)
diff --git a/user/kservice/APKBUILD b/user/kservice/APKBUILD
index 69b827ef8..84b9b21f7 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for implementing plugins and services"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4dee46935a3fd136b84edcdd4590531370e5d9c1b6fee31992811ba5f6c601a2da4d8d3bded9ca080c6263e00be80288ec22e814003f436a2439f8238598bb60 kservice-5.41.0.tar.xz"
+sha512sums="bb912b7bfdd1473bd1b324dfd4ce93c7b9de69f2036aa7fc849735a797e76617b2d736a8e464d38e4b09fd3f9191336e323325c365c99e987be3df60268651c0 kservice-5.43.0.tar.xz"
diff --git a/user/kshisen/APKBUILD b/user/kshisen/APKBUILD
index aeabed87c..b1c437df4 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Mixture of Solitaire and Mah Jongg"
url="https://games.kde.org/game.php?game=kshisen"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="20e55211ae7c9be4d1240863e73a61e31d71e6b1f48cfe4fa4475465a517b3a94404990c1298526257b96c383e8574fb2bbc5898e0e099d81ef20ddbabacfb2d kshisen-17.08.2.tar.xz"
+sha512sums="9228fedd9de5eafbb1eefdf76b12554a2b1cc190d3bab497357d70fde95b822d4f9034f08361fbaefff419316b185840ffa601fe9931bb0df6c88307b2991a1f kshisen-17.12.2.tar.xz"
diff --git a/user/ksnakeduel/APKBUILD b/user/ksnakeduel/APKBUILD
index c948298b8..fb197948b 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Tron-like game"
url="https://www.kde.org/applications/games/ksnakeduel/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="cfae99fe1f89f8e106eed407d7e2087d492c9c3a4ee289306bbc6b8e6216085183d046be2532019c0635a08de70d7b38d5f81f7e57e5d887785a65c2518aabd5 ksnakeduel-17.08.2.tar.xz"
+sha512sums="a7aad7d1703cfb095738302490ef2f638520ba0a167ba5c67c77fa05388052b78938b6f1885350a72bdced1352f369eda4ff4635b7615e0e0db7298a24678fc9 ksnakeduel-17.12.2.tar.xz"
diff --git a/user/ksquares/APKBUILD b/user/ksquares/APKBUILD
index 287a104b4..e0f213c23 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Fun and exciting game of Dots and Boxes"
url="https://games.kde.org/game.php?game=ksquares"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d56d0885845cf76be53d40aa0e93830775bf869741b07803edbf6157beb77ca72453f4bf515475b7bc69f289921f1050dbd0e333c804ca312b62d53fa75f2a5a ksquares-17.08.2.tar.xz"
+sha512sums="106e8f8b1e05ae2ab3b12d47a671a1d771bf9ba33a3f6dfc88555f37f3d6cec0aa3a5ae14306354821aaa1972d704d82cace20a867bc4b74987b96879d8dc018 ksquares-17.12.2.tar.xz"
diff --git a/user/ksudoku/APKBUILD b/user/ksudoku/APKBUILD
index 751079d6b..6da1abe8c 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Desktop Sudoku (symbol placement / logic) game"
url="https://games.kde.org/game.php?game=ksudoku"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8ebf078fafc238481d5850248d2af87640d33fadf628f9c17b7ba6ed9f59e4a5c4122361acfefc39eeebf9144255deb78ffbb825409bb86071f676e78a465722 ksudoku-17.08.2.tar.xz"
+sha512sums="4026c85786abddd92d24fa8716a27974a7fafa7eedeab266ebc8f5c938f2425e5d15e940329e2163f839cf02f5e68ffea94cdefd9d2ced43c708d04f9c9aa939 ksudoku-17.12.2.tar.xz"
diff --git a/user/ksysguard/APKBUILD b/user/ksysguard/APKBUILD
index 70fa61852..a5f522cee 100644
--- a/user/ksysguard/APKBUILD
+++ b/user/ksysguard/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksysguard
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="KDE system monitor utility"
url="https://www.kde.org/"
@@ -14,9 +14,7 @@ makedepends="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kdbusaddons-dev kio-dev
cmake extra-cmake-modules kdoctools-dev"
install=""
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/Attic/plasma/$pkgver/ksysguard-$pkgver.tar.xz
- ksysguard-5.5.5-netstat-use-a-real-type.patch
- ksysguard-5.6.5-processlist-gnu_source.patch
+source="https://download.kde.org/stable/plasma/$pkgver/ksysguard-$pkgver.tar.xz
ksysguard-5.6.5-rindex-header.patch
"
builddir="$srcdir/ksysguard-$pkgver"
@@ -47,7 +45,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="320e02cf94768f9d63e12dfb46ab0728bf64e60636242b9a6f57517b3ca329bfa2d99f4999e2b071a6cd2849d14e807d9a2070cd9d0f51dbdf32fccfec423bb5 ksysguard-5.8.7.tar.xz
-078c9d3e13ee0960a8cc68e3ee6ef4f9fc78640fae71d66dd5579f9d031895aec7cf1c2dbc4b03f84edfb9456163dcf6124c6da936f90eef3e664c4267660ab9 ksysguard-5.5.5-netstat-use-a-real-type.patch
-818d2d603d7113b163cabbf27f0082bd8b482a8e66a1b8f569f353c84f3d031c742708b2f376f962f1ed360594fb6c6506195d9071d070b5c0ac4816d5e0cad4 ksysguard-5.6.5-processlist-gnu_source.patch
+sha512sums="19c4f18845b6e8103630469986f2316e50883ef68014a3221a6772d15a359c64b93dcd4874d4d927fcf8acdf884bc801f2a01f27cb95a176cec1605b50b5b670 ksysguard-5.12.2.tar.xz
13a26451c459cff1d3b00af27c953d10c55e7e8f43ef7a6f0f54dd05dcb612546545c0170089e9499bb041f004cdacf19cb112d247a8ccf8fd4e77fea0d1c8bc ksysguard-5.6.5-rindex-header.patch"
diff --git a/user/ksysguard/ksysguard-5.5.5-netstat-use-a-real-type.patch b/user/ksysguard/ksysguard-5.5.5-netstat-use-a-real-type.patch
deleted file mode 100644
index d3543f3ce..000000000
--- a/user/ksysguard/ksysguard-5.5.5-netstat-use-a-real-type.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- ksysguard-5.5.5/ksysguardd/Linux/netstat.old 2016-03-01 14:35:05.000000000 +0100
-+++ ksysguard-5.5.5/ksysguardd/Linux/netstat.c 2016-07-22 03:46:19.016064987 +0100
-@@ -264,10 +264,10 @@
- {
- FILE *netstat;
- char buffer[1024];
-- uint local_addr, local_port;
-- uint remote_addr, remote_port;
-+ unsigned int local_addr, local_port;
-+ unsigned int remote_addr, remote_port;
- int uid;
-- uint state;
-+ unsigned int state;
- SocketInfo *socket_info;
-
- if (strstr(cmd, "tcp")) {
diff --git a/user/ksysguard/ksysguard-5.6.5-processlist-gnu_source.patch b/user/ksysguard/ksysguard-5.6.5-processlist-gnu_source.patch
deleted file mode 100644
index e68fc7b2b..000000000
--- a/user/ksysguard/ksysguard-5.6.5-processlist-gnu_source.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- ksysguard-5.6.5/ksysguardd/Linux/ProcessList.c.old 2016-06-14 11:09:02.000000000 +0100
-+++ ksysguard-5.6.5/ksysguardd/Linux/ProcessList.c 2016-08-07 03:14:25.158991313 +0100
-@@ -28,7 +28,9 @@
- #include <sys/time.h>
- #include <sys/resource.h>
- #include <time.h>
-+#define _GNU_SOURCE
- #include <unistd.h>
-+#undef _GNU_SOURCE
- #include <sys/ptrace.h>
- #include <asm/unistd.h>
-
diff --git a/user/ksystemlog/APKBUILD b/user/ksystemlog/APKBUILD
index 95dd393cd..3c62489ad 100644
--- a/user/ksystemlog/APKBUILD
+++ b/user/ksystemlog/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksystemlog
-pkgver=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Friendly, powerful system log viewer tool"
url="https://www.kde.org/applications/system/ksystemlog/"
arch="all"
+options="!check" # Tests require X11
license="GPL-2.0"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kxmlgui-dev kconfig-dev
@@ -42,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="778f051f15464b4c52206e62914883f4ccc73d2daf3dc1b47f29c773618e23b4e52c2bd99a768250e20c4df278dcfa3c7ef29b1dae9aedd584ade2295d9c3c94 ksystemlog-17.08.2.tar.xz"
+sha512sums="d4f6bfe35cde11e2675e32c2b31468c3c848ae065eccaf2b4ded9adb7b03d558d2a555aeb77643a84028865b09027820d0eb7689eede8cc5dfb855c51855ef20 ksystemlog-17.12.2.tar.xz"
diff --git a/user/kteatime/APKBUILD b/user/kteatime/APKBUILD
index fed7acaa2..835abd38a 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Steep responsibly"
url="https://www.kde.org/applications/games/kteatime/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="111efea4a8b9f00887aca1fb91c120388bceb786d734be3295f18ba49aaa5d96d2a77579f19db12594f9d5d37c30fa0d86e82834e4c74cdef693e3d61ab886e0 kteatime-17.08.2.tar.xz"
+sha512sums="01de99319c555eba5c394c40532889183de37f962665a8e73ebe36d078185d757ced020e289c769b6062934d1e5a339def690711acf7d476e1f8f981d7048a5d kteatime-17.12.2.tar.xz"
diff --git a/user/ktexteditor/APKBUILD b/user/ktexteditor/APKBUILD
index 837d2795d..402ff51ce 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.41.0
+pkgver=5.43.0
pkgrel=1
pkgdesc="Reusable, programmable text editor widget"
url="https://www.kde.org/"
@@ -46,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a8cc6ce4a85669d9fe1062e85a1d170498db6de0cd7256143caf60cb454c31dac7920cea6d12ff6dfb109c579a86c3fb4d33add1b104724cba00a4bc00a1fa7b ktexteditor-5.41.0.tar.xz"
+sha512sums="fc2b3b69224e62d1bf240410fa5c3dab04e020f210230474e5e924c7125f626cd2dd30dee449948cb9197adc8f0d6e1886ed85e03312a51d116d86fc13fbf08d ktexteditor-5.43.0.tar.xz"
diff --git a/user/ktextwidgets/APKBUILD b/user/ktextwidgets/APKBUILD
index b6baa1d9e..f98817a73 100644
--- a/user/ktextwidgets/APKBUILD
+++ b/user/ktextwidgets/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktextwidgets
-pkgver=5.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework providing widgets for text manipulation"
url="https://www.kde.org/"
arch="all"
+options="!check" # All tests require X11.
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev kcompletion-dev kconfigwidgets-dev kiconthemes-dev
@@ -44,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a0ec6618418bbc1128cb3e12cdbfe85917dafcb265463a69355576f873775b69e6552d1d7db31d5ed3436c8dc72fde1896710b3f47b8ea0ce0612ec15dca4079 ktextwidgets-5.41.0.tar.xz"
+sha512sums="650272ba85a1d0177296fd278fa4183ecc6c513b00838745b5e1fefe015b621f1edfad25094ede3de8cf81dec4f66653b3c25ed2bb5a55e4a2ee54b2ef35da6a ktextwidgets-5.43.0.tar.xz"
diff --git a/user/ktimer/APKBUILD b/user/ktimer/APKBUILD
index 7dc19adee..833cca384 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Tool to execute programs after some time"
url="https://www.kde.org/applications/utilities/ktimer/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="931d317be5fd3cbb0d72da2ab63a749abd605d24015c35e50c0783017add3f3b1bc3b1ea5181eb15abd1847d1cf8620e0e8a044a9cd0914bbbcfc6c6adbc34d9 ktimer-17.08.2.tar.xz"
+sha512sums="cc0d70be3f68b17705a1aead5a32510ea360283a5f0fc63a39341ed69dc233e4eff59f0a75688d9c845fb1feefa13278dbfe79e7aa96a214f2f15f642f15c27d ktimer-17.12.2.tar.xz"
diff --git a/user/ktouch/APKBUILD b/user/ktouch/APKBUILD
new file mode 100644
index 000000000..2f04f8ebb
--- /dev/null
+++ b/user/ktouch/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ktouch
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Touch typing tutor"
+url="https://www.kde.org/applications/education/ktouch/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtxmlpatterns-dev
+ kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev
+ kdeclarative-dev kdoctools-dev ki18n-dev kitemviews-dev kcmutils-dev
+ ktextwidgets-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev
+ libx11-dev libxcb-dev libxkbfile-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/ktouch-$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 \
+ -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="449bc268254f21f3376a9b75a0aea97af5bf9d3617f7b7484361a615f3635cd60c74a37bfddd8674f20667325574adecaf42f362a3bbd6e5e66a3c6f5764f41a ktouch-17.12.2.tar.xz"
diff --git a/user/ktuberling/APKBUILD b/user/ktuberling/APKBUILD
index ee6131ab1..834b37bc8 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Simple constructor game"
url="https://games.kde.org/game.php?game=ktuberling"
@@ -11,7 +11,7 @@ depends=""
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 kdelibs4support-dev kwidgetsaddons-dev kxmlgui-dev
- libkdegames-dev"
+ libkdegames-dev qt5-qtmultimedia-dev"
install=""
subpackages="$pkgname-doc $pkgname-lang"
source="http://download.kde.org/stable/applications/$pkgver/src/ktuberling-$pkgver.tar.xz"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="18d5073217893610daaf0308407e9d5cd109c4487cfa4c170d83c12ba35feea44b3d7fcd1327da81fbd8ac0e9b8a1c560b7303401a8ce9252118c06327231f08 ktuberling-17.08.2.tar.xz"
+sha512sums="f36e0b4ccc1fd849ef38d1b0a9f935c041a426356afc84c3799210f0b0359c25a4ba8c03eec7af5d3e3326aba5be4eebea4718a97bae312d48e2b6c00a0db195 ktuberling-17.12.2.tar.xz"
diff --git a/user/kturtle/APKBUILD b/user/kturtle/APKBUILD
new file mode 100644
index 000000000..10bbaddc3
--- /dev/null
+++ b/user/kturtle/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kturtle
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Educational programming environment"
+url="https://www.kde.org/applications/education/kturtle/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kcrash-dev
+ kio-dev knewstuff-dev kdoctools-dev ktextwidgets-dev ki18n-dev
+ kcoreaddons-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kturtle-$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 \
+ -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="20050ae4349a518940c9fb4e2646bc671a8c63979c19b2176b1f15e7b476e2d3bb2ecdcdb7e1ee6eea95e1b1e847f9e87ec7a87f3457edac110e0466549b6d5e kturtle-17.12.2.tar.xz"
diff --git a/user/kubrick/APKBUILD b/user/kubrick/APKBUILD
index 6f2afdf4c..7beaf5d85 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="3D cube puzzle solving game"
url="https://www.kde.org/applications/games/kubrick/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3deda90e9298a7b78ff4b14ea923ce04b281ff5390f22a4c68a990398c5e0f8824144eb2dc2f431eadaf88becf3a53e33f90958aeaf150bc8d4125daf28b55ac kubrick-17.08.2.tar.xz"
+sha512sums="4b7d74db13102479c43441540291d63523265daec4cfd763781e09ebc96bbeca5f263be8593bfdbf3477d4396f5d4f0edc11b09ab451630d6999f5b28c753792 kubrick-17.12.2.tar.xz"
diff --git a/user/kunitconversion/APKBUILD b/user/kunitconversion/APKBUILD
index 9b71bdcfe..399a1a18a 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Convert between metric and imperial"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b21a5ee06a5b9d00a0ef11b3af36a7ab4a8df5adc183cbd5d1e811ad36e9bd5e3f4dd21af3e7d9c281811f617e3e8a863d9bfa1c3e94cb1e23f6ce2ad917f937 kunitconversion-5.41.0.tar.xz"
+sha512sums="bcde5bd5208fc5762c90e6b3c152bf4abb264d776dc3256ec246b1d0b9079d10ffcb1679a87ed4c0e39a1caaf092e5b4c3a1a8790adc1faeee148c8707e4aafc kunitconversion-5.43.0.tar.xz"
diff --git a/user/kwallet/APKBUILD b/user/kwallet/APKBUILD
index 9ff904ab5..e5c057caf 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.41.0
+pkgver=5.43.0
pkgrel=1
pkgdesc="Secure storage system for passwords built atop Qt"
url="https://www.kde.org/"
@@ -44,5 +44,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="572b1d145f7092ed8ca581a00ced425f6a6fa4d153853ec591bbe6f91c5851c8476356b907ea1808e93f881a9e24797e894e7621f5627eadaf086a7f92e89e74 kwallet-5.41.0.tar.xz
+sha512sums="38d129c45b1c2282c1e09a01fc9316b30b0d3f3c53f1b56dba295f732a2aaf5dab7759ca40b46ec80985d773a59a4ecddfc6edbe7fca7beb59c3392dab44e13b kwallet-5.43.0.tar.xz
edca12963a5db9db05b3b4d581c1b970569f3b96dc672422e561c189c9024b69710732281f054514ce3d596688a5b0ba512766f4fd768eea8e00a18dcfd59179 kwallet-5.22.0-blowfish-endianness.patch"
diff --git a/user/kwalletmanager/APKBUILD b/user/kwalletmanager/APKBUILD
index a6c568e66..8cb1eb502 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Manage KDE wallets"
url="https://www.kde.org/applications/system/kwalletmanager/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a8db16932932bc0abbdc2bdb17e48c2e6f7407e2f1236c92ae1e700db9e108a51debc3c40ccdc86ba94c523226dc71682c36aa242ddbc9c4c6326c61fec2f5b0 kwalletmanager-17.08.2.tar.xz"
+sha512sums="406becb541024715d781df3c1b6cc4d022ed2714683c1ba5f5f6374410332f5f2e04218ca3d13b2adf747b89ed524cdd8ec1697117a4a6943f1649a295611595 kwalletmanager-17.12.2.tar.xz"
diff --git a/user/kwave/APKBUILD b/user/kwave/APKBUILD
new file mode 100644
index 000000000..30fdf344d
--- /dev/null
+++ b/user/kwave/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kwave
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Sound editor built for KDE"
+url="http://kwave.sourceforge.net/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtmultimedia-dev
+ karchive-dev kcompletion-dev kconfig-dev kconfigwidgets-dev kcrash-dev
+ kcoreaddons-dev kdbusaddons-dev kdoctools-dev ki18n-dev kiconthemes-dev
+ kio-dev kservice-dev ktextwidgets-dev kwidgetsaddons-dev kxmlgui-dev
+ audiofile-dev libsamplerate-dev alsa-lib-dev pulseaudio-dev flac-dev
+ id3lib-dev libmad-dev opus-dev libvorbis-dev fftw-dev librsvg-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kwave-$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 \
+ -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="84d6f72cb9e71a347d7e7e52660c317976634faeb9dd022a1eb3145301574ce61ac6f263f81de7913f9b443e8b5e0c80d0b22405f9f5a6218b1b67db2abc1692 kwave-17.12.2.tar.xz"
diff --git a/user/kwayland/APKBUILD b/user/kwayland/APKBUILD
index c12cab21e..12dbf0101 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Qt wrapper libraries for Wayland"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b31a769c1b265ae786eec42ab0a9e1aa29820b2dffed08fb9d5b1fbe224c4a4f2deab461823da88f44ffb0a4f35fbb0b77af2d235d45d3c90f9707f728ff1d37 kwayland-5.41.0.tar.xz"
+sha512sums="02204faa2f125f9f902315cf2e7377a9ffdb73b1b66624510d1b77f32b9907c71d7e8ca7f79c8c10a2b9ab8e8eae13f8166ae3e33a34b2789c8f2e79aeb0f5a2 kwayland-5.43.0.tar.xz"
diff --git a/user/kwidgetsaddons/APKBUILD b/user/kwidgetsaddons/APKBUILD
index c2ff5d4f7..73ee388cf 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework containing ready-made widgets for common tasks"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4a78b95d4fc2574f051c314b3313e36090c233cf997be4d7ce7c528006d0196091cc1c6384c0fa2cef83f07df62a7a0101369d702fda0eb7f6fb1773e6747477 kwidgetsaddons-5.41.0.tar.xz"
+sha512sums="ae7664ab700cdb9aa35334005ae58d49db659cea4112fa81a09a37538809910841494bf97f3f982f99e27a376031645c5d0349e4cc77ab2c0fa6ea9484a08140 kwidgetsaddons-5.43.0.tar.xz"
diff --git a/user/kwin/APKBUILD b/user/kwin/APKBUILD
index d684e442f..41ec2ecce 100644
--- a/user/kwin/APKBUILD
+++ b/user/kwin/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwin
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="Modern, stylish window manager (requires OpenGL)"
url="https://www.kde.org/"
@@ -18,13 +18,12 @@ depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtscript-dev kcrash-dev
kdecoration-dev kscreenlocker-dev wayland-dev mesa-dev libepoxy-dev
eudev-dev libdrm-dev libx11-dev libxcb-dev xcb-util-cursor-dev
xcb-util-image-dev xcb-util-wm-dev libxkbcommon-dev libinput-dev
- freetype-dev fontconfig-dev qt5-qtmultimedia-dev breeze-dev"
+ freetype-dev fontconfig-dev qt5-qtmultimedia-dev breeze-dev
+ qt5-qtsensors-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev python3"
install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="http://download.kde.org/stable/plasma/$pkgver/kwin-$pkgver.tar.xz
- kwin-5.8-stop-depending-on-qt5-internals.patch
- kwin-5.8-respect-uint.patch"
+source="http://download.kde.org/stable/plasma/$pkgver/kwin-$pkgver.tar.xz"
builddir="$srcdir/kwin-$pkgver"
build() {
@@ -53,6 +52,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f1f3b01f85378e663385887add8dd5b2f40076cfc57f7cf638e83e2424fedb576b4b431b14151422ea43c535677131e61b8d9e7fe60e5a5f4ea06520c895bd1e kwin-5.8.7.tar.xz
-7186dd317204612ba26f11315238f527949424d08f32dc0dab8c1391d642529433cfd7091dc2a057fe849976dee70eed7aab3c8be55b20b8c0655da57976b48e kwin-5.8-stop-depending-on-qt5-internals.patch
-aaefa9951ec1475adf00784b202d0ca9f92a60634a869387432411e8b7928d9f10b46968998a4ada47228834e8c7f6c9bf1c8dd988673b22619e8e1295e086c7 kwin-5.8-respect-uint.patch"
+sha512sums="8df904f86c50cc9a578122b88a5c768652c09564f6ae048ae6989a55c0e3e886da2f3080b9601885c27ffa3313a7fcc3389c63e61a7125ceb650a8aaa2af12c4 kwin-5.12.2.tar.xz"
diff --git a/user/kwin/kwin-5.8-respect-uint.patch b/user/kwin/kwin-5.8-respect-uint.patch
deleted file mode 100644
index 839d84d2e..000000000
--- a/user/kwin/kwin-5.8-respect-uint.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 404f2675f8ca5496a5e528825078b1ce27669cd7 Mon Sep 17 00:00:00 2001
-From: Marco Martin <notmart@gmail.com>
-Date: Mon, 20 Mar 2017 17:01:39 +0100
-Subject: fix compilation on old gcc
-
-same as https://phabricator.kde.org/D5083,
-gcc 4.8.5 (opensuse leap) fails building modeltest with
-CMakeFiles/testHistoryModel.dir/modeltest.cpp.o: In function `ModelTest::data()':
-modeltest.cpp:(.text+0x5a57): undefined reference to `bool QTest::qCompare<int, unsigned int>(int const&, unsigned int const&, char const*, char const*, char const*, int)'
----
- kcmkwin/kwincompositing/test/modeltest.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kcmkwin/kwincompositing/test/modeltest.cpp b/kcmkwin/kwincompositing/test/modeltest.cpp
-index d356b26..c077d9b 100644
---- a/kcmkwin/kwincompositing/test/modeltest.cpp
-+++ b/kcmkwin/kwincompositing/test/modeltest.cpp
-@@ -453,7 +453,7 @@ void ModelTest::data()
- // Check that the alignment is one we know about
- QVariant textAlignmentVariant = model->data ( model->index ( 0, 0 ), Qt::TextAlignmentRole );
- if ( textAlignmentVariant.isValid() ) {
-- int alignment = textAlignmentVariant.toInt();
-+ unsigned int alignment = textAlignmentVariant.toUInt();
- QCOMPARE( alignment, ( alignment & ( Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask ) ) );
- }
-
---
-cgit v0.11.2
-
diff --git a/user/kwin/kwin-5.8-stop-depending-on-qt5-internals.patch b/user/kwin/kwin-5.8-stop-depending-on-qt5-internals.patch
deleted file mode 100644
index 7b77e9c57..000000000
--- a/user/kwin/kwin-5.8-stop-depending-on-qt5-internals.patch
+++ /dev/null
@@ -1,479 +0,0 @@
-From 052fa2e4ee329810f62c29e546254fb45bf8a375 Mon Sep 17 00:00:00 2001
-From: Takahiro Hashimoto <kenya888@gmail.com>
-Date: Thu, 27 Oct 2016 09:43:21 +0900
-Subject: [PATCH] [plugins/qpa] support use of modularized qtplatformsupport
- from Qt 5.8
-
-REVIEW: 129268
----
- CMakeLists.txt | 9 +-
- cmake/modules/FindQt5EventDispatcherSupport.cmake | 122 ++++++++++++++++++++++
- cmake/modules/FindQt5FontDatabaseSupport.cmake | 122 ++++++++++++++++++++++
- cmake/modules/FindQt5ThemeSupport.cmake | 122 ++++++++++++++++++++++
- plugins/qpa/CMakeLists.txt | 15 ++-
- plugins/qpa/integration.cpp | 7 ++
- 6 files changed, 394 insertions(+), 3 deletions(-)
- create mode 100644 cmake/modules/FindQt5EventDispatcherSupport.cmake
- create mode 100644 cmake/modules/FindQt5FontDatabaseSupport.cmake
- create mode 100644 cmake/modules/FindQt5ThemeSupport.cmake
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3d2883fea..bf90ab0f1 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -241,7 +241,14 @@ set_package_properties(X11_XCB PROPERTIES
- TYPE OPTIONAL)
-
- # dependencies for QPA plugin
--find_package(Qt5PlatformSupport REQUIRED)
-+if(Qt5Core_VERSION VERSION_LESS "5.8.0")
-+ find_package(Qt5PlatformSupport REQUIRED)
-+else()
-+ find_package(Qt5FontDatabaseSupport REQUIRED)
-+ find_package(Qt5ThemeSupport REQUIRED)
-+ find_package(Qt5EventDispatcherSupport REQUIRED)
-+endif()
-+
- find_package(Freetype REQUIRED)
- set_package_properties(Freetype PROPERTIES DESCRIPTION "A font rendering engine"
- URL "http://www.freetype.org"
-diff --git a/cmake/modules/FindQt5EventDispatcherSupport.cmake b/cmake/modules/FindQt5EventDispatcherSupport.cmake
-new file mode 100644
-index 000000000..948efe0d3
---- /dev/null
-+++ b/cmake/modules/FindQt5EventDispatcherSupport.cmake
-@@ -0,0 +1,122 @@
-+#.rst:
-+# FindQt5EventDispatcherSupport
-+# -------
-+#
-+# Try to find Qt5EventDispatcherSupport on a Unix system.
-+#
-+# This will define the following variables:
-+#
-+# ``Qt5EventDispatcherSupport_FOUND``
-+# True if (the requested version of) Qt5EventDispatcherSupport is available
-+# ``Qt5EventDispatcherSupport_VERSION``
-+# The version of Qt5EventDispatcherSupport
-+# ``Qt5EventDispatcherSupport_LIBRARIES``
-+# This can be passed to target_link_libraries() instead of the ``Qt5EventDispatcherSupport::Qt5EventDispatcherSupport``
-+# target
-+# ``Qt5EventDispatcherSupport_INCLUDE_DIRS``
-+# This should be passed to target_include_directories() if the target is not
-+# used for linking
-+# ``Qt5EventDispatcherSupport_DEFINITIONS``
-+# This should be passed to target_compile_options() if the target is not
-+# used for linking
-+#
-+# If ``Qt5EventDispatcherSupport_FOUND`` is TRUE, it will also define the following imported target:
-+#
-+# ``Qt5EventDispatcherSupport::Qt5EventDispatcherSupport``
-+# The Qt5EventDispatcherSupport library
-+#
-+# In general we recommend using the imported target, as it is easier to use.
-+# Bear in mind, however, that if the target is in the link interface of an
-+# exported library, it must be made available by the package config file.
-+
-+#=============================================================================
-+# Copyright 2014 Alex Merry <alex.merry@kde.org>
-+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
-+# Copyright 2016 Takahiro Hashimoto <kenya888@gmail.com>
-+#
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions
-+# are met:
-+#
-+# 1. Redistributions of source code must retain the copyright
-+# notice, this list of conditions and the following disclaimer.
-+# 2. Redistributions in binary form must reproduce the copyright
-+# notice, this list of conditions and the following disclaimer in the
-+# documentation and/or other materials provided with the distribution.
-+# 3. The name of the author may not be used to endorse or promote products
-+# derived from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+#=============================================================================
-+
-+if(CMAKE_VERSION VERSION_LESS 2.8.12)
-+ message(FATAL_ERROR "CMake 2.8.12 is required by FindQt5EventDispatcherSupport.cmake")
-+endif()
-+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
-+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindQt5EventDispatcherSupport.cmake")
-+endif()
-+
-+# Use pkg-config to get the directories and then use these values
-+# in the FIND_PATH() and FIND_LIBRARY() calls
-+find_package(PkgConfig)
-+pkg_check_modules(PKG_Qt5EventDispatcherSupport QUIET Qt5Gui)
-+
-+set(Qt5EventDispatcherSupport_DEFINITIONS ${PKG_Qt5EventDispatcherSupport_CFLAGS_OTHER})
-+set(Qt5EventDispatcherSupport_VERSION ${PKG_Qt5EventDispatcherSupport_VERSION})
-+
-+find_path(Qt5EventDispatcherSupport_INCLUDE_DIR
-+ NAMES
-+ QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h
-+ HINTS
-+ ${PKG_Qt5EventDispatcherSupport_INCLUDEDIR}/QtEventDispatcherSupport/${PKG_Qt5EventDispatcherSupport_VERSION}/
-+)
-+find_library(Qt5EventDispatcherSupport_LIBRARY
-+ NAMES
-+ Qt5EventDispatcherSupport
-+ HINTS
-+ ${PKG_Qt5EventDispatcherSupport_LIBRARY_DIRS}
-+)
-+
-+include(FindPackageHandleStandardArgs)
-+find_package_handle_standard_args(Qt5EventDispatcherSupport
-+ FOUND_VAR
-+ Qt5EventDispatcherSupport_FOUND
-+ REQUIRED_VARS
-+ Qt5EventDispatcherSupport_LIBRARY
-+ Qt5EventDispatcherSupport_INCLUDE_DIR
-+ VERSION_VAR
-+ Qt5EventDispatcherSupport_VERSION
-+)
-+
-+if(Qt5EventDispatcherSupport_FOUND AND NOT TARGET Qt5EventDispatcherSupport::Qt5EventDispatcherSupport)
-+ add_library(Qt5EventDispatcherSupport::Qt5EventDispatcherSupport UNKNOWN IMPORTED)
-+ set_target_properties(Qt5EventDispatcherSupport::Qt5EventDispatcherSupport PROPERTIES
-+ IMPORTED_LOCATION "${Qt5EventDispatcherSupport_LIBRARY}"
-+ INTERFACE_COMPILE_OPTIONS "${Qt5EventDispatcherSupport_DEFINITIONS}"
-+ INTERFACE_INCLUDE_DIRECTORIES "${Qt5EventDispatcherSupport_INCLUDE_DIR}"
-+ )
-+endif()
-+
-+mark_as_advanced(Qt5EventDispatcherSupport_LIBRARY Qt5EventDispatcherSupport_INCLUDE_DIR)
-+
-+# compatibility variables
-+set(Qt5EventDispatcherSupport_LIBRARIES ${Qt5EventDispatcherSupport_LIBRARY})
-+set(Qt5EventDispatcherSupport_INCLUDE_DIRS ${Qt5EventDispatcherSupport_INCLUDE_DIR})
-+set(Qt5EventDispatcherSupport_VERSION_STRING ${Qt5EventDispatcherSupport_VERSION})
-+
-+
-+include(FeatureSummary)
-+set_package_properties(Qt5EventDispatcherSupport PROPERTIES
-+ URL "http://www.qt.io"
-+ DESCRIPTION "Qt EventDispatcherSupport module."
-+)
-+
-diff --git a/cmake/modules/FindQt5FontDatabaseSupport.cmake b/cmake/modules/FindQt5FontDatabaseSupport.cmake
-new file mode 100644
-index 000000000..d3e66cd30
---- /dev/null
-+++ b/cmake/modules/FindQt5FontDatabaseSupport.cmake
-@@ -0,0 +1,122 @@
-+#.rst:
-+# FindQt5FontDatabaseSupport
-+# -------
-+#
-+# Try to find Qt5FontDatabaseSupport on a Unix system.
-+#
-+# This will define the following variables:
-+#
-+# ``Qt5FontDatabaseSupport_FOUND``
-+# True if (the requested version of) Qt5FontDatabaseSupport is available
-+# ``Qt5FontDatabaseSupport_VERSION``
-+# The version of Qt5FontDatabaseSupport
-+# ``Qt5FontDatabaseSupport_LIBRARIES``
-+# This can be passed to target_link_libraries() instead of the ``Qt5FontDatabaseSupport::Qt5FontDatabaseSupport``
-+# target
-+# ``Qt5FontDatabaseSupport_INCLUDE_DIRS``
-+# This should be passed to target_include_directories() if the target is not
-+# used for linking
-+# ``Qt5FontDatabaseSupport_DEFINITIONS``
-+# This should be passed to target_compile_options() if the target is not
-+# used for linking
-+#
-+# If ``Qt5FontDatabaseSupport_FOUND`` is TRUE, it will also define the following imported target:
-+#
-+# ``Qt5FontDatabaseSupport::Qt5FontDatabaseSupport``
-+# The Qt5FontDatabaseSupport library
-+#
-+# In general we recommend using the imported target, as it is easier to use.
-+# Bear in mind, however, that if the target is in the link interface of an
-+# exported library, it must be made available by the package config file.
-+
-+#=============================================================================
-+# Copyright 2014 Alex Merry <alex.merry@kde.org>
-+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
-+# Copyright 2016 Takahiro Hashimoto <kenya888@gmail.com>
-+#
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions
-+# are met:
-+#
-+# 1. Redistributions of source code must retain the copyright
-+# notice, this list of conditions and the following disclaimer.
-+# 2. Redistributions in binary form must reproduce the copyright
-+# notice, this list of conditions and the following disclaimer in the
-+# documentation and/or other materials provided with the distribution.
-+# 3. The name of the author may not be used to endorse or promote products
-+# derived from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+#=============================================================================
-+
-+if(CMAKE_VERSION VERSION_LESS 2.8.12)
-+ message(FATAL_ERROR "CMake 2.8.12 is required by FindQt5FontDatabaseSupport.cmake")
-+endif()
-+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
-+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindQt5FontDatabaseSupport.cmake")
-+endif()
-+
-+# Use pkg-config to get the directories and then use these values
-+# in the FIND_PATH() and FIND_LIBRARY() calls
-+find_package(PkgConfig)
-+pkg_check_modules(PKG_Qt5FontDatabaseSupport QUIET Qt5Gui)
-+
-+set(Qt5FontDatabaseSupport_DEFINITIONS ${PKG_Qt5FontDatabaseSupport_CFLAGS_OTHER})
-+set(Qt5FontDatabaseSupport_VERSION ${PKG_Qt5FontDatabaseSupport_VERSION})
-+
-+find_path(Qt5FontDatabaseSupport_INCLUDE_DIR
-+ NAMES
-+ QtFontDatabaseSupport/private/qfontconfigdatabase_p.h
-+ HINTS
-+ ${PKG_Qt5FontDatabaseSupport_INCLUDEDIR}/QtFontDatabaseSupport/${PKG_Qt5FontDatabaseSupport_VERSION}/
-+)
-+find_library(Qt5FontDatabaseSupport_LIBRARY
-+ NAMES
-+ Qt5FontDatabaseSupport
-+ HINTS
-+ ${PKG_Qt5FontDatabaseSupport_LIBRARY_DIRS}
-+)
-+
-+include(FindPackageHandleStandardArgs)
-+find_package_handle_standard_args(Qt5FontDatabaseSupport
-+ FOUND_VAR
-+ Qt5FontDatabaseSupport_FOUND
-+ REQUIRED_VARS
-+ Qt5FontDatabaseSupport_LIBRARY
-+ Qt5FontDatabaseSupport_INCLUDE_DIR
-+ VERSION_VAR
-+ Qt5FontDatabaseSupport_VERSION
-+)
-+
-+if(Qt5FontDatabaseSupport_FOUND AND NOT TARGET Qt5FontDatabaseSupport::Qt5FontDatabaseSupport)
-+ add_library(Qt5FontDatabaseSupport::Qt5FontDatabaseSupport UNKNOWN IMPORTED)
-+ set_target_properties(Qt5FontDatabaseSupport::Qt5FontDatabaseSupport PROPERTIES
-+ IMPORTED_LOCATION "${Qt5FontDatabaseSupport_LIBRARY}"
-+ INTERFACE_COMPILE_OPTIONS "${Qt5FontDatabaseSupport_DEFINITIONS}"
-+ INTERFACE_INCLUDE_DIRECTORIES "${Qt5FontDatabaseSupport_INCLUDE_DIR}"
-+ )
-+endif()
-+
-+mark_as_advanced(Qt5FontDatabaseSupport_LIBRARY Qt5FontDatabaseSupport_INCLUDE_DIR)
-+
-+# compatibility variables
-+set(Qt5FontDatabaseSupport_LIBRARIES ${Qt5FontDatabaseSupport_LIBRARY})
-+set(Qt5FontDatabaseSupport_INCLUDE_DIRS ${Qt5FontDatabaseSupport_INCLUDE_DIR})
-+set(Qt5FontDatabaseSupport_VERSION_STRING ${Qt5FontDatabaseSupport_VERSION})
-+
-+
-+include(FeatureSummary)
-+set_package_properties(Qt5FontDatabaseSupport PROPERTIES
-+ URL "http://www.qt.io"
-+ DESCRIPTION "Qt FontDatabaseSupport module."
-+)
-+
-diff --git a/cmake/modules/FindQt5ThemeSupport.cmake b/cmake/modules/FindQt5ThemeSupport.cmake
-new file mode 100644
-index 000000000..5588a7666
---- /dev/null
-+++ b/cmake/modules/FindQt5ThemeSupport.cmake
-@@ -0,0 +1,122 @@
-+#.rst:
-+# FindQt5ThemeSupport
-+# -------
-+#
-+# Try to find Qt5ThemeSupport on a Unix system.
-+#
-+# This will define the following variables:
-+#
-+# ``Qt5ThemeSupport_FOUND``
-+# True if (the requested version of) Qt5ThemeSupport is available
-+# ``Qt5ThemeSupport_VERSION``
-+# The version of Qt5ThemeSupport
-+# ``Qt5ThemeSupport_LIBRARIES``
-+# This can be passed to target_link_libraries() instead of the ``Qt5ThemeSupport::Qt5ThemeSupport``
-+# target
-+# ``Qt5ThemeSupport_INCLUDE_DIRS``
-+# This should be passed to target_include_directories() if the target is not
-+# used for linking
-+# ``Qt5ThemeSupport_DEFINITIONS``
-+# This should be passed to target_compile_options() if the target is not
-+# used for linking
-+#
-+# If ``Qt5ThemeSupport_FOUND`` is TRUE, it will also define the following imported target:
-+#
-+# ``Qt5ThemeSupport::Qt5ThemeSupport``
-+# The Qt5ThemeSupport library
-+#
-+# In general we recommend using the imported target, as it is easier to use.
-+# Bear in mind, however, that if the target is in the link interface of an
-+# exported library, it must be made available by the package config file.
-+
-+#=============================================================================
-+# Copyright 2014 Alex Merry <alex.merry@kde.org>
-+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
-+# Copyright 2016 Takahiro Hashimoto <kenya888@gmail.com>
-+#
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions
-+# are met:
-+#
-+# 1. Redistributions of source code must retain the copyright
-+# notice, this list of conditions and the following disclaimer.
-+# 2. Redistributions in binary form must reproduce the copyright
-+# notice, this list of conditions and the following disclaimer in the
-+# documentation and/or other materials provided with the distribution.
-+# 3. The name of the author may not be used to endorse or promote products
-+# derived from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+#=============================================================================
-+
-+if(CMAKE_VERSION VERSION_LESS 2.8.12)
-+ message(FATAL_ERROR "CMake 2.8.12 is required by FindQt5ThemeSupport.cmake")
-+endif()
-+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
-+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindQt5ThemeSupport.cmake")
-+endif()
-+
-+# Use pkg-config to get the directories and then use these values
-+# in the FIND_PATH() and FIND_LIBRARY() calls
-+find_package(PkgConfig)
-+pkg_check_modules(PKG_Qt5ThemeSupport QUIET Qt5Gui)
-+
-+set(Qt5ThemeSupport_DEFINITIONS ${PKG_Qt5ThemeSupport_CFLAGS_OTHER})
-+set(Qt5ThemeSupport_VERSION ${PKG_Qt5ThemeSupport_VERSION})
-+
-+find_path(Qt5ThemeSupport_INCLUDE_DIR
-+ NAMES
-+ QtThemeSupport/private/qgenericunixthemes_p.h
-+ HINTS
-+ ${PKG_Qt5ThemeSupport_INCLUDEDIR}/QtThemeSupport/${PKG_Qt5ThemeSupport_VERSION}/
-+)
-+find_library(Qt5ThemeSupport_LIBRARY
-+ NAMES
-+ Qt5ThemeSupport
-+ HINTS
-+ ${PKG_Qt5ThemeSupport_LIBRARY_DIRS}
-+)
-+
-+include(FindPackageHandleStandardArgs)
-+find_package_handle_standard_args(Qt5ThemeSupport
-+ FOUND_VAR
-+ Qt5ThemeSupport_FOUND
-+ REQUIRED_VARS
-+ Qt5ThemeSupport_LIBRARY
-+ Qt5ThemeSupport_INCLUDE_DIR
-+ VERSION_VAR
-+ Qt5ThemeSupport_VERSION
-+)
-+
-+if(Qt5ThemeSupport_FOUND AND NOT TARGET Qt5ThemeSupport::Qt5ThemeSupport)
-+ add_library(Qt5ThemeSupport::Qt5ThemeSupport UNKNOWN IMPORTED)
-+ set_target_properties(Qt5ThemeSupport::Qt5ThemeSupport PROPERTIES
-+ IMPORTED_LOCATION "${Qt5ThemeSupport_LIBRARY}"
-+ INTERFACE_COMPILE_OPTIONS "${Qt5ThemeSupport_DEFINITIONS}"
-+ INTERFACE_INCLUDE_DIRECTORIES "${Qt5ThemeSupport_INCLUDE_DIR}"
-+ )
-+endif()
-+
-+mark_as_advanced(Qt5ThemeSupport_LIBRARY Qt5ThemeSupport_INCLUDE_DIR)
-+
-+# compatibility variables
-+set(Qt5ThemeSupport_LIBRARIES ${Qt5ThemeSupport_LIBRARY})
-+set(Qt5ThemeSupport_INCLUDE_DIRS ${Qt5ThemeSupport_INCLUDE_DIR})
-+set(Qt5ThemeSupport_VERSION_STRING ${Qt5ThemeSupport_VERSION})
-+
-+
-+include(FeatureSummary)
-+set_package_properties(Qt5ThemeSupport PROPERTIES
-+ URL "http://www.qt.io"
-+ DESCRIPTION "Qt ThemeSupport module."
-+)
-+
-diff --git a/plugins/qpa/CMakeLists.txt b/plugins/qpa/CMakeLists.txt
-index 1a91a0ff1..4094ae7d2 100644
---- a/plugins/qpa/CMakeLists.txt
-+++ b/plugins/qpa/CMakeLists.txt
-@@ -1,6 +1,5 @@
- include_directories(${Qt5Core_PRIVATE_INCLUDE_DIRS})
- include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
--add_definitions(-DQ_FONTCONFIGDATABASE)
-
- set(QPA_SOURCES
- abstractplatformcontext.cpp
-@@ -19,10 +18,22 @@ include(ECMQtDeclareLoggingCategory)
- ecm_qt_declare_logging_category(QPA_SOURCES HEADER logging.h IDENTIFIER KWIN_QPA CATEGORY_NAME kwin_qpa_plugin DEFAULT_SEVERITY Critical)
-
- add_library(KWinQpaPlugin MODULE ${QPA_SOURCES})
-+
-+if(Qt5Core_VERSION VERSION_LESS "5.8.0")
-+ add_definitions(-DQ_FONTCONFIGDATABASE)
-+ set(QT5PLATFORMSUPPORT_LIBS Qt5PlatformSupport::Qt5PlatformSupport)
-+else()
-+ set(QT5PLATFORMSUPPORT_LIBS
-+ Qt5FontDatabaseSupport::Qt5FontDatabaseSupport
-+ Qt5ThemeSupport::Qt5ThemeSupport
-+ Qt5EventDispatcherSupport::Qt5EventDispatcherSupport
-+)
-+endif()
-+
- target_link_libraries(KWinQpaPlugin
- kwin
- KF5::WaylandClient
-- Qt5PlatformSupport::Qt5PlatformSupport
-+ ${QT5PLATFORMSUPPORT_LIBS}
- ${FONTCONFIG_LIBRARIES}
- ${FREETYPE_LIBRARIES}
- )
-diff --git a/plugins/qpa/integration.cpp b/plugins/qpa/integration.cpp
-index 8913bf0a1..fcca48f79 100644
---- a/plugins/qpa/integration.cpp
-+++ b/plugins/qpa/integration.cpp
-@@ -46,9 +46,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
- #include <qpa/qplatforminputcontextfactory_p.h>
- #include <qpa/qwindowsysteminterface.h>
- #include <QtCore/private/qeventdispatcher_unix_p.h>
-+
-+#if QT_VERSION >= 0x050800
-+#include <QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h>
-+#include <QtThemeSupport/private/qgenericunixthemes_p.h>
-+#include <QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h>
-+#else
- #include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
- #include <QtPlatformSupport/private/qgenericunixthemes_p.h>
- #include <QtPlatformSupport/private/qunixeventdispatcher_qpa_p.h>
-+#endif
-
- namespace KWin
- {
diff --git a/user/kwindowsystem/APKBUILD b/user/kwindowsystem/APKBUILD
index 454ed1a57..89e2c1f3b 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for introspecting the running X11 window manager"
url="https://www.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e34d2b597d97d9dd81842d6ca0be9d737d96ec3cfe632b52b72b94a140479b4c3af29376599fa6ea23befd20b88bde679c5ebe47e091aba6efd163968f76318c kwindowsystem-5.41.0.tar.xz"
+sha512sums="fa3df2f1a3eb1596ef429b8e84ce9696ffef3aa125727f0becf725b949611022887074a796116aadbb81adf6e5ff8e3b9fd49e72cf0066138c91ef09fdffd1c8 kwindowsystem-5.43.0.tar.xz"
diff --git a/user/kwordquiz/APKBUILD b/user/kwordquiz/APKBUILD
new file mode 100644
index 000000000..f247885d1
--- /dev/null
+++ b/user/kwordquiz/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kwordquiz
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Flash card trainer for KDE"
+url="https://www.kde.org/applications/education/kwordquiz/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev ki18n-dev kcrash-dev
+ kconfig-dev kconfigwidgets-dev kdoctools-dev kguiaddons-dev
+ kiconthemes-dev kitemviews-dev knotifyconfig-dev knewstuff-dev
+ knotifications-dev kxmlgui-dev kdelibs4support-dev
+ libkeduvocdocument-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/kwordquiz-$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 \
+ -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="f0210292f6c25b64dce00d221e5ba0797d45c7f1d6354be40dbd294534306f7b328b436f46fbad72d91b97867589694251f8fae7ed2367c1057198c942e3329b kwordquiz-17.12.2.tar.xz"
diff --git a/user/kxmlgui/APKBUILD b/user/kxmlgui/APKBUILD
index 100b2bdd6..93a9733d6 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for creating user interfaces using XML"
url="https://www.kde.org/"
@@ -46,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c8e7d39ebf8e0cb887f7b8bde7fb1a9a5f35e24972df26b1ba9ff5bb444fc905bd9380e6daf3b52a6bfe97d022029f9c00f55b0062d24de51dc0b0ccd255f1a1 kxmlgui-5.41.0.tar.xz"
+sha512sums="ace47a5a01267ba33bc9173058a05cb49cfba7d18a171527df4afb094e437885b697fe5ab02d1609f6e577857f3f27d7d4ac2a25f6ea2dd659291d82fe25aa75 kxmlgui-5.43.0.tar.xz"
diff --git a/user/kxmlrpcclient/APKBUILD b/user/kxmlrpcclient/APKBUILD
index 98b6dc1b6..e95b965f7 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Qt library for writing XML-RPC clients"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ffb485f7c6027861d51da96eec33c68551627def1bee467797bf2864207584f74c6847b6ffca4ea130709615d9dae451cd406d391644712ad78f09d175dfc030 kxmlrpcclient-5.41.0.tar.xz"
+sha512sums="82940cd57ab846009b3bb2f50ff8502679a24212df6d4c8f7499874070dbf43858564f29ea09b278d766ee4a13ce5b92b0d847e5ecb8aacb00194a31393bba3f kxmlrpcclient-5.43.0.tar.xz"
diff --git a/user/kxstitch/APKBUILD b/user/kxstitch/APKBUILD
new file mode 100644
index 000000000..3546db37e
--- /dev/null
+++ b/user/kxstitch/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kxstitch
+pkgver=2.1.0
+pkgrel=0
+pkgdesc="Cross-stitch pattern editor by KDE"
+url="https://userbase.kde.org/KXStitch"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
+ kdoctools-dev kconfig-dev kconfigwidgets-dev kcompletion-dev ki18n-dev
+ kio-dev ktextwidgets-dev kwidgetsaddons-dev kxmlgui-dev imagemagick-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/kxstitch/$pkgver/kxstitch-$pkgver.tar.xz"
+builddir="$srcdir/kxstitch-$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="c31b8f4c33a86967b02ad2d6c9be84931e607644c8683c41b3160c86fee8714d77a10f770d94ae3905c81261dfdaf13957783a83d2235594656bf2884f944608 kxstitch-2.1.0.tar.xz"
diff --git a/user/labplot/APKBUILD b/user/labplot/APKBUILD
new file mode 100644
index 000000000..709ca3b64
--- /dev/null
+++ b/user/labplot/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=labplot
+pkgver=2.4.0
+pkgrel=0
+pkgdesc="Interactive tool for graphing and analysis of scientific data"
+url="https://www.kde.org/applications/education/labplot/"
+arch="all"
+license="GPL-2.0-only"
+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"
+install=""
+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"
+
+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 -D_GNU_SOURCE" \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="5d29dd7d63d484359e73c8d82d8dbc25a069e1f33829cf75c2a2009ebae2027353ecf578b51806b5f35ae17ec472f5cbfdb4caed2637dc1ecc9229d33033d21b labplot-2.4.0-kf5.tar.xz"
diff --git a/user/libdca/APKBUILD b/user/libdca/APKBUILD
new file mode 100644
index 000000000..9047074dc
--- /dev/null
+++ b/user/libdca/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libdca
+pkgver=0.0.5
+pkgrel=0
+pkgdesc="Free DTS Coherent Acoustics decoder"
+url="https://www.videolan.org/developers/libdca.html"
+arch="all"
+license="GPL-2.0+"
+depends=
+install=
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.videolan.org/pub/videolan/libdca/$pkgver/libdca-$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="d9f0ed34efeb3f27af8424fcb3e6df56744c6735854a65b5709c02b42b4513b9c4618dcc19eb44293afa051bd95616651bda5fc3b49dfabe975d0babfb1bc287 libdca-0.0.5.tar.bz2"
diff --git a/user/libkcddb/APKBUILD b/user/libkcddb/APKBUILD
new file mode 100644
index 000000000..443d2323d
--- /dev/null
+++ b/user/libkcddb/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libkcddb
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Library to retrieve audio CD metadata from the Internet"
+url="http://projects.kde.org/projects/kde/kdemultimedia/libkcddb"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+depends_dev="qt5-qtbase-dev kconfig-dev kcodecs-dev kio-dev kwidgetsaddons-dev"
+makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev ki18n-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/libkcddb-$pkgver.tar.xz
+ update-tests.patch"
+builddir="$srcdir/libkcddb-$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="3c19f2f7b77ed6334dfeea725f996cdfe73531f0e2be1d42d689e810080d29f1f4f16d6f3e8c9c820e189a08ce560440d012b37aae465e60746e71ba9d9476ba libkcddb-17.12.2.tar.xz
+81085d4fd1e34a14cdbd436c177904a3e1a4520381e85692abbc3b4126c7bd8b11da63d755ac51dc86dc1345482524cc6f74615afe23fac193c98227dffe0fa8 update-tests.patch"
diff --git a/user/libkcddb/update-tests.patch b/user/libkcddb/update-tests.patch
new file mode 100644
index 000000000..ab6d0369f
--- /dev/null
+++ b/user/libkcddb/update-tests.patch
@@ -0,0 +1,22 @@
+--- libkcddb-17.12.2/tests/asynccddblookuptest.cpp.old 2017-06-02 05:31:07.000000000 +0000
++++ libkcddb-17.12.2/tests/asynccddblookuptest.cpp 2018-03-24 20:43:25.230670753 +0000
+@@ -63,7 +63,7 @@
+
+ // If revision doesn't match, test probably needs to be updated
+ // See: http://www.freedb.org/freedb/jazz/a1107d0a for updated data
+- QCOMPARE(m_info.get(QString::fromUtf8("revision")).toInt(), 7);
++ QCOMPARE(m_info.get(QString::fromUtf8("revision")).toInt(), 8);
+
+ QCOMPARE(m_info.get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
+ QCOMPARE(m_info.get(Title).toString(),QString::fromUtf8("The K&D Sessions (Part One)"));
+--- libkcddb-17.12.2/tests/asynchttplookuptest.cpp.old 2017-06-02 05:31:07.000000000 +0000
++++ libkcddb-17.12.2/tests/asynchttplookuptest.cpp 2018-03-24 20:44:11.450670967 +0000
+@@ -64,7 +64,7 @@
+
+ // If revision doesn't match, test probably needs to be updated
+ // See: http://www.freedb.org/freedb/jazz/a1107d0a for updated data
+- QCOMPARE(m_info.get(QString::fromUtf8("revision")).toInt(), 7);
++ QCOMPARE(m_info.get(QString::fromUtf8("revision")).toInt(), 8);
+
+ QCOMPARE(m_info.get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
+ QCOMPARE(m_info.get(Title).toString(),QString::fromUtf8("The K&D Sessions (Part One)"));
diff --git a/user/libkdegames/APKBUILD b/user/libkdegames/APKBUILD
index 2b1cc53d8..89b2de68e 100644
--- a/user/libkdegames/APKBUILD
+++ b/user/libkdegames/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkdegames
-pkgver=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Library for common routines shared between KDE games"
url="https://www.kde.org/applications/games/"
arch="all"
+options="!check" # Tests require X11
license="LGPL-2.0"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtsvg-dev kcoreaddons-dev
@@ -53,3 +54,4 @@ carddecks() {
mv "$pkgdir"/usr/share/carddecks "$subpkgdir"/usr/share/
}
+sha512sums="48f00d7ee7fcad83bace4858659ca5b44138f8fbb1a92d7bba5394ba6a0689414ece948a7ee51ab1648b59ab0b64be0d091010493cd91f1247e53b769cf285e2 libkdegames-17.12.2.tar.xz"
diff --git a/user/libkeduvocdocument/APKBUILD b/user/libkeduvocdocument/APKBUILD
new file mode 100644
index 000000000..6a2628f5f
--- /dev/null
+++ b/user/libkeduvocdocument/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libkeduvocdocument
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Library for manipulating KVTML files"
+url="https://www.kde.org/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+depends_dev="qt5-qtbase-dev karchive-dev kio-dev"
+makedepends="$depends_dev cmake extra-cmake-modules ki18n-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/libkeduvocdocument-$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 \
+ -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="acf87a3931c6d21cd28a169084aa2ec72ea9f491c858111aa8bbc5267e12e654dd5ea05b2b21360327143e82fd730adde0bd7e1d50fd4e87af7905a90efabce6 libkeduvocdocument-17.12.2.tar.xz"
diff --git a/user/libkipi/APKBUILD b/user/libkipi/APKBUILD
new file mode 100644
index 000000000..87e786340
--- /dev/null
+++ b/user/libkipi/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libkipi
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="KDE Image Plugin Interface library"
+url="https://www.digikam.org/"
+arch="all"
+options="!check" # Tests fail to compile.
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+depends_dev="qt5-qtbase-dev kconfig-dev kxmlgui-dev kservice-dev"
+makedepends="$depends_dev cmake extra-cmake-modules"
+install=""
+subpackages="$pkgname-dev"
+source="http://download.kde.org/stable/applications/$pkgver/src/libkipi-$pkgver.tar.xz"
+builddir="$srcdir/libkipi-$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" \
+ -DBUILD_TESTING=OFF \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="8f80bcc86174fa9a0e4e746b1b3e59dad4dc313fb1f6a8a28ea442a171a84059a70611eaff1c00469e156f89641f8c51cbcc4b997961caccf7309d64db0039fc libkipi-17.12.2.tar.xz"
diff --git a/user/libkleo/APKBUILD b/user/libkleo/APKBUILD
index 7d0652085..07b36d230 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="KDE encryption library"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="de8f854592786b325f14a5e6be620fd28c9dadf49963070f33105a84249481bfb2a0f179335a760bf7067625a4295af868df10c4214c1001efda8c3aa25f8e3a libkleo-17.08.2.tar.xz"
+sha512sums="bc697f39310d7fa84dfd3ac186b3f1f7715b272bb70b4505439ef64c6fb1b453274cf46c5cce7d89c579a3e5be197fcfb7aa9a097a22081964c2a16d90e17607 libkleo-17.12.2.tar.xz"
diff --git a/user/libkmahjongg/APKBUILD b/user/libkmahjongg/APKBUILD
index 05d4f557b..b6dbba428 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Library with Mah Jongg logic"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2a7a74397ee22d1a8a6b988973753150d07a667e98abcba82850d85fc7f841d2c00ba30ade05bef7f4ec17ca75493754615fb52fd57ae8be2a48c8aa8b7d15c5 libkmahjongg-17.08.2.tar.xz"
+sha512sums="72df346ca92610bcb49e2067a35b1ca441b4649139998f3ed36104f92bb0a93a1bcc5283fd49901b5b66ed35fd8e865d04360267edc75a779ac0bce02047944a libkmahjongg-17.12.2.tar.xz"
diff --git a/user/libksane/APKBUILD b/user/libksane/APKBUILD
new file mode 100644
index 000000000..d15e9eee2
--- /dev/null
+++ b/user/libksane/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libksane
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="KDE scanning library"
+url="https://www.kde.org"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+depends_dev="sane-dev"
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qtbase-dev ki18n-dev
+ kwallet-dev ktextwidgets-dev kwidgetsaddons-dev"
+install=""
+subpackages="$pkgname-dev $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/libksane-$pkgver.tar.xz"
+builddir="$srcdir/libksane-$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="8567fc8da31ded406dfe2e72ff0a209741e437e51ab4beca75feabbb915842e1b3e7f692c94b448512e76f2b60487030da94518d240422653a90eaa0ef3205c1 libksane-17.12.2.tar.xz"
diff --git a/user/libkscreen/APKBUILD b/user/libkscreen/APKBUILD
index f90541eda..ab64e2f8a 100644
--- a/user/libkscreen/APKBUILD
+++ b/user/libkscreen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkscreen
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="KDE Plasma screen management software"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="194f6b1cb5abb38f5c4fc425546652e31f8b0b0a0ae6e3d657c98095df13f383258f0e16c74b5add0935158c1affd27b21ae76cf7b951801f4250f6dc527006e libkscreen-5.8.7.tar.xz"
+sha512sums="867ad3ab214a1399177c9c33b94e9438b1d2262f815a71ab12303cfcb6e701406e7fa237afaf7df7f2d2fe0da1bf106c21b4039d8ea05853345a2b397fdc8785 libkscreen-5.12.2.tar.xz"
diff --git a/user/libksysguard/APKBUILD b/user/libksysguard/APKBUILD
index ac86a6684..666c72ff1 100644
--- a/user/libksysguard/APKBUILD
+++ b/user/libksysguard/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libksysguard
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="KDE system monitor library"
url="https://www.kde.org/"
@@ -16,7 +16,7 @@ makedepends="$depends_dev cmake extra-cmake-modules python3 gettext-dev
libx11-dev zlib-dev"
install=""
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/Attic/plasma/$pkgver/libksysguard-$pkgver.tar.xz"
+source="https://download.kde.org/stable/plasma/$pkgver/libksysguard-$pkgver.tar.xz"
builddir="$srcdir/libksysguard-$pkgver"
build() {
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a2b29e548e76d73814b4775343449ca84d48c53967830eb2c96064f385e83ec800e50bff172868d381f24c790a13aef90e5745ba0d545e50a2fd4c040b5d9749 libksysguard-5.8.7.tar.xz"
+sha512sums="3047c1c048b910e77dc40bee978636cb3e5ade7897d976139e858b9fd70362eb725430ac5e608fee2b03fe4bda3c4b681145b707177aa39f851f56f1e5fedf86 libksysguard-5.12.2.tar.xz"
diff --git a/user/lskat/APKBUILD b/user/lskat/APKBUILD
index 2747353f9..d60d6d5df 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Lieutenant Skat is an interactive two-player card game"
url="https://games.kde.org/game.php?game=lskat"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1aecae025e1ed8d4c8a25a3f4fe8fc8de8e6886a2337a5b63c9396ac447954a2c31fcfac5d590611e7b222e6fcc3c17fe536cd5f71b330d8b4c9eb6dd2151d1d lskat-17.08.2.tar.xz"
+sha512sums="320d30ccb8511c7e7701bbd619973387da2ff6a5cf79d5dae0576627efa3d0b99870d58498a8baf5edbc26fcdf6e061d6c28c6a5344600c010db7d032f8c9003 lskat-17.12.2.tar.xz"
diff --git a/user/lxqt-config/APKBUILD b/user/lxqt-config/APKBUILD
index 32b46b9a6..727f386d5 100644
--- a/user/lxqt-config/APKBUILD
+++ b/user/lxqt-config/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=lxqt-config
pkgver=0.12.0
-pkgrel=0
+pkgrel=1
pkgdesc="Collection of tools for configuring LXQt and the underlying system."
url="http://lxqt.org"
arch="all"
@@ -10,7 +10,6 @@ license="LGPL-2.1+"
depends=""
depends_dev=""
makedepends="cmake extra-cmake-modules liblxqt-dev>=0.12.0 lxqt-build-tools libxcursor-dev qt5-qtsvg-dev qt5-qttools-dev kwindowsystem-dev libkscreen-dev $depends_dev"
-subpackages="$pkgname-dev"
install=""
source="https://github.com/lxde/lxqt-config/releases/download/$pkgver/lxqt-config-$pkgver.tar.xz"
builddir="$srcdir/lxqt-config-$pkgver"
diff --git a/user/lxqt-desktop/APKBUILD b/user/lxqt-desktop/APKBUILD
index 6bb3ce183..292947995 100644
--- a/user/lxqt-desktop/APKBUILD
+++ b/user/lxqt-desktop/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=lxqt-desktop
pkgver=0.12.0
-pkgrel=1
+pkgrel=2
arch="noarch"
pkgdesc="Complete LXQt desktop"
url="https://lxqt.org"
@@ -12,11 +12,11 @@ depends="breeze breeze-icons oxygen ttf-liberation xorg-server dbus-x11 openbox
lxqt-panel lxqt-runner lxqt-qtplugin qterminal pcmanfm-qt lxqt-sudo
lxqt-session lxqt-powermanagement lxqt-policykit lxqt-openssh-askpass
lxqt-notificationd lxqt-globalkeys lxqt-config lxqt-admin lxqt-about
- lximage-qt lxqt-themes pavucontrol-qt compton-conf"
+ lximage-qt lxqt-themes pavucontrol-qt qt5ct"
makedepends=""
install=""
-subpackages=""
-source="org.adelie-linux.about-lxqt.desktop"
+subpackages="$pkgname-doc"
+source="org.adelie-linux.about-lxqt.desktop startlxqt startlxqt.1"
builddir="$srcdir/$pkgname-$pkgver"
build() {
@@ -27,5 +27,9 @@ package() {
cd "$srcdir"
install -D -m644 "$srcdir"/org.adelie-linux.about-lxqt.desktop \
"$pkgdir"/usr/share/applications/org.adelie-linux.about-lxqt.desktop
+ install -D -m755 "$srcdir"/startlxqt "$pkgdir"/usr/bin/startlxqt
+ install -D -m644 "$srcdir"/startlxqt.1 "$pkgdir"/usr/share/man/man1/startlxqt.1
}
-sha512sums="e954a41cad44cad7ef3a7695c28396540556ee7bc374ee00f95c4117988d84f6989de7a030ddf11e426b895577e392100f8c5696f0cc3fdc03c2500498580af0 org.adelie-linux.about-lxqt.desktop"
+sha512sums="e954a41cad44cad7ef3a7695c28396540556ee7bc374ee00f95c4117988d84f6989de7a030ddf11e426b895577e392100f8c5696f0cc3fdc03c2500498580af0 org.adelie-linux.about-lxqt.desktop
+f520387e49335df3fb7fa972e3f1336e4841feb24c073dc0b777a400274087a00ec4c9f89bda4556d80a0622854d7131f771c866c921174473456a9a80582a5c startlxqt
+4a56f5bd9364cac0cb32dd119ff209452249efff9de3be20297c1db6524dd1ef24ed7249f22a738a82dab4e61481e11dcceaf9e9474620fa1ca0b1616aa7dfe7 startlxqt.1"
diff --git a/user/lxqt-desktop/startlxqt b/user/lxqt-desktop/startlxqt
new file mode 100755
index 000000000..09b73f337
--- /dev/null
+++ b/user/lxqt-desktop/startlxqt
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+contains()
+{
+ local str="$1" substr="$2"
+ [ "$str" = "$substr" -o -z "${str##$substr:*}" -o -z "${str##*:$substr:*}" -o -z "${str%%*:$substr}" ]
+}
+
+if [ -z "$XDG_DATA_HOME" ]; then
+ export XDG_DATA_HOME="$HOME/.local/share"
+fi
+
+if [ -z "$XDG_CONFIG_HOME" ]; then
+ export XDG_CONFIG_HOME="$HOME/.config"
+fi
+
+if [ -z "$XDG_DATA_DIRS" ]; then
+ XDG_DATA_DIRS="$XDG_DATA_HOME:/usr/local/share:/usr/share"
+else
+ if ! contains "$XDG_DATA_DIRS" "/usr/share"; then
+ XDG_DATA_DIRS="$XDG_DATA_DIRS:/usr/share"
+ fi
+fi
+export XDG_DATA_DIRS
+
+if [ -z "$XDG_CONFIG_DIRS" ]; then
+ export XDG_CONFIG_DIRS="/etc/xdg"
+else
+ if ! contains "$XDG_CONFIG_DIRS" '/etc/xdg'; then
+ XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS:/etc/xdg"
+ fi
+fi
+
+if [ -z "$XDG_CACHE_HOME" ]; then
+ export XDG_CACHE_HOME="$HOME/.cache"
+fi
+
+# Ensure the existance of the 'Desktop' folder
+if [ -e "$XDG_CONFIG_HOME/user-dirs.dirs" ]; then
+ . "$XDG_CONFIG_HOME/user-dirs.dirs"
+else
+ XDG_DESKTOP_DIR="$HOME/Desktop"
+fi
+mkdir -p "$XDG_DESKTOP_DIR"
+
+# Clean up after GDM (GDM sets the number of desktops to one)
+xprop -root -remove _NET_NUMBER_OF_DESKTOPS -remove _NET_DESKTOP_NAMES -remove _NET_CURRENT_DESKTOP 2> /dev/null
+
+# Enable Qt integration for OpenOffice.org, if available.
+if [ -z "$SAL_USE_VCLPLUGIN" ]; then
+ export SAL_USE_VCLPLUGIN=kde4
+fi
+
+# Launch DBus if needed
+if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
+ if [ -z "$XDG_RUNTIME_DIR" ] || ! [ -S "$XDG_RUNTIME_DIR/bus" ] || ! [ -O "$XDG_RUNTIME_DIR/bus" ]; then
+ eval "$(dbus-launch --sh-syntax --exit-with-session)" || echo "startlxqt: error executing dbus-launch" >&2
+ fi
+fi
+
+# Copy default settings of openbox
+if [ ! -e "$XDG_CONFIG_HOME/openbox/lxqt-rc.xml" ] ; then
+ ob_config_copied=0
+ for considered_file in 'lxde-rc.xml' 'rc.xml'; do
+ if [ -e "$XDG_CONFIG_HOME/openbox/$considered_file" ]; then
+ #copy existing configuration of openbox
+ cp "$XDG_CONFIG_HOME/openbox/$considered_file" "$XDG_CONFIG_HOME/openbox/lxqt-rc.xml"
+ message="Your existing configuration for openbox '$XDG_CONFIG_HOME/openbox/$considered_file' was used to
+fill the LXQt's openbox configuration '$XDG_CONFIG_HOME/openbox/lxqt-rc.xml'.
+If you want to use the predefined LXQt's openbox configuration, run:
+ cp '/etc/xdg/openbox/lxqt-rc.xml' '$XDG_CONFIG_HOME/openbox'"
+ echo "$message" >&2
+ xmessage -center -title "LXQt Openbox configuration" "$message" &
+ ob_config_copied=1
+ break
+ fi
+ done
+ if [ 0 -eq "$ob_config_copied" ]; then
+ #copy predefined configuration
+ mkdir -p "$XDG_CONFIG_HOME/openbox"
+ #user/distribution can change the default configuration via LXQT_DEFAULT_OPENBOX_CONFIG
+ [ -r "$LXQT_DEFAULT_OPENBOX_CONFIG" ] || LXQT_DEFAULT_OPENBOX_CONFIG='/etc/xdg/openbox/lxqt-rc.xml'
+ cp "$LXQT_DEFAULT_OPENBOX_CONFIG" "$XDG_CONFIG_HOME/openbox"
+ fi
+fi
+
+# Qt4 platform plugin
+export QT_PLATFORM_PLUGIN=lxqt
+
+# Qt5 platform plugin
+export QT_QPA_PLATFORMTHEME=qt5ct
+
+# use lxqt-applications.menu for main app menu
+export XDG_MENU_PREFIX="lxqt-"
+
+export XDG_CURRENT_DESKTOP="LXQt"
+
+# Start the LXQt session
+exec lxqt-session
diff --git a/user/lxqt-desktop/startlxqt.1 b/user/lxqt-desktop/startlxqt.1
new file mode 100644
index 000000000..9eaba0337
--- /dev/null
+++ b/user/lxqt-desktop/startlxqt.1
@@ -0,0 +1,48 @@
+.TH STARTLXQT 1 2015-11-03 "LXQt 0.10.0" "LXQt session management"
+.SH NAME
+startlxqt \- script to initialize and launch LXQt sessions
+.SH SYNOPSIS
+.B startlxqt
+.SH DESCRIPTION
+\fBstartlxqt\fR is a shell script meant to initialize and launch LXQt sessions.
+It is as such similar to counterparts of other desktop environments like startlxde in
+LXDE or startkde in KDE.
+.P
+It's main tasks are exporting environment variables, partly after performing
+corresponding checks, and launching \fBlxqt-session\fR, the LXQt session manager.
+.P
+It is not meant to be run by users.
+Rather, it is invoked as backend, e. g. by script \fBstartx\fR on virtual terminals or display
+managers like SDDM or LightDM, see section \fIEXAMPLE\fR.
+.SH FILES
+.I $XDG_DATA_DIRS/xsessions/lxqt.desktop
+.RS 5
+Desktop entry file stating startlxqt as binary needed to start LXQt sessions. Sourced e. g.
+by display managers.
+.RE
+.SH BUGS
+None at the time of this writing. Bugs can be reported on https://github.com/lxde/lxqt/issues.
+.SH EXAMPLE
+To start an LXQt session from a virtual terminal (virtual console) add a line
+.P
+.RS 5
+exec startlxqt
+.RE
+.P
+to file \fI~/.xinitrc\fR. An LXQt session will then be launched by running \fBstartx\fR.
+.P
+Display managers are making use of scripts like \fBstartlxqt\fR automatically. Information about
+available desktop environments is provided by files \fI$XDG_DATA_DIRS/xsessions/*.desktop\fR, typically
+\fI/usr/share/xessions/*.desktop\fR.
+.br
+File \fIlxqt.desktop\fR provided by LXQt is stating \fBstartlxqt\fR in key \fIExec\fR while making sure the session
+manager \fBlxqt-session\fR does exist by stating it in key \fITryExec\fR.
+.SH SEE ALSO
+.BR lxqt-session (1)
+.BR startx (1)
+.BR sddm (1)
+.P
+.B http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/
+.RS 5
+Desktop Entry Specification defining desktop entry files (*.desktop).
+.RE
diff --git a/user/lxqt-session/APKBUILD b/user/lxqt-session/APKBUILD
index f4edc933c..72f527106 100644
--- a/user/lxqt-session/APKBUILD
+++ b/user/lxqt-session/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=lxqt-session
pkgver=0.12.0
-pkgrel=0
+pkgrel=1
pkgdesc="Session management utilities for LXQt"
url="http://lxqt.org"
arch="all"
@@ -40,6 +40,8 @@ check() {
package() {
cd "$builddir"
make DESTDIR="$pkgdir" install
+ rm "$pkgdir"/usr/bin/startlxqt
+ rm "$pkgdir"/usr/share/man/man1/start*
}
sha512sums="035954e684ea7ccc6f9a681150aaa482963b57fb4c97595448af170e9f01b2e60dc890ea08a3fdb81548035bbda1d4564e44b7997ff036ffa5ed77b5cbe7aaab lxqt-session-0.12.0.tar.xz"
diff --git a/user/man-db/APKBUILD b/user/man-db/APKBUILD
index 32e688455..ff748ba3f 100644
--- a/user/man-db/APKBUILD
+++ b/user/man-db/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=man-db
pkgver=2.7.6.1
-pkgrel=1
+pkgrel=2
pkgdesc="The man command and related utilities for examining on-line help files"
url="http://www.nongnu.org/man-db/"
arch="all"
@@ -12,7 +12,8 @@ makedepends="db-dev gettext-dev libpipeline-dev zlib-dev"
subpackages="$pkgname-lang $pkgname-doc"
options="!check" # requires //IGNORE in iconv
source="http://download.savannah.nongnu.org/releases/man-db/man-db-$pkgver.tar.xz
- man-db.trigger"
+ man-db.trigger
+ man-db-2.7.5-iconv.patch"
triggers="man-db.trigger=/usr/share/man"
build() {
@@ -44,4 +45,5 @@ package() {
}
sha512sums="623c5e7f8b7c289908b2c926f8777293b8d39aeceef0d2509d701a8b0bfa81408650f655c8608318221786c751a79ee91124b07993de5298cd7fa6d8bb737301 man-db-2.7.6.1.tar.xz
-0d2ab0b42888178ffb83c5dd5eaac8005f047de56af55eb3046291318fd8ed8c4999a4ea0148367ea07c0a0490eb8b9bc726a03b46533ef51bec6a5747719b64 man-db.trigger"
+0d2ab0b42888178ffb83c5dd5eaac8005f047de56af55eb3046291318fd8ed8c4999a4ea0148367ea07c0a0490eb8b9bc726a03b46533ef51bec6a5747719b64 man-db.trigger
+bdf53b2868eb0652f8ca5bec340736a1923b52921bc1a33bde691f005be937f0a01dd32ff46d04ba956aa9c05b2cf276a03877de6c5fd1d997c4a5b029f330e2 man-db-2.7.5-iconv.patch"
diff --git a/user/man-db/man-db-2.7.5-iconv.patch b/user/man-db/man-db-2.7.5-iconv.patch
new file mode 100644
index 000000000..24fea8872
--- /dev/null
+++ b/user/man-db/man-db-2.7.5-iconv.patch
@@ -0,0 +1,75 @@
+diff --git man-db-2.7.5/src/man.c man-db-fixed/src/man.c
+index bea684f..df5f5cb 100644
+--- man-db-2.7.5/src/man.c
++++ man-db-fixed/src/man.c
+@@ -1503,11 +1503,9 @@ static void add_output_iconv (pipeline *p,
+ {
+ debug ("add_output_iconv: source %s, target %s\n", source, target);
+ if (source && target && !STREQ (source, target)) {
+- char *target_translit = xasprintf ("%s//TRANSLIT", target);
+ pipeline_command_args (p, "iconv", "-c",
+- "-f", source, "-t", target_translit,
++ "-f", source, "-t", target,
+ NULL);
+- free (target_translit);
+ }
+ }
+
+diff --git man-db-2.7.5/src/manconv.c man-db-fixed/src/manconv.c
+index cae9b67..48b7a81 100644
+--- man-db-2.7.5/src/manconv.c
++++ man-db-fixed/src/manconv.c
+@@ -106,10 +106,9 @@ static int try_iconv (pipeline *p, const char *try_from_code, const char *to,
+ static char *utf8 = NULL, *output = NULL;
+ size_t utf8left = 0;
+ iconv_t cd_utf8, cd = NULL;
+- int to_utf8 = STREQ (try_to_code, "UTF-8") ||
+- STRNEQ (try_to_code, "UTF-8//", 7);
+- const char *utf8_target = last ? "UTF-8//IGNORE" : "UTF-8";
+- int ignore_errors = (strstr (try_to_code, "//IGNORE") != NULL);;
++ int to_utf8 = STREQ (try_to_code, "UTF-8");
++ const char *utf8_target = "UTF-8";
++ int ignore_errors = 0;
+ int ret = 0;
+
+ debug ("trying encoding %s -> %s\n", try_from_code, try_to_code);
+diff --git man-db-2.7.5/src/manconv_client.c man-db-fixed/src/manconv_client.c
+index 2949c75..7805f90 100644
+--- man-db-2.7.5/src/manconv_client.c
++++ man-db-fixed/src/manconv_client.c
+@@ -131,7 +131,7 @@ void add_manconv (pipeline *p, const char *source, const char *target)
+ codes->from[2] = NULL;
+ name = appendstr (name, "UTF-8:", source, NULL);
+ }
+- codes->to = xasprintf ("%s//IGNORE", target);
++ codes->to = xstrdup (target);
+ /* informational only; no shell quoting concerns */
+ name = appendstr (name, " -t ", codes->to, NULL);
+ if (quiet >= 2)
+diff --git man-db-2.7.5/src/manconv_main.c man-db-fixed/src/manconv_main.c
+index 166a2b8..4e700e9 100644
+--- man-db-2.7.5/src/manconv_main.c
++++ man-db-fixed/src/manconv_main.c
+@@ -105,9 +105,6 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state)
+ return 0;
+ case 't':
+ to_code = xstrdup (arg);
+- if (!strstr (to_code, "//"))
+- to_code = appendstr (to_code, "//TRANSLIT",
+- NULL);
+ return 0;
+ case 'd':
+ debug_level = 1;
+diff --git man-db-2.7.5/src/whatis.c man-db-fixed/src/whatis.c
+index 39aa093..0a25c92 100644
+--- man-db-2.7.5/src/whatis.c
++++ man-db-fixed/src/whatis.c
+@@ -948,7 +948,7 @@ int main (int argc, char *argv[])
+ display_seen = hashtable_create (&null_hashtable_free);
+
+ #ifdef HAVE_ICONV
+- locale_charset = xasprintf ("%s//IGNORE", get_locale_charset ());
++ locale_charset = xstrdup (get_locale_charset ());
+ conv_to_locale = iconv_open (locale_charset, "UTF-8");
+ free (locale_charset);
+ #endif /* HAVE_ICONV */
diff --git a/user/marble/APKBUILD b/user/marble/APKBUILD
new file mode 100644
index 000000000..559048a60
--- /dev/null
+++ b/user/marble/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=marble
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Free, open-source map and virtual globe"
+url="https://marble.kde.org/"
+arch="all"
+options="!check" # Test suite requires package to be already installed.
+license="LGPL-2.1-only GPL-2.0-only"
+depends="shared-mime-info"
+depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtsvg-dev"
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev zlib-dev
+ qt5-qtwebkit-dev krunner-dev kcoreaddons-dev kwallet-dev knewstuff-dev
+ kio-dev kparts-dev kcrash-dev ki18n-dev phonon-dev plasma-framework-dev
+ "
+install=""
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs"
+source="http://download.kde.org/stable/applications/$pkgver/src/marble-$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 \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a8641e0d380f666b5402d83ccf01772442d8df0bb06d5de82f43abc56c19f544a1a3f148889f297758ae0ac6654e90cfdeac7a97b05be49c61985eb83bf7194f marble-17.12.2.tar.xz"
diff --git a/user/milou/APKBUILD b/user/milou/APKBUILD
index 7d9acf61d..a8f6b492d 100644
--- a/user/milou/APKBUILD
+++ b/user/milou/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=milou
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="Search and launch plasmoid"
url="https://www.kde.org/"
@@ -13,8 +13,7 @@ makedepends="kcoreaddons-dev ki18n-dev kdeclarative-dev kservice-dev
cmake extra-cmake-modules python3 gettext-dev"
install=""
subpackages="$pkgname-lang"
-source="http://download.kde.org/stable/plasma/$pkgver/milou-$pkgver.tar.xz
- fix-test-signedness.patch"
+source="http://download.kde.org/stable/plasma/$pkgver/milou-$pkgver.tar.xz"
builddir="$srcdir/milou-$pkgver"
build() {
@@ -43,5 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b7c6d4d6d6fc1166fa816ff7e772ed339f92c35be6b888ab9fb7974e2d6f459a37e1f8f12dd4f3e836df338bc414cf233304003c9115721f86957a8528579ff0 milou-5.8.7.tar.xz
-f67b9f4040fa946ab9ededdcdc301cba969754f7b538d7b02ca73f4d72194d0eef18ff9c5963953d225604e46223d193c9f4e20df6157795a20fa5dcdd4dd5ff fix-test-signedness.patch"
+sha512sums="1ce53df971ad028432761bf17e6b9a3f3608a4bd548e8dcb33eb9d7217cb484a18944163a2a944bcdf0210ec3b909018e33be0926e847b8e391bc111a323f031 milou-5.12.2.tar.xz"
diff --git a/user/milou/fix-test-signedness.patch b/user/milou/fix-test-signedness.patch
deleted file mode 100644
index 373c67bc1..000000000
--- a/user/milou/fix-test-signedness.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- milou-5.8.7/lib/test/modeltest.cpp.old 2017-05-23 07:05:02.000000000 -0500
-+++ milou-5.8.7/lib/test/modeltest.cpp 2017-10-06 05:05:21.383062040 -0500
-@@ -451,7 +451,7 @@
- // Check that the alignment is one we know about
- QVariant textAlignmentVariant = model->data ( model->index ( 0, 0 ), Qt::TextAlignmentRole );
- if ( textAlignmentVariant.isValid() ) {
-- int alignment = textAlignmentVariant.toInt();
-+ unsigned int alignment = textAlignmentVariant.toUInt();
- QCOMPARE( alignment, ( alignment & ( Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask ) ) );
- }
-
diff --git a/user/minuet/APKBUILD b/user/minuet/APKBUILD
new file mode 100644
index 000000000..8725696b6
--- /dev/null
+++ b/user/minuet/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=minuet
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Music education software"
+url="https://minuet.kde.org/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
+ qt5-qtquickcontrols2-dev qt5-qtsvg-dev kcoreaddons-dev ki18n-dev
+ kcrash-dev kdoctools-dev fluidsynth-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/minuet-$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 \
+ -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="e9c45baf8d6ebc6055ca9d80ec5592916015307c8f961bc9fb204c3ecf843775854eeb3fb21284cf81f2493fae61c00507e119bd1d8aa6f68ffe7a0d6d67846b minuet-17.12.2.tar.xz"
diff --git a/user/ncompress/APKBUILD b/user/ncompress/APKBUILD
index 527f0d610..dafd49d3a 100644
--- a/user/ncompress/APKBUILD
+++ b/user/ncompress/APKBUILD
@@ -2,23 +2,26 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ncompress
pkgver=4.2.4.4
-pkgrel=0
+pkgrel=1
pkgdesc="A fast, simple LZW compressor"
url="https://github.com/vapier/ncompress"
arch="all"
license="PD"
options="!check" # No test suite.
subpackages="$pkgname-doc"
-source="http://downloads.sourceforge.net/ncompress/ncompress-$pkgver.tar.gz"
+source="http://downloads.sourceforge.net/ncompress/ncompress-$pkgver.tar.gz
+ fix-9bit-compress.patch"
build() {
cd "$builddir"
- make BINDIR=/usr/bin MANDIR=/usr/share/man/man1
+ make
}
package() {
cd "$builddir"
- make DESTDIR="$pkgdir" BINDIR=/usr/bin MANDIR=/usr/share/man/man1 install
+ install -D -m755 "$builddir"/compress "$pkgdir"/usr/bin/compress
+ install -D -m644 "$builddir"/compress.1 "$pkgdir"/usr/share/man/man1/compress.1
}
-sha512sums="abc7bd96daaab0b83d5ca18ef4b8b4c6528632653a0882a4e0eda4fb3f99e23aae60ee30193e79104ea2ac8fb5816ac3b0bdebb08322db6bde6b8ef1639527be ncompress-4.2.4.4.tar.gz"
+sha512sums="abc7bd96daaab0b83d5ca18ef4b8b4c6528632653a0882a4e0eda4fb3f99e23aae60ee30193e79104ea2ac8fb5816ac3b0bdebb08322db6bde6b8ef1639527be ncompress-4.2.4.4.tar.gz
+b2e897679234f391fa3cf4d5b55a3894424cca632a3b16303b0085e908808bc72b66e6a9df3e56e1a26eac79340c0901f7e6ef2378cc61b710e93194d345c2ea fix-9bit-compress.patch"
diff --git a/user/ncompress/fix-9bit-compress.patch b/user/ncompress/fix-9bit-compress.patch
new file mode 100644
index 000000000..3fcd13d2f
--- /dev/null
+++ b/user/ncompress/fix-9bit-compress.patch
@@ -0,0 +1,20 @@
+--- old/compress42.c 1992-10-28 06:10:53.000000000 -0500
++++ fixed/compress42.c 2003-11-12 19:42:49.000000000 -0500
+@@ -228,7 +228,7 @@
+ #define FIRST 257 /* first free entry */
+ #define CLEAR 256 /* table clear output code */
+
+-#define INIT_BITS 9 /* initial number of bits/code */
++#define INIT_BITS 8 /* initial number of bits/code */
+
+ #ifndef SACREDMEM
+ /*
+@@ -819,7 +819,7 @@
+ nextarg: continue;
+ }
+
+- if (maxbits < INIT_BITS) maxbits = INIT_BITS;
++ if (maxbits <= INIT_BITS) maxbits = INIT_BITS + 1;
+ if (maxbits > BITS) maxbits = BITS;
+
+ if (*filelist != NULL) \ No newline at end of file
diff --git a/user/okteta/APKBUILD b/user/okteta/APKBUILD
index 350d917c7..1b0eccd73 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Graphical hex/binary editor"
url="https://www.kde.org/applications/utilities/okteta/"
@@ -11,7 +11,8 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtscript-dev kio-dev
kbookmarks-dev kcodecs-dev kcompletion-dev kconfigwidgets-dev ki18n-dev
kcrash-dev kdbusaddons-dev kdoctools-dev kiconthemes-dev kcmutils-dev
- knewstuff-dev kparts-dev kservice-dev kwidgetsaddons-dev kxmlgui-dev"
+ knewstuff-dev kparts-dev kservice-dev kwidgetsaddons-dev kxmlgui-dev
+ qca-dev shared-mime-info"
install=""
subpackages="$pkgname-doc $pkgname-lang"
source="http://download.kde.org/stable/applications/$pkgver/src/okteta-$pkgver.tar.xz"
@@ -35,7 +36,8 @@ build() {
check() {
cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ local _skip="libkasten-core-testdocumenttest|libkasten-core-documentmanagertest|oktetakasten-document-bytearraydocumenttest|kpart-oktetaparttest"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E "($_skip)"
}
package() {
@@ -43,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="83647b379f6ba2d7c5c10b8ba40162811f35883df099bb296a3a0fde25d2f49863c786df59aecc12088e1ed31aa72b67f0a10c929f49f1bd3869b0fba51ce2c2 okteta-17.08.2.tar.xz"
+sha512sums="f7a113c2b65761ed2edd538491f0bcf2e47aebdc5ba5a4ed8d583a33e00ce57ed86918b57ca5dac806f68573d63ebeca3fcde74564c2c09f5bd1a94bbd024d8c okteta-17.12.2.tar.xz"
diff --git a/user/okular/APKBUILD b/user/okular/APKBUILD
new file mode 100644
index 000000000..a47db7dff
--- /dev/null
+++ b/user/okular/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=okular
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Universal document reader developed by KDE"
+url="https://okular.kde.org/"
+arch="all"
+license="GPL-2.0+ LGPL-2.0+"
+depends="kirigami2"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
+ qt5-qtdeclarative-dev karchive-dev kbookmarks-dev kcompletion-dev
+ kconfigwidgets-dev kcoreaddons-dev kdoctools-dev kiconthemes-dev
+ kio-dev kjs-dev kparts-dev kwallet-dev kwindowsystem-dev khtml-dev
+ threadweaver-dev kactivities-dev poppler-qt5-dev tiff-dev qca-dev
+ libjpeg-turbo-dev kpty-dev kirigami2-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/okular-$pkgver.tar.xz"
+builddir="$srcdir/okular-$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 -D_GNU_SOURCE" \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ # All other tests require X11
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -R '^shelltest'
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4bd6eda7a5ebe3b0fb4a0e4518a321e2e8ecb74984c89085eba24afe76828f0f7af16f066519b52926edbb593965ce294dc28d1281200e9d284a6b630e92da2a okular-17.12.2.tar.xz"
diff --git a/user/otter-browser/APKBUILD b/user/otter-browser/APKBUILD
index 6986cc9f6..ec0d59264 100644
--- a/user/otter-browser/APKBUILD
+++ b/user/otter-browser/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=otter-browser
-pkgver=0.9.93
+pkgver=0.9.96
pkgrel=0
pkgdesc="A free, open browser focused on user privacy"
url="https://otter-browser.org/"
@@ -14,7 +14,7 @@ makedepends="cmake qt5-qtbase-dev qt5-qttools-dev openssl-dev gstreamer-dev
install=""
langdir="/usr/share/otter-browser/locale"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://sourceforge.net/projects/$pkgname/files/$pkgname-rc3/$pkgname-$pkgver.tar.bz2"
+source="https://sourceforge.net/projects/$pkgname/files/$pkgname-rc6/$pkgname-$pkgver.tar.bz2"
build() {
cd "$builddir"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9a45c8594c3de91e6ca317cbfe440c43be470d6364201cced5093ec233a24f194d89918e886603453de433636915f8c80f6144a69058aa54674a188fda716e80 otter-browser-0.9.93.tar.bz2"
+sha512sums="4ba915226360ae1d6f5fd9bf5ea502ea9f2104594536eff0cfe57f162fb769158b03da2da9e5c0ce757af8fafa6f379ce81391b648bf4253c2bb35f12c3620b3 otter-browser-0.9.96.tar.bz2"
diff --git a/user/oxygen/APKBUILD b/user/oxygen/APKBUILD
index a10fde8ba..21673f969 100644
--- a/user/oxygen/APKBUILD
+++ b/user/oxygen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=oxygen
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="'Oxygen' theme for KDE"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9c7d53f2da76cc34272977d23856fa527a540aefff8308513603338aa5a48c59654d69e60da11b528ccd335d58b71159b36646e4f8cddb24937c36ef5bf9cf6d oxygen-5.8.7.tar.xz"
+sha512sums="6c753eaf27e6507d0bbc8b5f8b5a4a30263bb5577924a30f21268657696d56908a2fc75827311285ce323ad97b65b4e4e793f8df1ff881838c50a1070b46db13 oxygen-5.12.2.tar.xz"
diff --git a/user/papirus-icons/APKBUILD b/user/papirus-icons/APKBUILD
index e64363cfa..f506865a1 100644
--- a/user/papirus-icons/APKBUILD
+++ b/user/papirus-icons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=papirus-icons
-pkgver=20171007
+pkgver=20180214
pkgrel=0
pkgdesc="Material, flat style icon theme"
url="https://store.kde.org/p/1166289/"
@@ -11,22 +11,13 @@ options="!check" # Icon set.
depends=""
makedepends=""
install=""
-subpackages="$pkgname-light $pkgname-dark $pkgname-adapta e$pkgname:elementary"
-source="https://dl.opendesktop.org/api/files/download/id/1507885652/papirus-icon-theme-$pkgver.tar.gz"
-builddir="$srcdir"
-
-build() {
- cd "$builddir"
-}
+subpackages="$pkgname-light $pkgname-dark $pkgname-adapta"
+source="$pkgname-$pkgver.tar.gz::https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/$pkgver.tar.gz"
+builddir="$srcdir/papirus-icon-theme-$pkgver"
package() {
cd "$builddir"
- mkdir -p "$pkgdir"/usr/share/icons
-
- for iconset in Papirus Papirus-Adapta Papirus-Adapta-Nokto Papirus-Dark \
- Papirus-Light ePapirus; do
- mv "$builddir"/$iconset "$pkgdir"/usr/share/icons/
- done
+ make IGNORE="ePapirus" DESTDIR="$pkgdir" install
}
light() {
@@ -51,10 +42,4 @@ adapta() {
"$subpkgdir"/usr/share/icons/
}
-elementary() {
- pkgdesc="$pkgdesc (elementaryOS style)"
- mkdir -p "$subpkgdir"/usr/share/icons
- mv "$pkgdir"/usr/share/icons/ePapirus "$subpkgdir"/usr/share/icons/
-}
-
-sha512sums="82830fa69cbc5113728c3b390bbe3e4cbb270cdd6d386951efdc23c7495aa187b330954ccbaa67103e8f15c0e1367ad4198c2cbd2fcba01ed044bb490bf9e4c6 papirus-icon-theme-20171007.tar.gz"
+sha512sums="e3cff11cb4e0ad71ff5c44da9ef5135ce7fc2f4bea5e95f4c42963868ef7fce19daf45bc7f5649186bbedeb683d8a56a48f859cda17acacad7c3fbf35fdcd291 papirus-icons-20180214.tar.gz"
diff --git a/user/pax/APKBUILD b/user/pax/APKBUILD
deleted file mode 100644
index d27e68633..000000000
--- a/user/pax/APKBUILD
+++ /dev/null
@@ -1,41 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=pax
-pkgver=20161104
-pkgrel=0
-pkgdesc="Portable Archive eXchange, the POSIX archival tool"
-url="https://www.mirbsd.org/pax.htm"
-arch="all"
-license="BSD"
-depends_dev="libbsd-dev fts-dev"
-makedepends="$depends_dev"
-subpackages="$pkgname-doc"
-source="http://ftp.debian.org/debian/pool/main/p/$pkgname/${pkgname}_$pkgver.orig.tar.xz
- needed-header.patch
- pax-20160306-glibc-to-linux.patch"
-builddir="$srcdir/$pkgname"
-
-build() {
- cd "$builddir"
- ${CC} ${CPPFLAGS} ${CFLAGS} \
- -DHAVE_STRLCPY -DHAVE_STRMODE -DLONG_OFF_T -DHAVE_LINKAT -DHAVE_SYS_SYSMACROS_H -D_BSD_SOURCE \
- -DPAX_SAFE_PATH=\"/bin:/usr/bin:/usr/local/bin\" \
- $(pkgconf --cflags libbsd) \
- -Wall ${LDFLAGS} *.c -o $pkgname $(pkgconf --libs libbsd) $(pkgconf --libs libfts)
-}
-
-package() {
- cd "$builddir"
-
- install -Dm755 pax "$pkgdir"/usr/bin/pax
- ln -s pax "$pkgdir"/usr/bin/paxcpio
- ln -s pax "$pkgdir"/usr/bin/paxtar
-
- install -Dm644 pax.1 "$pkgdir"/usr/share/man/man1/pax.1
- install -m644 cpio.1 "$pkgdir"/usr/share/man/man1/paxcpio.1
- install -m644 tar.1 "$pkgdir"/usr/share/man/man1/paxtar.1
-}
-
-sha512sums="4ca17a412fde5c0de3ff9820a9a5c7e210e015ccddcc791f0c0936f45471dbbe1e96a97515e65d21e5d36a61b14e920eb3a9181ffeabad801663c812ee084c15 pax_20161104.orig.tar.xz
-f494daeebca58bfc0875138e3b01e1d7b74d982b574b0d06d18244046cd0c0b99d8039a629391a578657489346f580c4eaf347ee43ba78eb1058fadebffef497 needed-header.patch
-96d018bd1be2b0d22c9c5e11a92d8cf7ef9bc72d1b13686e572aa15935f2fda9d507baf1e0eb916fec776c2f9d7bab458c203cab64446eed34b70f544109d1d7 pax-20160306-glibc-to-linux.patch"
diff --git a/user/pax/needed-header.patch b/user/pax/needed-header.patch
deleted file mode 100644
index c91d4dafa..000000000
--- a/user/pax/needed-header.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- pax/pax.h.old 2016-10-25 19:05:17.000000000 +0000
-+++ pax/pax.h 2017-07-29 14:52:09.258899166 +0000
-@@ -41,6 +41,8 @@
- #ifndef MIRCPIO_PAX_H
- #define MIRCPIO_PAX_H "$MirOS: src/bin/pax/pax.h,v 1.17 2016/10/25 19:04:26 tg Exp $"
-
-+#include <sys/types.h>
-+
- /*
- * BSD PAX global data structures and constants.
- */
diff --git a/user/pax/pax-20160306-glibc-to-linux.patch b/user/pax/pax-20160306-glibc-to-linux.patch
deleted file mode 100644
index f864729cc..000000000
--- a/user/pax/pax-20160306-glibc-to-linux.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- pax/cache.c.old 2016-03-06 08:12:52.000000000 -0600
-+++ pax/cache.c 2016-04-17 13:01:26.461307830 -0500
-@@ -195,7 +195,7 @@
- * No entry for this uid, we will add it
- */
- if (!pwopn) {
--#if defined(__GLIBC__)
-+#if defined(__GLIBC__) || defined(__linux__)
- setpwent();
- #elif !defined(__INTERIX)
- setpassent(1);
-@@ -265,7 +265,7 @@
- * No entry for this gid, we will add it
- */
- if (!gropn) {
--#if defined(__GLIBC__)
-+#if defined(__GLIBC__) || defined(__linux__)
- setgrent();
- #elif !defined(__INTERIX) && !defined(__CYGWIN__)
- setgroupent(1);
-@@ -336,7 +336,7 @@
- }
-
- if (!pwopn) {
--#if defined(__GLIBC__)
-+#if defined(__GLIBC__) || defined(__linux__)
- setpwent();
- #elif !defined(__INTERIX)
- setpassent(1);
-@@ -403,7 +403,7 @@
- }
-
- if (!gropn) {
--#if defined(__GLIBC__)
-+#if defined(__GLIBC__) || defined(__linux__)
- setgrent();
- #elif !defined(__INTERIX) && !defined(__CYGWIN__)
- setgroupent(1);
diff --git a/user/perl-test-command/APKBUILD b/user/perl-test-command/APKBUILD
new file mode 100644
index 000000000..e70865521
--- /dev/null
+++ b/user/perl-test-command/APKBUILD
@@ -0,0 +1,50 @@
+# Automatically generated by apkbuild-cpan, template 1
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Kiyoshi Aman <aerdan@adelielinux.org>
+pkgname=perl-test-command
+_pkgreal=Test-Command
+pkgver=0.11
+pkgrel=1
+pkgdesc="Perl module for Test-Command"
+url="http://search.cpan.org/dist/Test-Command/"
+arch="noarch"
+license="GPL PerlArtistic"
+cpandepends=""
+cpanmakedepends="perl-module-build"
+depends="$cpandepends"
+makedepends="perl-dev $cpanmakedepends"
+subpackages="$pkgname-doc"
+source="http://search.cpan.org/CPAN/authors/id/D/DA/DANBOO/$_pkgreal-$pkgver.tar.gz"
+
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ if [ -e Build.PL ]; then
+ perl Build.PL installdirs=vendor
+ else
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ fi
+}
+
+build() {
+ cd "$builddir"
+ 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
+}
+
+md5sums="9ab83c4695961dbe92cd86efe08f0634 Test-Command-0.11.tar.gz"
+sha256sums="28a3fc6fea73a19f563f11bd0f28186756d4c74207be6deacaad26d2081b9533 Test-Command-0.11.tar.gz"
+sha512sums="79a8f41132b965ad4f6e8b4d97f8fb6181a1e394bcf8825abda2c8ee12dd5f6ef8d7c69df84d306c3841bb516213742c4a0a43c2f3d6b39ce6e163d6d77f45f8 Test-Command-0.11.tar.gz"
diff --git a/user/phonon-vlc/APKBUILD b/user/phonon-vlc/APKBUILD
new file mode 100644
index 000000000..5d305485a
--- /dev/null
+++ b/user/phonon-vlc/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=phonon-vlc
+pkgver=0.10.1
+pkgrel=0
+pkgdesc="Phonon backend utilising VLC for media playback"
+url="https://www.kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends="vlc"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev phonon-dev vlc-dev"
+install=
+subpackages=""
+source="https://download.kde.org/stable/phonon/phonon-backend-vlc/$pkgver/phonon-backend-vlc-$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 \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DPHONON_BUILD_PHONON4QT5=True \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="fa94298a8236c29f792285d3f288140d244e0eacba02511a32ee56b5bace50f92a93a714b5c44dc5bafb15b2a9d5ae792231e78dce8ca1a45ab3a328492911df phonon-backend-vlc-0.10.1.tar.xz"
diff --git a/user/phonon/APKBUILD b/user/phonon/APKBUILD
index 07d91d7d5..03b8bffab 100644
--- a/user/phonon/APKBUILD
+++ b/user/phonon/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=phonon
-pkgver=4.9.1
+pkgver=4.10.0
pkgrel=0
pkgdesc="Qt library for playing multimedia files"
url="https://phonon.kde.org/"
@@ -54,4 +54,4 @@ designer() {
rmdir "$pkgdir"/usr/lib/qt5/plugins || true # Never mind
}
-sha512sums="a1741765071a625d9b9073d9ad1571b91cf5bfce2223bd1b034828d02dc52624587a6ec5352f3702df79f6e4201007596843fbcb9f15c9b489a858200787d728 phonon-4.9.1.tar.xz"
+sha512sums="6074c7c33edcdfeed8a6199024f1faedebe09652cf5d01075f2d97146b54c4269924b69ca8298e2341c0cf6ca4d18f930a59a937697f6f282b6de8e976d097c4 phonon-4.10.0.tar.xz"
diff --git a/user/plasma-desktop/APKBUILD b/user/plasma-desktop/APKBUILD
index a23600c83..d53e6825a 100644
--- a/user/plasma-desktop/APKBUILD
+++ b/user/plasma-desktop/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=plasma-desktop
-pkgver=5.8.7.1
-pkgrel=3
+pkgver=5.12.2
+pkgrel=0
pkgdesc="Modern, functional, integrated libre desktop environment"
url="https://www.kde.org/info/plasma-desktop"
arch="all"
@@ -26,8 +26,8 @@ depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtx11extras-dev
makedepends="$depends_dev cmake extra-cmake-modules xkeyboard-config"
install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="http://download.kde.org/Attic/plasma/5.8.7/plasma-desktop-$pkgver.tar.xz"
-builddir="$srcdir/$pkgname-5.8.7"
+source="http://download.kde.org/stable/plasma/5.12.2/plasma-desktop-$pkgver.tar.xz"
+builddir="$srcdir/$pkgname-5.12.2"
build() {
cd "$builddir"
@@ -55,4 +55,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="da5d7a5e815f4e5895e93788f1634cd624bf385303599d6db9145f185b1429b24614d5c42e55d15b1202d5233b1c52db8bcb7fa6a0317ac1ebaa6b56020f228d plasma-desktop-5.8.7.1.tar.xz"
+sha512sums="9d0497269451e39464a0e637fafb3e7830801be0895552a2275daf81cd6d372fded790ced806c2b09f48e0b28ac0940fe8d6ca2bf2789103321dcf35f4871e5c plasma-desktop-5.12.2.tar.xz"
diff --git a/user/plasma-framework/APKBUILD b/user/plasma-framework/APKBUILD
index 0f8cb9beb..aa53087c2 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.41.0
+pkgver=5.43.0
pkgrel=1
pkgdesc="Frameworks for the KDE Plasma 5 desktop environment"
url="https://www.kde.org/"
@@ -13,7 +13,7 @@ depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtsvg-dev kactivities-dev
karchive-dev kconfigwidgets-dev kdbusaddons-dev kdeclarative-dev kio-dev
kconfig-dev kglobalaccel-dev kguiaddons-dev kiconthemes-dev ki18n-dev
kservice-dev kwindowsystem-dev knotifications-dev kpackage-dev
- kwayland-dev"
+ kwayland-dev qt5-qtquickcontrols2-dev kirigami2-dev"
makedepends="$depends_dev cmake extra-cmake-modules python3 gettext-dev doxygen
kdoctools-dev libx11-dev libxcb-dev graphviz qt5-qttools-dev"
install=""
@@ -48,4 +48,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fb94919f85393fd09a5a926a093bca80c243260adcb9dcbcee822295bc5773bf176cdbcb4b554473f3413f95ca5be061fe5e5b17d4949947f2bf510894a7a67d plasma-framework-5.41.0.tar.xz"
+sha512sums="e86d8ba66edd21712bdaba0d2e86c3a2618b8925115022d3f614d5d0bcc7b9f9c1b33a4d09ca090555c508d316ba7341d85d3f515698982e014d1e5c3d1c7fcc plasma-framework-5.43.0.tar.xz"
diff --git a/user/plasma-integration/APKBUILD b/user/plasma-integration/APKBUILD
index 8e5452518..3fe5c72d5 100644
--- a/user/plasma-integration/APKBUILD
+++ b/user/plasma-integration/APKBUILD
@@ -1,18 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=plasma-integration
-pkgver=5.8.7
-pkgrel=2
+pkgver=5.12.2
+pkgrel=0
pkgdesc="Qt platform theme plugin for Plasma"
url="https://www.kde.org/"
arch="all"
license="LGPL-2.1"
options="!check" # Times out, requires X11 desktop.
depends="breeze ttf-noto"
-depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev kconfig-dev kconfigwidgets-dev
- ki18n-dev kiconthemes-dev kio-dev knotifications-dev kwayland-dev
- kwidgetsaddons-dev kwindowsystem-dev breeze-dev libxcursor-dev"
-makedepends="$depends_dev cmake extra-cmake-modules python3 gettext-dev"
+makedepends="cmake extra-cmake-modules python3 gettext-dev qt5-qtbase-dev
+ qt5-qtx11extras-dev kconfig-dev kconfigwidgets-dev ki18n-dev kio-dev
+ kiconthemes-dev knotifications-dev kwayland-dev kwidgetsaddons-dev
+ kwindowsystem-dev breeze-dev libxcursor-dev qt5-qtquickcontrols2-dev"
install=""
subpackages="$pkgname-lang"
source="http://download.kde.org/stable/plasma/$pkgver/plasma-integration-$pkgver.tar.xz"
@@ -46,4 +46,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="04e4528a59f916d9fed8d083b699711df62a504aada40b71607fa10fd51074aae63b163eca2c4893fc07bf86718a567a9047b61874da6eea282993e25bf5c919 plasma-integration-5.8.7.tar.xz"
+sha512sums="19b3ad0a47631b8c61c4b23ba6d88007d105742ed1223ef027d9e72d8549d51dc1473499300967471224bcd43bdc205a39650cdc4a551bf8e006af5c271b62d4 plasma-integration-5.12.2.tar.xz"
diff --git a/user/plasma-workspace/APKBUILD b/user/plasma-workspace/APKBUILD
index c6b4dc276..8da9a35ac 100644
--- a/user/plasma-workspace/APKBUILD
+++ b/user/plasma-workspace/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=plasma-workspace
-pkgver=5.8.7
-pkgrel=8
+pkgver=5.12.2
+pkgrel=0
pkgdesc="KDE Plasma 5 workspace"
url="https://www.kde.org/plasma-desktop"
arch="all"
@@ -23,15 +23,11 @@ depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtscript-dev kwallet-dev
kcrash-dev kglobalaccel-dev kdbusaddons-dev kitemmodels-dev kdesu-dev
kidletime-dev kwayland-dev kjsembed-dev kxmlrpcclient-dev kholidays-dev
libksysguard-dev kpackage-dev baloo-dev kwin-dev libdbusmenu-qt-dev
- ktexteditor-dev prison-dev"
+ ktexteditor-dev prison-dev libxtst-dev"
makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev"
install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/Attic/plasma/$pkgver/plasma-workspace-$pkgver.tar.xz
- plasma-workspace-5.8-cmake-update.patch
- plasma-workspace-5.8.7-disable-broken-test.patch
- plasma-workspace-5.8-honour-uint.patch
- fix-crash-on-wallpaper-change.patch
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-workspace-$pkgver.tar.xz
"
builddir="$srcdir/plasma-workspace-$pkgver"
@@ -61,8 +57,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ba35a050384e0bf410097027bfb70ca7594cd5352fd6470228d537f4e876ec72ec26bac3be9a6750f306b1d2937ff53c267c2246f191c93a13972a0cf33b4faf plasma-workspace-5.8.7.tar.xz
-3d7cfb1c7c54bcbca47c5c01497c776d54d1e2327bc0a3777cfaf001f44ec7c1863f15ab0586c00db6d7194f759b91d0a86e47ae99e7fa23782dd7deda264e47 plasma-workspace-5.8-cmake-update.patch
-2151dab30716e0b2b6a9146fd6262f4f134884961bebe9cf9baee269f35b1b3955ed07dcee2602b5adc2fc93aa15d37cb72d6983f026a2b504feb451d944d965 plasma-workspace-5.8.7-disable-broken-test.patch
-48b4c448a4e964e61f25fa751fbc67f6cfce0e792139a124a70fa5c07f8b1b1a1c51fd5652679a3c46ac997c2dda3df476e8c8ebfdc6a08ece4f2e79282d81a3 plasma-workspace-5.8-honour-uint.patch
-52ac2f37a7e1fde97385a372a4c198b573fb51fe1334bddf340c034ba0fbd2a97174d9bab9f9c8446048deb3a2c9ea3c571b0adcdb1f710b513b311c824ab88a fix-crash-on-wallpaper-change.patch"
+sha512sums="5e4d5386e1d4fc0fa81303c22b1570da8b6d82f8cf47a7137f7edbe1647ad5575ce36465010a7433183e29f4704cb17a40ff869d7df7d6706ba35ccc79bd190e plasma-workspace-5.12.2.tar.xz"
diff --git a/user/plasma-workspace/fix-crash-on-wallpaper-change.patch b/user/plasma-workspace/fix-crash-on-wallpaper-change.patch
deleted file mode 100644
index 078a48e3a..000000000
--- a/user/plasma-workspace/fix-crash-on-wallpaper-change.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From a44d84ef47492ca60ee608996b5ab1f2849ef16e Mon Sep 17 00:00:00 2001
-From: David Edmundson <kde@davidedmundson.co.uk>
-Date: Mon, 14 Aug 2017 10:04:19 +0100
-Subject: Don't change fillMode of image just before deleting it
-
-It is still set for when a source is applied for the next
-transistion.
-
-Summary:
-This saves evaluating a new paintedSize and doing a bunch of evaluations
-which are not used.
-
-More importantly it works round a Qt animation crash.
-
-fadeAnim.running is bound to otherImage.status !== loading
-
-with the intention of delaying animations until the images are really
-loaded.
-
-By setting the fill mode and then the source, we go to loading and back,
-effectively restarting the animation from within the animation.
-This leads to a crash.
-
-CCBUG: 381105
-
-Test Plan:
-End user result is the same.
-
-Reviewers: #plasma, broulik, mart
-
-Reviewed By: #plasma, broulik, mart
-
-Subscribers: plasma-devel
-
-Tags: #plasma
-
-Differential Revision: https://phabricator.kde.org/D7248
----
- wallpapers/image/imagepackage/contents/ui/main.qml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/wallpapers/image/imagepackage/contents/ui/main.qml b/wallpapers/image/imagepackage/contents/ui/main.qml
-index fc22176..0539f37 100644
---- a/wallpapers/image/imagepackage/contents/ui/main.qml
-+++ b/wallpapers/image/imagepackage/contents/ui/main.qml
-@@ -193,8 +193,8 @@ Item {
- }
- ScriptAction {
- script: {
-- otherImage.fillMode = fillMode;
- otherImage.source = "";
-+ otherImage.fillMode = fillMode;
- }
- }
- }
---
-cgit v0.11.2
-
diff --git a/user/plasma-workspace/plasma-workspace-5.8-cmake-update.patch b/user/plasma-workspace/plasma-workspace-5.8-cmake-update.patch
deleted file mode 100644
index e77731eb5..000000000
--- a/user/plasma-workspace/plasma-workspace-5.8-cmake-update.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 052ab380b6cb7f27da19ba0937bc2563b175a19b Mon Sep 17 00:00:00 2001
-From: David Faure <faure@kde.org>
-Date: Mon, 17 Jul 2017 00:07:47 +0200
-Subject: Fix compilation with current cmake (git branch release).
-
-I don't see what the private/ in front of the moc_ filenames was for anyway.
----
- shell/containmentconfigview.cpp | 2 +-
- shell/currentcontainmentactionsmodel.cpp | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/shell/containmentconfigview.cpp b/shell/containmentconfigview.cpp
-index 4d107be..8d6df0d 100644
---- a/shell/containmentconfigview.cpp
-+++ b/shell/containmentconfigview.cpp
-@@ -245,4 +245,4 @@ void ContainmentConfigView::syncWallpaperObjects()
- m_currentWallpaperConfig = static_cast<KDeclarative::ConfigPropertyMap *>(wallpaperGraphicsObject->property("configuration").value<QObject *>());
- }
-
--#include "private/moc_containmentconfigview.cpp"
-+#include "moc_containmentconfigview.cpp"
-diff --git a/shell/currentcontainmentactionsmodel.cpp b/shell/currentcontainmentactionsmodel.cpp
-index 08317ed..521d1c9 100644
---- a/shell/currentcontainmentactionsmodel.cpp
-+++ b/shell/currentcontainmentactionsmodel.cpp
-@@ -275,4 +275,4 @@ void CurrentContainmentActionsModel::save()
- }
- }
-
--#include "private/moc_currentcontainmentactionsmodel.cpp"
-+#include "moc_currentcontainmentactionsmodel.cpp"
---
-cgit v0.11.2
-
diff --git a/user/plasma-workspace/plasma-workspace-5.8-honour-uint.patch b/user/plasma-workspace/plasma-workspace-5.8-honour-uint.patch
deleted file mode 100644
index a5e16d7b3..000000000
--- a/user/plasma-workspace/plasma-workspace-5.8-honour-uint.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 2f22f0a935b69f2f2a866050be5b905f9df4e4b6 Mon Sep 17 00:00:00 2001
-From: Marco Martin <notmart@gmail.com>
-Date: Mon, 20 Mar 2017 16:59:25 +0100
-Subject: fix compilation with old gcc
-
-Summary:
-gcc 4.8.5 (opensuse leap) fails building modeltest with
-CMakeFiles/testHistoryModel.dir/modeltest.cpp.o: In function `ModelTest::data()':
-modeltest.cpp:(.text+0x5a57): undefined reference to `bool QTest::qCompare<int, unsigned int>(int const&, unsigned int const&, char const*, char const*, char const*, int)'
-
-Test Plan:
-builds fine now
-same thing should be done to modeltest usage in kwin
-
-Reviewers: #plasma, davidedmundson
-
-Reviewed By: #plasma, davidedmundson
-
-Subscribers: davidedmundson, plasma-devel
-
-Tags: #plasma
-
-Differential Revision: https://phabricator.kde.org/D5083
----
- klipper/autotests/modeltest.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/klipper/autotests/modeltest.cpp b/klipper/autotests/modeltest.cpp
-index d42d95f..d9b70f9 100644
---- a/klipper/autotests/modeltest.cpp
-+++ b/klipper/autotests/modeltest.cpp
-@@ -453,7 +453,7 @@ void ModelTest::data()
- // Check that the alignment is one we know about
- QVariant textAlignmentVariant = model->data ( model->index ( 0, 0 ), Qt::TextAlignmentRole );
- if ( textAlignmentVariant.isValid() ) {
-- int alignment = textAlignmentVariant.toInt();
-+ unsigned int alignment = textAlignmentVariant.toUInt();
- QCOMPARE( alignment, ( alignment & ( Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask ) ) );
- }
-
---
-cgit v0.11.2
-
diff --git a/user/plasma-workspace/plasma-workspace-5.8.7-disable-broken-test.patch b/user/plasma-workspace/plasma-workspace-5.8.7-disable-broken-test.patch
deleted file mode 100644
index 362002d61..000000000
--- a/user/plasma-workspace/plasma-workspace-5.8.7-disable-broken-test.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- plasma-workspace-5.8.7/drkonqi/tests/CMakeLists.txt.old 2017-05-23 07:17:40.000000000 -0500
-+++ plasma-workspace-5.8.7/drkonqi/tests/CMakeLists.txt 2017-10-05 18:04:03.428394763 -0500
-@@ -1,5 +1,5 @@
- add_subdirectory(crashtest)
--add_subdirectory(backtraceparsertest)
-+#add_subdirectory(backtraceparsertest)
- if(KF5XmlRpcClient_FOUND)
- add_subdirectory(bugzillalibtest)
- endif()
diff --git a/user/poppler-qt5/APKBUILD b/user/poppler-qt5/APKBUILD
new file mode 100644
index 000000000..871d112a4
--- /dev/null
+++ b/user/poppler-qt5/APKBUILD
@@ -0,0 +1,48 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+
+pkgname=poppler-qt5
+_realname=poppler
+pkgver=0.56.0
+pkgrel=0
+pkgdesc="PDF rendering library based on xpdf 3.0 (Qt 5 bindings)"
+url="http://poppler.freedesktop.org/"
+arch="all"
+license="GPL"
+options="!check" # Test data not included in tarball
+subpackages="$pkgname-dev"
+makedepends="libjpeg-turbo-dev cairo-dev libxml2-dev fontconfig-dev
+ qt5-qtbase-dev poppler-dev~$pkgver lcms2-dev openjpeg-dev"
+depends=
+replaces="poppler-glib"
+depends_dev="$makedepends"
+source="http://poppler.freedesktop.org/poppler-$pkgver.tar.xz"
+
+builddir="$srcdir/$_realname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-poppler-glib \
+ --enable-cairo-output \
+ --enable-xpdf-headers \
+ --enable-libjpeg \
+ --enable-zlib \
+ --enable-poppler-qt5 \
+ --disable-utils
+ make
+}
+
+package() {
+ cd "$builddir"
+ install -D -m644 poppler-qt5.pc "$pkgdir"/usr/lib/pkgconfig/poppler-qt5.pc
+ cd qt5
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="74d2ca63afcb7e155c153b4ddc71621b7f4f2c60d4fcafd873176d5ac59fafedc35b200a22c7af2013d7f75e670a1cc23d6ba878167a02209917f8d30002d528 poppler-0.56.0.tar.xz"
diff --git a/user/prison/APKBUILD b/user/prison/APKBUILD
index 9f433fd59..694100859 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Qt Barcode library for programatically creating QR codes"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="14f952aa1c8fc289efd6ae34c3476ba44b68c3aca9169754d0b79b11114d9aef4a101a071b0da1dc46c517165626073dff6a36bd6f4b6b86a0945ae03130e960 prison-5.41.0.tar.xz"
+sha512sums="6cb086396557a7bddb4ae7bc75e8503f5f037138b6c486abf10eec681e9440a642e5fe21178005092ae537a2e7272ada33aeb17ff70a65849a7476810bae15b6 prison-5.43.0.tar.xz"
diff --git a/user/qml-box2d/APKBUILD b/user/qml-box2d/APKBUILD
new file mode 100644
index 000000000..1d06627cd
--- /dev/null
+++ b/user/qml-box2d/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qml-box2d
+pkgver=0.1.0_pre20180109
+_hash=21e57f1c0fbf6e65072c269f89d98a94ed5d7f7f
+pkgrel=0
+pkgdesc="Physics plugin for QML"
+url="https://github.com/qml-box2d/qml-box2d"
+arch="all"
+options="!check" # All tests are interactive.
+license="Zlib"
+depends=""
+makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev"
+install=""
+subpackages=""
+source="qml-box2d-$pkgver.tar.gz::https://github.com/qml-box2d/qml-box2d/archive/$_hash.tar.gz"
+builddir="$srcdir/qml-box2d-$_hash"
+
+build() {
+ cd "$builddir"
+ qmake-qt5
+ make
+}
+
+package() {
+ cd "$builddir"
+ make install INSTALL_ROOT="$pkgdir"
+}
+
+sha512sums="89a60ef138bd2790d17e1213dcdd611a8a3e763f4a0a35cdae565385868ce6957f0114c538d19f0e50fc87b660611cd65d38b8aa563f344fd5741a65eb5fed70 qml-box2d-0.1.0_pre20180109.tar.gz"
diff --git a/user/qpdfview/APKBUILD b/user/qpdfview/APKBUILD
new file mode 100644
index 000000000..7610acac0
--- /dev/null
+++ b/user/qpdfview/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=qpdfview
+pkgver=0.4.16
+pkgrel=0
+pkgdesc="A tabbed document viewer"
+url="https://launchpad.net/qpdfview"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="poppler-qt5-dev qt5-qttools-dev qt5-qtbase-dev qt5-qtsvg-dev pkgconf cups-dev gnutls-dev"
+install=""
+subpackages="$pkgname-doc"
+source="$url/trunk/$pkgver/+download/qpdfview-$pkgver.tar.gz"
+builddir="$srcdir/$pkgname-$pkgver"
+options="!check" # No test suite.
+
+build() {
+ cd "$builddir"
+ lrelease-qt5 qpdfview.pro
+ qmake-qt5 CONFIG+="without_ps without_djvu" qpdfview.pro
+ make
+}
+
+package() {
+ cd "$builddir"
+ make INSTALL_ROOT="$pkgdir" install
+}
+
+sha512sums="d3ac05fc51d48533e44e58cd19e5d222a8bfbc9da4df02ece6a405d2fdd3346eb4614816ae91e89facf28e107b920ff3ce7b2ccc8c9b7832ae2595ef70d65584 qpdfview-0.4.16.tar.gz"
diff --git a/user/qt5-qtquickcontrols2/APKBUILD b/user/qt5-qtquickcontrols2/APKBUILD
index e659b97bd..c4f4579a0 100644
--- a/user/qt5-qtquickcontrols2/APKBUILD
+++ b/user/qt5-qtquickcontrols2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtquickcontrols2
-pkgver=5.9.1
+pkgver=5.9.3
pkgrel=0
pkgdesc="Qt5 - QtQuick controls 2.0"
url="http://qt-project.org/"
@@ -35,4 +35,4 @@ package() {
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="277a56adde27f2552cdc392f9c1f312104887624c0ecc6b3e465b61d17f01ea63bd9bcff45e00903dc3b53e6bcb211ac41fd28702fa72f48db35dfacc2d072e4 qtquickcontrols2-opensource-src-5.9.1.tar.xz"
+sha512sums="34bec1d3c68eb86ff078fded6d19f463ee78f4929adae54beb2a1c0b1dc3f5b1a7e73210ac05e3a7e3391919c37892dde4aff88cf20e2fb148cb2a03401856ee qtquickcontrols2-opensource-src-5.9.3.tar.xz"
diff --git a/user/qt5-qtsensors/APKBUILD b/user/qt5-qtsensors/APKBUILD
new file mode 100644
index 000000000..9359d02f8
--- /dev/null
+++ b/user/qt5-qtsensors/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qt5-qtsensors
+pkgver=5.9.3
+pkgrel=0
+pkgdesc="Qt5 - Sensor library"
+url="http://qt-project.org/"
+arch="all"
+license="LGPLv2 with exceptions or GPLv3 with exceptions"
+options="!check"
+depends=""
+makedepends="qt5-qtbase-dev"
+install=""
+subpackages="$pkgname-dev"
+
+_ver=${pkgver/_/-}
+_ver=${_ver/beta0/beta}
+_ver=${_ver/rc0/rc}
+_V=${_ver/rc/RC}
+case $pkgver in
+*_beta*|*_rc*) _rel=development_releases;;
+*) _rel=official_releases;;
+esac
+
+source="http://download.qt-project.org/$_rel/qt/${pkgver%.*}/$_ver/submodules/qtsensors-opensource-src-$_V.tar.xz"
+
+builddir="$srcdir"/qtsensors-opensource-src-$_V
+build() {
+ cd "$builddir"
+ qmake-qt5 && make
+}
+
+package() {
+ cd "$builddir"
+ make install INSTALL_ROOT="$pkgdir"
+}
+
+sha512sums="848184de2c914c0240f3ecffe96ab267fb24693d16a55c1c757d83af9f282bc6f6c5cd762cb42fc389bc02e301c21a6da7b178260f534db35f0abe277f638ea9 qtsensors-opensource-src-5.9.3.tar.xz"
diff --git a/user/qt5-qtx11extras/APKBUILD b/user/qt5-qtx11extras/APKBUILD
index c158524c0..1cf3a08fa 100644
--- a/user/qt5-qtx11extras/APKBUILD
+++ b/user/qt5-qtx11extras/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtx11extras
-pkgver=5.9.1
+pkgver=5.9.3
pkgrel=0
pkgdesc="Qt5 - Extra libraries for X11 support"
url="http://qt-project.org/"
@@ -35,4 +35,4 @@ package() {
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="71b49d4c313e69d47b4e8652913005afe178caaee30f123016ed87ef4d798c347fd15135895a3e434ca32a80aee82a1b2d7da8278ceef92bdee9c35b7cdce84e qtx11extras-opensource-src-5.9.1.tar.xz"
+sha512sums="0d1547e25f5d051daa8b20f54ca146bc5a6ad6fdae2c9b9e90dae574840a350bc3ac82b05ddb93b7a544e689fc06e633e57a40f31475cd118e156fad78e91d6c qtx11extras-opensource-src-5.9.3.tar.xz"
diff --git a/user/qt5ct/APKBUILD b/user/qt5ct/APKBUILD
new file mode 100644
index 000000000..279383ac7
--- /dev/null
+++ b/user/qt5ct/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=qt5ct
+pkgver=0.35
+pkgrel=0
+pkgdesc="GUI utility for configuring Qt5"
+url="https://sourceforge.net/projects/qt5ct/"
+arch="all"
+license="BSD-2-Clause"
+depends=""
+depends_dev=""
+makedepends="qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev $depends_dev"
+install=""
+source="https://sourceforge.net/projects/qt5ct/files/qt5ct-$pkgver.tar.bz2"
+builddir="$srcdir/qt5ct-$pkgver"
+# test requires X
+options="!check"
+
+build() {
+ cd "$builddir"
+ qmake-qt5 PREFIX=/usr
+ make
+}
+
+package() {
+ cd "$builddir"
+ make INSTALL_ROOT="$pkgdir" install
+}
+
+sha512sums="2bd24221d391c420e73488738ff10762d27eb21fb28dc69da27dcbfface0cd0f16049768b55867a059c93da07eddb76da1bc63aefd516e07e5049c847da3970a qt5ct-0.35.tar.bz2"
diff --git a/user/rfkill/APKBUILD b/user/rfkill/APKBUILD
index 3e2cad165..9f9889e9a 100644
--- a/user/rfkill/APKBUILD
+++ b/user/rfkill/APKBUILD
@@ -2,17 +2,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rfkill
pkgver=0.5
-pkgrel=0
+pkgrel=1
pkgdesc="Tool to query the state of the rfkill switches and buttons"
url="https://wireless.wiki.kernel.org/en/users/Documentation/rfkill"
arch="all"
-license="GPL"
+options="!check" # No test suite.
+license="MIT"
depends=""
makedepends=""
install=""
-options="!check"
subpackages="$pkgname-doc"
-source="https://www.kernel.org/pub/software/network/rfkill/rfkill-$pkgver.tar.xz"
+source="https://www.kernel.org/pub/software/network/rfkill/rfkill-$pkgver.tar.xz
+ dont-use-git.patch"
build() {
cd "$builddir"
@@ -24,4 +25,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6ad4d28e7bf7ec69ec6a600cd774b7b3c60e85849ae3fca0f5509ed6a283ed5656d37cfd770df45ff1ceca59edd814807d116b30e199fca303baf496441419d7 rfkill-0.5.tar.xz"
+sha512sums="6ad4d28e7bf7ec69ec6a600cd774b7b3c60e85849ae3fca0f5509ed6a283ed5656d37cfd770df45ff1ceca59edd814807d116b30e199fca303baf496441419d7 rfkill-0.5.tar.xz
+635d948b4addfb418a3dd1a0f2482b15e5dae7e161f3fc1a430a2052d2aeb4e0d0a8c7663e27d1f8741920a497f0e36bac949f14544f5157f037315822a08d04 dont-use-git.patch"
diff --git a/user/rfkill/dont-use-git.patch b/user/rfkill/dont-use-git.patch
new file mode 100644
index 000000000..d673adc85
--- /dev/null
+++ b/user/rfkill/dont-use-git.patch
@@ -0,0 +1,24 @@
+This is required because packages.git is a git repo.
+
+--- rfkill-0.5/version.sh 2013-05-03 11:24:22.000000000 +0000
++++ rfkill-0.5/version.sh 2018-03-05 02:54:41.510838411 +0000
+@@ -12,19 +12,6 @@
+
+ if test "x$SUFFIX" != 'x'; then
+ v="$VERSION$SUFFIX"
+-elif head=`git rev-parse --verify HEAD 2>/dev/null`; then
+- git update-index --refresh --unmerged > /dev/null
+- descr=$(git describe 2>/dev/null || echo "v$VERSION")
+-
+- # on git builds check that the version number above
+- # is correct...
+- [ "${descr%%-*}" = "v$VERSION" ] || exit 2
+-
+- echo -n 'const char rfkill_version[] = "' > "$OUT"
+- v="${descr#v}"
+- if git diff-index --name-only HEAD | read dummy ; then
+- v="$v"-dirty
+- fi
+ else
+ v="$VERSION"
+ fi
diff --git a/user/rocs/APKBUILD b/user/rocs/APKBUILD
new file mode 100644
index 000000000..6bbc4486a
--- /dev/null
+++ b/user/rocs/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=rocs
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Graph theory IDE"
+url="https://www.kde.org/applications/education/rocs/"
+arch="all"
+options="!check" # All tests require X11.
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev boost-dev
+ grantlee-dev qt5-qtwebkit-dev qt5-qtsvg-dev qt5-qtxmlpatterns-dev
+ karchive-dev kconfig-dev kcoreaddons-dev kcrash-dev kdeclarative-dev
+ ki18n-dev kitemviews-dev ktexteditor-dev kxmlgui-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/rocs-$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 \
+ -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="db1311f627a5fa77811379d02b23c947236dce6febd5a8d14ca24ee46a8b54255f1befe98043c70b785c7fe01a50d1d3c0cde271f724b57f2a2100b80bb6933d rocs-17.12.2.tar.xz"
diff --git a/user/schismtracker/APKBUILD b/user/schismtracker/APKBUILD
new file mode 100644
index 000000000..0394a6d06
--- /dev/null
+++ b/user/schismtracker/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Horst Burkhardt <horst@adelielinux.org>
+# Maintainer: Horst Burkhardt <horst@adelielinux.org>
+pkgname=schismtracker
+pkgver=20180209
+pkgrel=0
+pkgdesc="A highly portable Impulse Tracker clone"
+url="http://schismtracker.org/"
+arch="all"
+license="GPL-2.0-only"
+options="!check" # No test suite.
+depends=""
+makedepends="python3 libtool sdl-dev libx11-dev libxdmcp-dev libxau-dev libxext-dev libbsd-dev"
+source="schismtracker-20180209.tar.gz::https://github.com/schismtracker/schismtracker/archive/20180209.tar.gz"
+subpackages="$pkgname-doc"
+
+build() {
+ cd "$builddir"
+ autoreconf -i
+ ./configure \
+ --enable-fortify-source \
+ --prefix=/usr
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="0bc5b43dd491db8b63d4a0c980a25b48c1e91a113633a034ea3281d664c52b13bcae7a0b8e12d6862b39078b544e0c91721f8a73e3f0536f3b748f548c701140 schismtracker-20180209.tar.gz"
diff --git a/user/sddm-kcm/APKBUILD b/user/sddm-kcm/APKBUILD
index 518cb46dc..8bf3865dd 100644
--- a/user/sddm-kcm/APKBUILD
+++ b/user/sddm-kcm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sddm-kcm
-pkgver=5.8.7
+pkgver=5.12.2
pkgrel=0
pkgdesc="KDE configuration applet for SDDM"
url="https://www.kde.org/"
@@ -10,7 +10,8 @@ license="GPL-2.0"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
qt5-qtdeclarative-dev kcoreaddons-dev ki18n-dev kxmlgui-dev kauth-dev
- kconfigwidgets-dev kio-dev libxcb-dev xcb-util-image-dev libxcursor-dev"
+ kconfigwidgets-dev kio-dev libxcb-dev xcb-util-image-dev libxcursor-dev
+ knewstuff-dev"
install=""
install_if="systemsettings sddm"
subpackages="$pkgname-lang"
@@ -43,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="782e56627071ff36e1724b0d1289fc0a5bef51cc3b54378ebccbe5d912d741e8b7649f0a8b493e8139c14ea6393d5f3dfcd85edbb4385252a59e84ef983d2834 sddm-kcm-5.8.7.tar.xz"
+sha512sums="130c86c9e56421ee3a656c6c1c7005052c9343e34c809faa77504539cadc474452c59e403a0c79f518b712ba4ef690d6ca7099d9fa34a582d258265e1fe59a92 sddm-kcm-5.12.2.tar.xz"
diff --git a/user/skanlite/APKBUILD b/user/skanlite/APKBUILD
new file mode 100644
index 000000000..c0f3194c5
--- /dev/null
+++ b/user/skanlite/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=skanlite
+pkgver=2.0.1
+pkgrel=0
+pkgdesc="Simple image scanning application"
+url="https://www.kde.org/applications/graphics/skanlite/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev libksane-dev kio-dev
+ kcoreaddons-dev ki18n-dev kxmlgui-dev kdoctools-dev libpng-dev zlib-dev
+ ktextwidgets-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/skanlite/2.0/skanlite-$pkgver.tar.xz
+ fix-version.patch
+ review-129989.patch
+ png-review-129988.patch"
+builddir="$srcdir/skanlite-$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="2dc29f3aeca32a7afb515ae9349fab7ef635de731718b53ceaf532cbd3860fbb07bd936fd2988b6dddb74109775e22752ffd05a0a3d0218b9c8ae393af52b14e skanlite-2.0.1.tar.xz
+80411112612025cb061960e7baf013efbe36d78a1567d169f313b9d39563c2d816c637f3b0ce45980e4a8ae8bf42e74677e32735fbfc5d8d63b6d637dcfac0fc fix-version.patch
+d20473d75ba9be608fedc843fe6128e4b57a20af0d13dd88c36ab93efc3e11c764431935e3bab2cf495f9735f221236c5c1d061fbc863a26eb3a637be9bd0436 review-129989.patch
+a960317f96dad1424cebd6b4734ce98c7f7401385b4434b961a0304283cd1d98bd99788be21eaa9e2bf0a5a01f6c647b6b5709334e0bd3f2b65fc12e3c56cbf3 png-review-129988.patch"
diff --git a/user/skanlite/fix-version.patch b/user/skanlite/fix-version.patch
new file mode 100644
index 000000000..94c5f345d
--- /dev/null
+++ b/user/skanlite/fix-version.patch
@@ -0,0 +1,23 @@
+--- skanlite-2.0.1/CMakeLists.txt.old 2016-10-26 12:00:57.000000000 -0500
++++ skanlite-2.0.1/CMakeLists.txt 2018-03-13 17:08:17.378028117 -0500
+@@ -43,7 +43,8 @@
+
+ set(SKANLITE_VERSION_STRING "2.0.1")
+
+-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/src/version.h)
++configure_file("${CMAKE_CURRENT_BINARY_DIR}/skanlite_version.h" "${CMAKE_CURRENT_BINARY_DIR}/src/version.h" COPYONLY)
++#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/src/version.h)
+
+ find_package(KF5 ${KF5_VERSION} REQUIRED
+ COMPONENTS # alias to find_package(KFGuiAddons ${KF5_VERSION} REQUIRED)
+--- skanlite-2.0.1/src/main.cpp.old 2016-10-26 17:00:34.000000000 +0000
++++ skanlite-2.0.1/src/main.cpp 2018-03-13 22:59:18.898057063 +0000
+@@ -44,7 +44,7 @@
+
+ KAboutData aboutData(QLatin1String("Skanlite"), // componentName, k4: appName
+ i18n("Skanlite"), // displayName, k4: programName
+- QLatin1String(skanlite_version), // version
++ QLatin1String(SKANLITE_VERSION_STRING), // version
+ i18n("Scanning application for KDE based on libksane."), // shortDescription
+ KAboutLicense::GPL, // licenseType
+ i18n("(C) 2008-2016 Kåre Särs"), // copyrightStatement
diff --git a/user/skanlite/png-review-129988.patch b/user/skanlite/png-review-129988.patch
new file mode 100644
index 000000000..05697078c
--- /dev/null
+++ b/user/skanlite/png-review-129988.patch
@@ -0,0 +1,99 @@
+From 9f1e7b3596b114ef23834810f661307ef49a38de Mon Sep 17 00:00:00 2001
+From: Alexander Trufanov <trufanovan@gmail.com>
+Date: Wed, 8 Mar 2017 17:11:25 +0300
+Subject: fix DPI info in 16-bit PNG
+
+REVIEW:129988
+
+Skanlite tries to save 16bit PNG files on its own in its KSaneImageSaver class because KSaneWidget (part of libksane) uses QImage to save files and QImage doesn't support 16bit images. Related warning in [libksane](https://github.com/KDE/libksane/blob/master/src/ksanewidget.h#L118)
+
+But Skanlite doesn't add most of optional PNG headers to the exported png file. In particulary it misses pHYs (Physical Pixel Dimensions) info. Without it ScanTailor app can't detect scan's dpi and forces user to choose it manually while png file importing. [Related issue in scantailor](https://github.com/scantailor/scantailor/issues/250)
+I've fixed this by adding pHYs to 16bit png based on KSaneWidget::currentDPI() as KSaneWidget [do it itself](https://github.com/KDE/libksane/blob/master/src/ksanewidget.cpp#L627)
+---
+ src/KSaneImageSaver.cpp | 11 ++++++++---
+ src/KSaneImageSaver.h | 4 ++--
+ src/skanlite.cpp | 2 +-
+ 3 files changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/src/KSaneImageSaver.cpp b/src/KSaneImageSaver.cpp
+index aaffed2..49123a1 100644
+--- a/src/KSaneImageSaver.cpp
++++ b/src/KSaneImageSaver.cpp
+@@ -46,6 +46,7 @@ struct KSaneImageSaver::Private {
+ int m_width;
+ int m_height;
+ int m_format;
++ int m_dpi;
+ ImageType m_type;
+
+ bool savePng();
+@@ -64,7 +65,7 @@ KSaneImageSaver::~KSaneImageSaver()
+ delete d;
+ }
+
+-bool KSaneImageSaver::savePng(const QString &name, const QByteArray &data, int width, int height, int format)
++bool KSaneImageSaver::savePng(const QString &name, const QByteArray &data, int width, int height, int format, int dpi)
+ {
+ if (!d->m_runMutex.tryLock()) {
+ return false;
+@@ -75,15 +76,16 @@ bool KSaneImageSaver::savePng(const QString &name, const QByteArray &data, int w
+ d->m_width = width;
+ d->m_height = height;
+ d->m_format = format;
++ d->m_dpi = dpi;
+ d->m_type = Private::ImageTypePNG;
+
+ start();
+ return true;
+ }
+
+-bool KSaneImageSaver::savePngSync(const QString &name, const QByteArray &data, int width, int height, int format)
++bool KSaneImageSaver::savePngSync(const QString &name, const QByteArray &data, int width, int height, int format, int dpi)
+ {
+- if (!savePng(name, data, width, height, format)) {
++ if (!savePng(name, data, width, height, format, dpi)) {
+ qDebug() << "fail";
+ return false;
+ }
+@@ -192,6 +194,9 @@ bool KSaneImageSaver::Private::savePng()
+
+ png_set_sBIT(png_ptr, info_ptr, &sig_bit);
+
++ png_uint_32 dpm = m_dpi * (1000.0 / 25.4);
++ png_set_pHYs(png_ptr, info_ptr, dpm, dpm, 1);
++
+ /* Optionally write comments into the image */
+ // text_ptr[0].key = "Title";
+ // text_ptr[0].text = "Mona Lisa";
+diff --git a/src/KSaneImageSaver.h b/src/KSaneImageSaver.h
+index 0ee23ac..96cc763 100644
+--- a/src/KSaneImageSaver.h
++++ b/src/KSaneImageSaver.h
+@@ -37,9 +37,9 @@ public:
+ KSaneImageSaver(QObject *parent = 0);
+ ~KSaneImageSaver();
+
+- bool savePng(const QString &name, const QByteArray &data, int width, int height, int format);
++ bool savePng(const QString &name, const QByteArray &data, int width, int height, int format, int dpi);
+
+- bool savePngSync(const QString &name, const QByteArray &data, int width, int height, int format);
++ bool savePngSync(const QString &name, const QByteArray &data, int width, int height, int format, int dpi);
+
+ bool saveTiff(const QString &name, const QByteArray &data, int width, int height, int format);
+
+diff --git a/src/skanlite.cpp b/src/skanlite.cpp
+index 1f1541c..7a671a2 100644
+--- a/src/skanlite.cpp
++++ b/src/skanlite.cpp
+@@ -498,7 +498,7 @@ void Skanlite::saveImage()
+ (m_format == KSaneIface::KSaneWidget::FormatGrayScale16))
+ {
+ KSaneImageSaver saver;
+- if (saver.savePngSync(localName, m_data, m_width, m_height, m_format)) {
++ if (saver.savePngSync(localName, m_data, m_width, m_height, m_format, m_ksanew->currentDPI())) {
+ m_showImgDialog->close(); // closing the window if it is closed should not be a problem.
+ }
+ else {
+--
+cgit v0.11.2
+
diff --git a/user/skanlite/review-129989.patch b/user/skanlite/review-129989.patch
new file mode 100644
index 000000000..431f1a720
--- /dev/null
+++ b/user/skanlite/review-129989.patch
@@ -0,0 +1,72 @@
+From e9eaf4c80ef0f90f53ee7aa284e56e808dcbe6c4 Mon Sep 17 00:00:00 2001
+From: Alexander Trufanov <trufanovan@gmail.com>
+Date: Wed, 8 Mar 2017 17:55:33 +0300
+Subject: Bugfix: wrong folder selection dialog behavior
+
+REVIEW:129989
+
+There are 2 problems with directory selection dialog.
+1. If you scan very first page you'll get SaveLocation dialog but if you press the "..." button in it to specify folder for scans - a file selection dialog will be opened. Not directory selection, but file selection. If you select a file in it - a directory selection dialog pop up just after you close previous one. So you'll get a second dialog. Your first file selection result will be overwritten by folder selection.
+2. If you choose for example "/tmp/" in directory selection dialog you'll get "/tmp" in the text box. Without trailing path separator. And resulted filename preview will be "/prefix-0001.png", not "/tmp/prefix-0001.png". If you didn't notice that and press ok you'll get an error as nothing can be saved to root. If you selected another folder you later may realize that your scans are in parent directory. Why? Bcs SkanLite doesn't check trailing path separator in directory path and believes that "/tmp" is a file tmp in the root folder. And Qt's directory selection dialogs always return directory name without trailing path separator in it.
+
+I've fixed both problems.
+Second one is easy, just `if (!dir.endsWith(QDir::separator())) dir = dir.append(QDir::separator());` before proceeding with directory selection results.
+
+First one is a bit awkward. There is a slot `getDir()` and 2 widgets connected to it. `u_urlRequester` from SaveLocation dialog and `getDirButton` from Settings dialog. the slot opens QFileDialog::getExistingDirectory(). It's fine for getDirButton which is a QButton. But u_urlRequester is a KUrlRequester and contains own button and launches own file selection dialog which is for files by default. That's obviously wrong.
+There are notes in `getDir()` slot about `// FIXME KF5`. Seems to be [this](https://mail.kde.org/pipermail/kde-frameworks-devel/2014-March/013276.html) discussion. I believe it's irrelevant to this problem. Perhaps this problem is a former workaround for KF5 problem which is already disappeared.
+
+All you need to fix this behavior is to disconnect KUrlRequester from getDir() which explicitly calls getExistingDirectory() and let it use it's own. We just need to switch it in directory selection mode with `u_urlRequester->setMode(KFile::Directory);`.
+---
+ src/SaveLocation.cpp | 5 +++--
+ src/skanlite.cpp | 4 +---
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/src/SaveLocation.cpp b/src/SaveLocation.cpp
+index 7d6135a..bb87047 100644
+--- a/src/SaveLocation.cpp
++++ b/src/SaveLocation.cpp
+@@ -35,8 +35,8 @@ SaveLocation::SaveLocation(QWidget *parent)
+ {
+ setupUi(this);
+
++ u_urlRequester->setMode(KFile::Directory);
+ connect(u_urlRequester, &KUrlRequester::textChanged, this, &SaveLocation::updateGui);
+- connect(u_urlRequester, &KUrlRequester::urlSelected, this, &SaveLocation::getDir);
+ connect(u_imgPrefix, &QLineEdit::textChanged, this, &SaveLocation::updateGui);
+ connect(u_imgFormat, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), this, &SaveLocation::updateGui);
+ connect(u_numStartFrom, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &SaveLocation::updateGui);
+@@ -52,7 +52,8 @@ void SaveLocation::updateGui()
+ u_numStartFrom->setValue(1); // Reset the counter whenever the directory or the prefix is changed
+ }
+ const QString name = QString::fromLatin1("%1%2.%3").arg(u_imgPrefix->text()).arg(u_numStartFrom->value(), 4, 10, QLatin1Char('0')).arg(u_imgFormat->currentText());
+- u_resultValue->setText(QUrl(u_urlRequester->url().resolved(QUrl(name))).toString(QUrl::PreferLocalFile | QUrl::NormalizePathSegments));
++ QString dir = QDir::cleanPath(u_urlRequester->url().toString()).append(QLatin1Char('/')); //make sure whole value is processed as path to directory
++ u_resultValue->setText(QUrl(dir).resolved(QUrl(name)).toString(QUrl::PreferLocalFile | QUrl::NormalizePathSegments));
+ }
+
+ void SaveLocation::getDir(void)
+diff --git a/src/skanlite.cpp b/src/skanlite.cpp
+index 7a671a2..1817425 100644
+--- a/src/skanlite.cpp
++++ b/src/skanlite.cpp
+@@ -368,7 +368,7 @@ void Skanlite::saveImage()
+ m_firstImage = false;
+ }
+
+- QString dir = m_saveLocation->u_urlRequester->url().url();
++ QString dir = QDir::cleanPath(m_saveLocation->u_urlRequester->url().url()).append(QLatin1Char('/')); //make sure whole value is processed as path to directory
+ QString prefix = m_saveLocation->u_imgPrefix->text();
+ QString imgFormat = m_saveLocation->u_imgFormat->currentText().toLower();
+ int fileNumber = m_saveLocation->u_numStartFrom->value();
+@@ -557,8 +557,6 @@ void Skanlite::saveImage()
+
+ void Skanlite::getDir(void)
+ {
+- // FIXME KF5 / WAIT: this is not working yet due to a bug in frameworkintegration:
+- // see commit: 2c1ee08a21a1f16f9c2523718224598de8fc0d4f for kf5/src/frameworks/frameworkintegration/tests/qfiledialogtest.cpp
+ QString dir = QFileDialog::getExistingDirectory(m_settingsDialog, QString(), m_settingsUi.saveDirLEdit->text());
+ if (!dir.isEmpty()) {
+ m_settingsUi.saveDirLEdit->setText(dir);
+--
+cgit v0.11.2
+
diff --git a/user/solid/APKBUILD b/user/solid/APKBUILD
index b4e91a1fe..6da097500 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Platform-independent hardware discovery and access"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a2ebe5352863b27c4ff83d3d6f6961de00ba3ada81e697a1519c9f86849561dc3da8d3cc8df5a79c2cd2288c08f7c033b6bbefff02ba938cb450b38cc0db81c3 solid-5.41.0.tar.xz"
+sha512sums="6a7dc7d75a0340e69900758be5aecc201bf8c1e5a28b549e4f50107ae9ff800701b0abb88cf0c917347723e62d3222f4e066e399c916c537f3560ac7b9d20f1d solid-5.43.0.tar.xz"
diff --git a/user/sonnet/APKBUILD b/user/sonnet/APKBUILD
index 98c548f28..ce8297d05 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for implementing portable spell check functionality"
url="https://www.kde.org/"
@@ -35,7 +35,8 @@ build() {
check() {
cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # Highlighter test requires X11
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E sonnet-test_highlighter
}
package() {
@@ -47,8 +48,8 @@ aspell() {
pkgdesc="$pkdesc (aspell backend)"
install_if="$pkgname=$pkgver-$pkgrel aspell"
mkdir -p "$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet
- mv "$pkgdir"/usr/lib/qt5/plugins/kf5/sonnet/aspell.so \
- "$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet/aspell.so
+ mv "$pkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_aspell.so \
+ "$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_aspell.so
}
-sha512sums="608b0c476f6a1bb9e598c9c3dbb58882ec80f2e3d436cf4e4657cccc2ca5abd24bf7af5f7982ff79d80eb602c92a26be498a9bd02fcb8b6ac44298b42af6648b sonnet-5.41.0.tar.xz"
+sha512sums="63ee853d5f2df8b8163253add74418e46810188d58fc4ea56ee1d6dc6cd2f25b89c40f21039840c1992b2ce84e44acce26373cedb70770ca3d806e1dc73a0aa0 sonnet-5.43.0.tar.xz"
diff --git a/user/spectacle/APKBUILD b/user/spectacle/APKBUILD
index e78e9911c..0f3b0b31c 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=17.08.2
+pkgver=17.12.2
pkgrel=0
pkgdesc="Application for capturing desktop screenshots"
url="https://www.kde.org/applications/graphics/spectacle/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b7cedd7a8151051365df956ac65038354027c9365e7e166e17d3d91ef55390b0521e0ed0912c61612b23dcea3c1f2604535536ae7119b3415ac5cb7079e55abf spectacle-17.08.2.tar.xz"
+sha512sums="b6725931831d0faa02e2f4f65b53be7d2a2e25fab48b785432540d89c2f3fd4134c86f647f60a51c757428db2ea88aee7174295b50c14c3a5bfeb97b478443f4 spectacle-17.12.2.tar.xz"
diff --git a/user/sprunge/APKBUILD b/user/sprunge/APKBUILD
new file mode 100644
index 000000000..024486ea4
--- /dev/null
+++ b/user/sprunge/APKBUILD
@@ -0,0 +1,57 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=sprunge
+pkgver=0.6
+pkgrel=0
+pkgdesc="Helper script to paste things to http://sprunge.us"
+url="http://sprunge.us"
+arch="noarch"
+license="GPL-2.0"
+depends="curl"
+makedepends=
+install=""
+subpackages="tpaste dpaste ix"
+source=""
+builddir="$srcdir"
+options="!check" # Simple shell scripts; no test required.
+
+build() {
+ cd "$builddir"
+}
+
+package() {
+ cd "$builddir"
+ mkdir -p "$pkgdir"/usr/bin
+ printf "#!/bin/sh\n\nexec curl -F 'sprunge=<-' http://sprunge.us" > \
+ "$pkgdir"/usr/bin/sprunge
+ chmod 755 "$pkgdir"/usr/bin/sprunge
+}
+
+tpaste() {
+ cd "$builddir"
+ url="http://tpaste.us"
+ pkgdesc="Helper script to paste things to $url"
+ mkdir -p "$subpkgdir"/usr/bin
+ printf "#!/bin/sh\n\nexec curl -F 'tpaste=<-' http://tpaste.us" > \
+ "$subpkgdir"/usr/bin/tpaste
+ chmod 755 "$subpkgdir"/usr/bin/tpaste
+}
+
+dpaste() {
+ cd "$builddir"
+ url="http://dpaste.com"
+ pkgdesc="Helper script to paste things to $url"
+ mkdir -p "$subpkgdir"/usr/bin
+ printf "#!/bin/sh\n\nexec curl --silent -F 'content=<-' https://dpaste.de/api/ | sed -e 's/\"//g' -e 's/\$/\/raw\\\n/'" > \
+ "$subpkgdir"/usr/bin/dpaste
+ chmod 755 "$subpkgdir"/usr/bin/dpaste
+}
+
+ix() {
+ cd "$builddir"
+ url="http://ix.io"
+ pkgdesc="Helper script to paste things to $url"
+ mkdir -p "$subpkgdir"/usr/bin
+ printf "#!/bin/sh\n\nexec curl -F f:1='<-' ix.io/" > \
+ "$subpkgdir"/usr/bin/ix
+ chmod 755 "$subpkgdir"/usr/bin/ix
+}
diff --git a/user/step/APKBUILD b/user/step/APKBUILD
new file mode 100644
index 000000000..587587302
--- /dev/null
+++ b/user/step/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=step
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Interactive physics simulation"
+url="https://www.kde.org/applications/education/step/"
+arch="all"
+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"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/step-$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 \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="025bdc9e3560feb93782a1462a3d2ed152ad9981194425de73fcaa26fbfae74a67016507ebe368776da27b1dda63863106567620e39ed82cc8e95e414f219616 step-17.12.2.tar.xz"
diff --git a/user/symboleditor/APKBUILD b/user/symboleditor/APKBUILD
new file mode 100644
index 000000000..48e91e83c
--- /dev/null
+++ b/user/symboleditor/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=symboleditor
+_realpkg=SymbolEditor
+pkgver=2.0.0
+pkgrel=0
+pkgdesc="Symbol library creator for Qt 5"
+url="https://userbase.kde.org/SymbolEditor"
+arch="all"
+license="GPL-2.0+"
+depends="shared-mime-info"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev kconfig-dev
+ ki18n-dev kio-dev kwidgetsaddons-dev kxmlgui-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/$pkgname/$pkgver/src/SymbolEditor-$pkgver.tar.bz2"
+builddir="$srcdir/$_realpkg-$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="8baee88fd8ff5f2b6334e80fe7c3fe8044ae521e5a8ffa2588f37dc4a8bf0495c902789bfaaed21a6eaf3c4f6380d18550aaed8046e84b396317104c8a49c993 SymbolEditor-2.0.0.tar.bz2"
diff --git a/user/syntax-highlighting/APKBUILD b/user/syntax-highlighting/APKBUILD
index 9f87744f9..464d9de02 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="Framework for rendering programming code with formatting"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="86ed50766c9c0a3ef9e71421f5e7b9248ab1f28d0ecd424af57d643e613f488e572d001c55c58ab0ef501d6160b2db75dec0b325447132a5f49ff6dc6c52afea syntax-highlighting-5.41.0.tar.xz"
+sha512sums="3d9f2e073e05690922126b4b5360ef178655482158ff3471b469826681b86cba1ce1e555f0bc15df27dd980632a8324ad666bad178ee98eaf5fcdf58e2618c83 syntax-highlighting-5.43.0.tar.xz"
diff --git a/user/systemsettings/APKBUILD b/user/systemsettings/APKBUILD
index 3292521f3..c0cde059f 100644
--- a/user/systemsettings/APKBUILD
+++ b/user/systemsettings/APKBUILD
@@ -1,17 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=systemsettings
-pkgver=5.8.7
-pkgrel=0
+pkgver=5.12.2
+pkgrel=1
pkgdesc="KDE system settings configuration utility"
url="https://www.kde.org/"
arch="all"
license="LGPL-2.1"
-depends=""
+depends="kirigami2"
depends_dev="qt5-qtbase-dev kauth-dev kcmutils-dev kcompletion-dev kconfig-dev
kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev ki18n-dev kio-dev
kiconthemes-dev kitemviews-dev kservice-dev kwidgetsaddons-dev
- kwindowsystem-dev kxmlgui-dev"
+ kwindowsystem-dev kxmlgui-dev kactivities-dev kactivities-stats-dev
+ khtml-dev kirigami2-dev"
makedepends="$depends_dev cmake extra-cmake-modules"
install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
@@ -44,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="38bc0b65e5fbe10a1c229e91b93f59a1837fdfd1f2d89d7ab7bf0d64ffecc5d1b7ac946c03a8bc91e6c75ad522ed26a6351e5cfc4044b04170281854fc8c32c7 systemsettings-5.8.7.tar.xz"
+sha512sums="1c5bcc72130208208d08880c0e53a647333622033bc825961bae835cea677b93101c7e1c285e97c769cef947331efb41c0736e83bbd715d86111ad2444fefef4 systemsettings-5.12.2.tar.xz"
diff --git a/user/threadweaver/APKBUILD b/user/threadweaver/APKBUILD
index a9dbfc648..07c021922 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.41.0
+pkgver=5.43.0
pkgrel=0
pkgdesc="High-level threading framework"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9d8e0e6fe9a6b1310d936f646a888d00ec6abafe073665a6ad5115bf4dfe11908db5714f321590c553c00edd5663fd609dd5f3af36d78263cd6ee93d5e27d805 threadweaver-5.41.0.tar.xz"
+sha512sums="0810e64bc4bacc548d1b839633e0fdd178f86bfb80c7e2b77fc185810207c3c2ca7619d982b806d7a0337329a034d09106fedbaea6218df78e46079d703a57c1 threadweaver-5.43.0.tar.xz"
diff --git a/user/thunderbird/APKBUILD b/user/thunderbird/APKBUILD
new file mode 100644
index 000000000..782061ea3
--- /dev/null
+++ b/user/thunderbird/APKBUILD
@@ -0,0 +1,90 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=thunderbird
+pkgver=52.6.0
+pkgrel=0
+pkgdesc="Email client from Mozilla"
+url="https://www.mozilla.org/thunderbird/"
+arch="all"
+options="!check" # X11 required
+license="MPL"
+depends=""
+# moz build system stuff
+# system-libs
+# actual deps
+makedepends="
+ autoconf2.13 debianutils-which perl python2
+
+ alsa-lib-dev bzip2-dev icu-dev libevent-dev libffi-dev libpng-dev
+ libjpeg-turbo-dev libvpx-dev nspr-dev nss-dev pulseaudio-dev zlib-dev
+
+ dbus-glib-dev gconf-dev gtk+2.0-dev gtk+3.0-dev hunspell-dev libsm-dev
+ libnotify-dev libxcomposite-dev libxdamage-dev libxrender-dev libxt-dev
+ nss-static sqlite-dev startup-notification-dev unzip yasm zip
+ "
+install=""
+subpackages="$pkgname-dev"
+source="https://archive.mozilla.org/pub/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.source.tar.xz
+ mozconfig
+ bad-google-code.patch
+ fix-seccomp-bpf.patch
+ mach-linux-musl.patch
+ profiler.patch
+ proper-system-hunspell.patch
+ stab.h
+ thunderbird.desktop
+ "
+somask="liblgpllibs.so
+ libmozgtk.so
+ libmozsandbox.so
+ libxul.so"
+_tbirddir=/usr/lib/${pkgname}-${pkgver}
+
+prepare() {
+ default_prepare
+ cp "$srcdir"/stab.h "$builddir"/mozilla/toolkit/crashreporter/google-breakpad/src/
+ cp "$srcdir"/mozconfig "$builddir"/mozconfig
+ echo "ac_add_options --enable-optimize=\"$CFLAGS\"" >> "$builddir"/mozconfig
+ echo "ac_add_options --host=\"$CHOST\"" >> "$builddir"/mozconfig
+ echo "ac_add_options --target=\"$CTARGET\"" >> "$builddir"/mozconfig
+}
+
+build() {
+ cd "$builddir"
+
+ # reportedly needed for gcc6; confirm this?
+ export CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks -fno-schedule-insns2"
+
+ export LDFLAGS="$LDFLAGS -Wl,-rpath,${_tbirddir}"
+ export USE_SHORT_LIBNAME=1
+
+ ./mozilla/mach build
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" ./mozilla/mach install
+ install -D -m644 "$srcdir"/thunderbird.desktop \
+ "$pkgdir"/usr/share/applications/thunderbird.desktop
+}
+
+dev() {
+ pkgdesc="$pkgdesc (development files)"
+
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/include "$subpkgdir"/usr/include
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/thunderbird-devel* "$subpkgdir"/usr/lib
+ mkdir -p "$subpkgdir"/usr/share
+ mv "$pkgdir"/usr/share/idl "$subpkgdir"/usr/share
+}
+
+sha512sums="80742c95ed61d1cb2e72b71bb23bdd211a40240ab4393e9f028a38f902547372084a8f56445e2394484be088a7b9801405f3d6618fb2742601cc968bf34427f0 thunderbird-52.6.0.source.tar.xz
+000b4403bfac4a6192ebe36a734ef3e464f3bdd3bc797e87bc487b4d9d93cd4b41137d82726617205e39f7aedf8bf2dfb11645db24a8b0b0137a141c9133f151 mozconfig
+9b11ba43f1f3fe9cda69b6b92e2073ea5165a47e30084537f396ceb8fb63573c4eb057251644837504aa4546183dc8f77fbb24f1450b6a15a1386f29180deefc bad-google-code.patch
+2f52fcd7c42f8e12c955e05aa12449aa486c5347d2a7406ff0dada66f64079152b18c3f65c43410df372e871488f17889bc337ced37d0b76305afdbcb55cb580 fix-seccomp-bpf.patch
+475bdf81c41775634b131635197fa449b5068f2624a6b120d1878e2191a8e7badf01ac79a15ccf39242c64a29357f2ed7bae96352ceb70a234b17468a999e0c4 mach-linux-musl.patch
+7e72b96196f51cc02478f1802a10b1c1754db09d7d35aef697c5dcaace107e7a45a1b97256cc98b4aa728845694be093b148b61868e8ebfc8317fea19d6c71fa profiler.patch
+63b09028262a109e3a02f928c12323793df65dbd6d5605ddc315978b50ff4b50f6d1af410dc7c00538c80009a8721900c6320b166c8aa9bc6dce170ebcd6fc91 proper-system-hunspell.patch
+0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h
+95a2b1deb4f6c90750fdd2bfe8ca0a7879a5b267965091705a6beb0a0a4b1ccad75d11df7b9885543ca4232ff704e975c6946f4c11804cb71c471e06f9576001 thunderbird.desktop"
diff --git a/user/thunderbird/bad-google-code.patch b/user/thunderbird/bad-google-code.patch
new file mode 100644
index 000000000..4be2b6748
--- /dev/null
+++ b/user/thunderbird/bad-google-code.patch
@@ -0,0 +1,49 @@
+--- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
++++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
+@@ -45,6 +45,7 @@
+ #include <sys/mman.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
++#include <libgen.h>
+
+ #include <iostream>
+ #include <set>
+--- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
++++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
+@@ -41,6 +41,10 @@
+
+ #include "common/using_std_string.h"
+
++#ifndef N_UNDF
++#define N_UNDF 0
++#endif
++
+ using std::vector;
+
+ namespace google_breakpad {
+--- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
++++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
+@@ -55,7 +55,7 @@
+
+ #ifdef HAVE_MACH_O_NLIST_H
+ #include <mach-o/nlist.h>
+-#elif defined(HAVE_A_OUT_H)
++#elif 0
+ #include <a.out.h>
+ #endif
+
+--- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
++++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
+@@ -1134,6 +1134,12 @@ struct kernel_statfs {
+ #ifndef __NR_fallocate
+ #define __NR_fallocate 285
+ #endif
++
++#undef __NR_pread
++#define __NR_pread __NR_pread64
++#undef __NR_pwrite
++#define __NR_pwrite __NR_pwrite64
++
+ /* End of x86-64 definitions */
+ #elif defined(__mips__)
+ #if _MIPS_SIM == _MIPS_SIM_ABI32
diff --git a/user/thunderbird/disable-hunspell_hooks.patch b/user/thunderbird/disable-hunspell_hooks.patch
new file mode 100644
index 000000000..1eaa4d035
--- /dev/null
+++ b/user/thunderbird/disable-hunspell_hooks.patch
@@ -0,0 +1,11 @@
+--- a/mozilla-config.h.in 2016-07-06 15:16:06.621880293 +0200
++++ b/mozilla-config.h.in 2016-07-06 15:16:42.958428126 +0200
+@@ -54,7 +54,7 @@
+ * HUNSPELL_STATIC is defined in extensions/spellcheck/hunspell/src/Makefile.in,
+ * unless --enable-system-hunspell is defined.
+ */
+-#if defined(HUNSPELL_STATIC)
++#if 0
+ #include "hunspell_alloc_hooks.h"
+ #include "hunspell_fopen_hooks.h"
+ #endif
diff --git a/user/thunderbird/fix-seccomp-bpf.patch b/user/thunderbird/fix-seccomp-bpf.patch
new file mode 100644
index 000000000..844ec7b96
--- /dev/null
+++ b/user/thunderbird/fix-seccomp-bpf.patch
@@ -0,0 +1,14 @@
+--- a/mozilla/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig 2015-09-23 09:10:08.812740571 +0200
++++ b/mozilla/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc 2015-09-23 09:11:38.404746155 +0200
+@@ -23,6 +23,11 @@
+ #include "sandbox/linux/services/android_ucontext.h"
+ #endif
+
++// musl libc defines siginfo_t __si_fields instead of _sifields
++#if defined(OS_LINUX) && !defined(__GLIBC__)
++#define _sifields __si_fields
++#endif
++
+ namespace {
+
+ struct arch_sigsys {
diff --git a/user/thunderbird/mach-linux-musl.patch b/user/thunderbird/mach-linux-musl.patch
new file mode 100644
index 000000000..6bddf6ff6
--- /dev/null
+++ b/user/thunderbird/mach-linux-musl.patch
@@ -0,0 +1,119 @@
+
+# HG changeset patch
+# User Mike Hommey <mh+mozilla@glandium.org>
+# Date 1502856976 -32400
+# Node ID 8d9ae8c45dd07496f164364f24c5f43edcf2eb6e
+# Parent fa02d334033f0039ef82b3d7dc194312ba250279
+Bug 1384062 - Make SystemResourceMonitor.stop more resilient to errors. r=ahal,gps
+
+The poll() call in SystemResourceMonitor.stop might fail even though
+there is something to read from the pipe, in some corner cases, and
+python won't let us know about it. In that case, an exception is thrown,
+leaving the SystemResourceMonitor (and its callers) in a weird state. In
+practice, this leads BuildMonitor.__exit__ to recall stop, which then
+fails.
+
+So when poll() throws an exception, we pretend there's still something
+to read, and we try to read anyways. If there is something to read,
+recv() will return it, otherwise, it will throw an exception of its own,
+which we catch, pretending we're done.
+
+Furthermore, when there is nothing to read from the pipe, poll() simply
+returns False, and our loop never sets `done` to True, and we then hit
+an assert, which doesn't have its place here, so we remove it.
+
+Finally, the other end of the pipe might have died at any time, making
+sending over the pipe fail, so we also protect against that.
+
+With all these changes, it feels like the reason to backout bug 1239939
+in bug 1272782 should have been dealt with, and we can drop the timeout
+again.
+
+diff --git a/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py b/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
+--- a/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
++++ b/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
+@@ -284,57 +284,71 @@ class SystemResourceMonitor(object):
+ """
+ if not self._process:
+ self._stopped = True
+ return
+
+ assert self._running
+ assert not self._stopped
+
+- self._pipe.send(('terminate',))
++ try:
++ self._pipe.send(('terminate',))
++ except Exception:
++ pass
+ self._running = False
+ self._stopped = True
+
+ self.measurements = []
+
+- done = False
+-
+ # The child process will send each data sample over the pipe
+ # as a separate data structure. When it has finished sending
+ # samples, it sends a special "done" message to indicate it
+ # is finished.
+- while self._pipe.poll(1.0):
+- start_time, end_time, io_diff, cpu_diff, cpu_percent, virt_mem, \
+- swap_mem = self._pipe.recv()
++
++ # multiprocessing.Pipe is not actually a pipe on at least Linux. that
++ # has an effect on the expected outcome of reading from it when the
++ # other end of the pipe dies, leading to possibly hanging on revc()
++ # below. So we must poll().
++ def poll():
++ try:
++ return self._pipe.poll(0.1)
++ except Exception:
++ # Poll might throw an exception even though there's still
++ # data to read. That happens when the underlying system call
++ # returns both POLLERR and POLLIN, but python doesn't tell us
++ # about it. So assume there is something to read, and we'll
++ # get an exception when trying to read the data.
++ return True
++ while poll():
++ try:
++ start_time, end_time, io_diff, cpu_diff, cpu_percent, virt_mem, \
++ swap_mem = self._pipe.recv()
++ except Exception:
++ # Let's assume we're done here
++ break
+
+ # There should be nothing after the "done" message so
+ # terminate.
+ if start_time == 'done':
+- done = True
+ break
+
+ io = self._io_type(*io_diff)
+ virt = self._virt_type(*virt_mem)
+ swap = self._swap_type(*swap_mem)
+ cpu_times = [self._cpu_times_type(*v) for v in cpu_diff]
+
+ self.measurements.append(SystemResourceUsage(start_time, end_time,
+ cpu_times, cpu_percent, io, virt, swap))
+
+ # We establish a timeout so we don't hang forever if the child
+ # process has crashed.
+ self._process.join(10)
+ if self._process.is_alive():
+ self._process.terminate()
+ self._process.join(10)
+- else:
+- # We should have received a "done" message from the
+- # child indicating it shut down properly. This only
+- # happens if the child shuts down cleanly.
+- assert done
+
+ if len(self.measurements):
+ self.start_time = self.measurements[0].start
+ self.end_time = self.measurements[-1].end
+
+ # Methods to record events alongside the monitored data.
+
+ def record_event(self, name):
+
diff --git a/user/thunderbird/mozconfig b/user/thunderbird/mozconfig
new file mode 100644
index 000000000..8359687c5
--- /dev/null
+++ b/user/thunderbird/mozconfig
@@ -0,0 +1,33 @@
+ac_add_options --prefix=/usr
+ac_add_options --libdir=/usr/lib
+ac_add_options --disable-crashreporter
+ac_add_options --disable-elf-hack
+ac_add_options --disable-install-strip
+ac_add_options --disable-jemalloc
+ac_add_options --disable-profiling
+ac_add_options --disable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+ac_add_options --enable-application=mail
+ac_add_options --enable-alsa
+ac_add_options --enable-calendar
+ac_add_options --enable-dbus
+ac_add_options --enable-default-toolkit=cairo-gtk3
+ac_add_options --enable-gio
+ac_add_options --enable-official-branding
+ac_add_options --enable-pie
+ac_add_options --enable-pulseaudio
+ac_add_options --enable-startup-notification
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --with-pthreads
+ac_add_options --with-system-bz2
+ac_add_options --with-system-icu
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-libevent
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-png
+ac_add_options --with-system-zlib
diff --git a/user/thunderbird/profiler.patch b/user/thunderbird/profiler.patch
new file mode 100644
index 000000000..1b502a243
--- /dev/null
+++ b/user/thunderbird/profiler.patch
@@ -0,0 +1,44 @@
+--- a/mozilla/tools/profiler/core/platform-linux.cc
++++ b/mozilla/tools/profiler/core/platform-linux.cc
+@@ -711,11 +711,13 @@ void OS::Startup() {
+ void TickSample::PopulateContext(void* aContext)
+ {
+ MOZ_ASSERT(aContext);
++#if defined(__GLIBC__)
+ ucontext_t* pContext = reinterpret_cast<ucontext_t*>(aContext);
+ if (!getcontext(pContext)) {
+ context = pContext;
+ SetSampleContext(this, aContext);
+ }
++#endif
+ }
+
+ void OS::SleepMicro(int microseconds)
+--- a/mozilla/tools/profiler/core/platform.h
++++ b/mozilla/tools/profiler/core/platform.h
+@@ -34,6 +34,8 @@
+ #define MOZ_COUNT_DTOR(name)
+ #endif
+
++#include <sys/types.h>
++
+ #ifdef ANDROID
+ #include <android/log.h>
+ #else
+--- a/mozilla/tools/profiler/lul/LulElf.cpp
++++ b/mozilla/tools/profiler/lul/LulElf.cpp
+@@ -483,10 +483,10 @@ string FormatIdentifier(unsigned char identifier[16]) {
+ // Return the non-directory portion of FILENAME: the portion after the
+ // last slash, or the whole filename if there are no slashes.
+ string BaseFileName(const string &filename) {
+- // Lots of copies! basename's behavior is less than ideal.
+- char *c_filename = strdup(filename.c_str());
+- string base = basename(c_filename);
+- free(c_filename);
++ // basename's behavior is less than ideal so avoid it
++ const char *c_filename = filename.c_str();
++ const char *p = strrchr(c_filename, '/');
++ string base = p ? p+1 : c_filename;
+ return base;
+ }
+
diff --git a/user/thunderbird/proper-system-hunspell.patch b/user/thunderbird/proper-system-hunspell.patch
new file mode 100644
index 000000000..e1429de08
--- /dev/null
+++ b/user/thunderbird/proper-system-hunspell.patch
@@ -0,0 +1,22 @@
+moz seem to have no idea what their own damn build system is doing...
+
+--- thunderbird-52.6.0/mozilla/extensions/spellcheck/hunspell/glue/moz.build 2018-01-24 03:06:15.000000000 +0000
++++ thunderbird-52.6.0/mozilla/extensions/spellcheck/hunspell/glue/moz.build 2018-03-12 09:17:05.386773708 +0000
+@@ -16,6 +16,9 @@
+ if CONFIG['MOZ_SYSTEM_HUNSPELL']:
+ CXXFLAGS += CONFIG['MOZ_HUNSPELL_CFLAGS']
+ else:
++ # This variable is referenced in configure.in. Make sure to change that file
++ # too if you need to change this variable.
++ DEFINES['HUNSPELL_STATIC'] = True
+ LOCAL_INCLUDES += ['../src']
+
+ LOCAL_INCLUDES += [
+@@ -33,7 +36,3 @@
+ 'RemoteSpellCheckEngineChild.h',
+ 'RemoteSpellCheckEngineParent.h',
+ ]
+-
+-# This variable is referenced in configure.in. Make sure to change that file
+-# too if you need to change this variable.
+-DEFINES['HUNSPELL_STATIC'] = True
diff --git a/user/thunderbird/stab.h b/user/thunderbird/stab.h
new file mode 100644
index 000000000..6f70af398
--- /dev/null
+++ b/user/thunderbird/stab.h
@@ -0,0 +1,71 @@
+/* $OpenBSD: stab.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */
+/* $NetBSD: stab.h,v 1.4 1994/10/26 00:56:25 cgd Exp $ */
+
+/*-
+ * Copyright (c) 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)stab.h 5.2 (Berkeley) 4/4/91
+ */
+
+#ifndef _STAB_H_
+#define _STAB_H_
+
+/*
+ * The following are symbols used by various debuggers and by the Pascal
+ * compiler. Each of them must have one (or more) of the bits defined by
+ * the N_STAB mask set.
+ */
+
+#define N_GSYM 0x20 /* global symbol */
+#define N_FNAME 0x22 /* F77 function name */
+#define N_FUN 0x24 /* procedure name */
+#define N_STSYM 0x26 /* data segment variable */
+#define N_LCSYM 0x28 /* bss segment variable */
+#define N_MAIN 0x2a /* main function name */
+#define N_PC 0x30 /* global Pascal symbol */
+#define N_RSYM 0x40 /* register variable */
+#define N_SLINE 0x44 /* text segment line number */
+#define N_DSLINE 0x46 /* data segment line number */
+#define N_BSLINE 0x48 /* bss segment line number */
+#define N_SSYM 0x60 /* structure/union element */
+#define N_SO 0x64 /* main source file name */
+#define N_LSYM 0x80 /* stack variable */
+#define N_BINCL 0x82 /* include file beginning */
+#define N_SOL 0x84 /* included source file name */
+#define N_PSYM 0xa0 /* parameter variable */
+#define N_EINCL 0xa2 /* include file end */
+#define N_ENTRY 0xa4 /* alternate entry point */
+#define N_LBRAC 0xc0 /* left bracket */
+#define N_EXCL 0xc2 /* deleted include file */
+#define N_RBRAC 0xe0 /* right bracket */
+#define N_BCOMM 0xe2 /* begin common */
+#define N_ECOMM 0xe4 /* end common */
+#define N_ECOML 0xe8 /* end common (local name) */
+#define N_LENG 0xfe /* length of preceding entry */
+
+#endif /* !_STAB_H_ */
diff --git a/user/thunderbird/thunderbird.desktop b/user/thunderbird/thunderbird.desktop
new file mode 100644
index 000000000..210859df0
--- /dev/null
+++ b/user/thunderbird/thunderbird.desktop
@@ -0,0 +1,64 @@
+[Desktop Entry]
+Name=Thunderbird
+GenericName=Mail Client
+GenericName[ast]=Client de correu
+GenericName[ca]=Client de correu
+GenericName[cs]=Poštovní klient
+GenericName[da]=E-postklient
+GenericName[de]=E-Mail-Anwendung
+GenericName[el]=Λογισμικό αλληλογραφίας
+GenericName[es]=Cliente de correo
+GenericName[fi]=Sähköpostiohjelma
+GenericName[fr]=Client de messagerie
+GenericName[gl]=Cliente de correo electrónico
+GenericName[he]=לקוח דוא״ל
+GenericName[hr]=Klijent e-pošte
+GenericName[hu]=Levelezőkliens
+GenericName[it]=Client email
+GenericName[ja]=電子メールクライアント
+GenericName[ko]=메일 클라이언트
+GenericName[nl]=E-mailprogramma
+GenericName[pl]=Klient poczty
+GenericName[pt_BR]=Cliente de E-mail
+GenericName[ru]=Почтовый клиент
+GenericName[sk]=Poštový klient
+GenericName[ug]=ئېلخەت دېتالى
+GenericName[uk]=Поштова програма
+GenericName[vi]=Phần mềm khách quản lý thư điện tử
+GenericName[zh_CN]=邮件新闻客户端
+GenericName[zh_TW]=郵件用戶端
+Comment=Send and receive mail with Thunderbird
+Comment[ast]=Lleer y escribir corréu electrónicu
+Comment[ca]=Llegiu i escriviu correu
+Comment[cs]=Čtení a psaní pošty
+Comment[da]=Skriv/læs e-post/nyhedsgruppe med Mozilla Thunderbird
+Comment[de]=E-Mails und Nachrichten mit Thunderbird lesen und schreiben
+Comment[el]=Διαβάστε και γράψτε γράμματα με το Mozilla Thunderbird
+Comment[es]=Lea y escriba correos y noticias con Thunderbird
+Comment[fi]=Lue ja kirjoita sähköposteja
+Comment[fr]=Lire et écrire des courriels
+Comment[gl]=Lea e escriba correo electrónico
+Comment[he]=קריאה/כתיבה של דוא״ל/חדשות באמצעות Mozilla Thunderbird
+Comment[hr]=Čitajte/šaljite e-poštu s Thunderbird
+Comment[hu]=Levelek írása és olvasása a Thunderbirddel
+Comment[it]=Per leggere e scrivere email
+Comment[ja]=メールの読み書き
+Comment[ko]=Mozilla Thunderbird 메일/뉴스 읽기 및 쓰기 클라이언트
+Comment[nl]=E-mail/nieuws lezen en schrijven met Mozilla Thunderbird
+Comment[pl]=Czytanie i wysyłanie e-maili
+Comment[pt_BR]=Leia e escreva suas mensagens
+Comment[ru]=Читайте и пишите письма
+Comment[sk]=Čítajte a píšte poštu pomocou programu Thunderbird
+Comment[sv]=Läs och skriv e-post
+Comment[ug]=ئېلخەت ۋە خەۋەرلەرنى Mozilla Thunderbird دا كۆرۈش ۋە يېزىش
+Comment[uk]=Читання та написання листів
+Comment[vi]=Đọc và soạn thư điện tử
+Comment[zh_CN]=阅读邮件或新闻
+Comment[zh_TW]=以 Mozilla Thunderbird 讀寫郵件或新聞
+Exec=thunderbird %u
+Icon=thunderbird
+Terminal=false
+Type=Application
+MimeType=message/rfc822;x-scheme-handler/mailto;
+StartupNotify=true
+Categories=Network;Email;
diff --git a/user/umbrello/APKBUILD b/user/umbrello/APKBUILD
new file mode 100644
index 000000000..a4407ad44
--- /dev/null
+++ b/user/umbrello/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=umbrello
+pkgver=17.12.2
+pkgrel=0
+pkgdesc="Software modelling tool and code generator"
+url="https://umbrello.kde.org/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
+ qt5-qtwebkit-dev karchive-dev kcompletion-dev kcoreaddons-dev ki18n-dev
+ kcrash-dev kdoctools-dev kiconthemes-dev kdelibs4support-dev kio-dev
+ ktexteditor-dev kwindowsystem-dev kwidgetsaddons-dev kxmlgui-dev"
+install=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.kde.org/stable/applications/$pkgver/src/umbrello-$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 \
+ -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="1ad128a798b429c3ccfaac2e754d57b3df9d62a697f43a0397f7f26958036a78e9a07d0bc62d923b3af39bcc97f830a88149e2505fcc0c36404a12190806254d umbrello-17.12.2.tar.xz"
diff --git a/user/xsane/APKBUILD b/user/xsane/APKBUILD
new file mode 100644
index 000000000..aa18627a5
--- /dev/null
+++ b/user/xsane/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xsane
+pkgver=0.999
+pkgrel=0
+pkgdesc="Graphical scanning software"
+url="http://xsane.org/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+"
+depends=""
+makedepends="gettext-dev gtk+2.0-dev lcms-dev libjpeg-turbo-dev libpng-dev
+ sane-dev tiff-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://www.xsane.org/download/xsane-$pkgver.tar.gz
+ xsane-0.999-libpng16.patch"
+builddir="$srcdir/xsane-$pkgver"
+
+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="73ec961fce1a86b5d6f5bac0995d222785eb4b077dc8e72492b092d2bf4500455426e80e4d27233721cd38ec84f77fb9f92190a6afe45bdaf7ffd1ee50b431ed xsane-0.999.tar.gz
+6b271360b9cb7e2db165fbd67eed95fdfa9a2e52d61ce54679f5a6a0bdc6cee79be3224063da22907f6eaa6e6645d321ccddd9b37484156ba55aef8977e25738 xsane-0.999-libpng16.patch"
diff --git a/user/xsane/xsane-0.999-libpng16.patch b/user/xsane/xsane-0.999-libpng16.patch
new file mode 100644
index 000000000..2f947e73c
--- /dev/null
+++ b/user/xsane/xsane-0.999-libpng16.patch
@@ -0,0 +1,20 @@
+--- xsane-0.999/src/xsane-save.c.old 2010-11-16 21:06:00.000000000 +0000
++++ xsane-0.999/src/xsane-save.c 2018-03-08 22:45:17.763964565 +0000
+@@ -4910,7 +4910,7 @@
+ return -1; /* error */
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ snprintf(buf, sizeof(buf), "%s %s", ERR_DURING_SAVE, ERR_LIBPNG);
+ xsane_back_gtk_error(buf, TRUE);
+@@ -5100,7 +5100,7 @@
+ return -1; /* error */
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ snprintf(buf, sizeof(buf), "%s %s", ERR_DURING_SAVE, ERR_LIBPNG);
+ xsane_back_gtk_error(buf, TRUE);