summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/alpine/APKBUILD46
-rw-r--r--user/alpine/support-musl.patch20
-rw-r--r--user/at-spi2-atk/APKBUILD4
-rw-r--r--user/at-spi2-core/APKBUILD9
-rw-r--r--user/at-spi2-core/stupid-meson-fix.patch11
-rw-r--r--user/atk/APKBUILD4
-rw-r--r--user/atril/APKBUILD44
-rw-r--r--user/ayatana-ido/APKBUILD46
-rw-r--r--user/ayatana-ido/gtk-doc-fix.patch16
-rw-r--r--user/caja-dropbox/APKBUILD38
-rw-r--r--user/caja-extensions/APKBUILD37
-rw-r--r--user/caja/APKBUILD44
-rw-r--r--user/cdrtools/APKBUILD34
-rw-r--r--user/cmus/APKBUILD6
-rw-r--r--user/cmus/ppc-libatomic.patch29
-rw-r--r--user/dconf/APKBUILD37
-rw-r--r--user/dosbox/APKBUILD6
-rw-r--r--user/dosbox/gcc8-pmmx.patch32
-rw-r--r--user/enchant/APKBUILD1
-rw-r--r--user/engrampa/APKBUILD39
-rw-r--r--user/eom/APKBUILD39
-rw-r--r--user/evince/APKBUILD4
-rw-r--r--user/featherpad/APKBUILD4
-rw-r--r--user/freetype/0001-Enable-table-validation-modules.patch34
-rw-r--r--user/freetype/0002-Enable-subpixel-rendering.patch25
-rw-r--r--user/freetype/0003-Enable-infinality-subpixel-hinting.patch27
-rw-r--r--user/freetype/0004-Enable-long-PCF-family-names.patch25
-rw-r--r--user/freetype/40-memcpy-fix.patch14
-rw-r--r--user/freetype/APKBUILD28
-rw-r--r--user/freetype/freetype-profile.sh12
-rw-r--r--user/giblib/APKBUILD2
-rw-r--r--user/glib-networking/APKBUILD6
-rw-r--r--user/glibmm/APKBUILD6
-rw-r--r--user/gnutls/APKBUILD4
-rw-r--r--user/gobject-introspection/APKBUILD9
-rw-r--r--user/gpgme/APKBUILD9
-rw-r--r--user/gpgme/test32bit.patch93
-rw-r--r--user/gsettings-desktop-schemas/APKBUILD27
-rw-r--r--user/gtk+3.0/APKBUILD4
-rw-r--r--user/gtksourceview-3.0/APKBUILD4
-rw-r--r--user/gucharmap/APKBUILD40
-rw-r--r--user/gvim/APKBUILD4
-rw-r--r--user/icewm/APKBUILD4
-rw-r--r--user/imagemagick/APKBUILD4
-rw-r--r--user/jasper/APKBUILD7
-rw-r--r--user/libayatana-indicator/APKBUILD44
-rw-r--r--user/libebml/APKBUILD4
-rw-r--r--user/libfakekey/APKBUILD43
-rw-r--r--user/libglade/APKBUILD43
-rw-r--r--user/libgnome-keyring/APKBUILD39
-rw-r--r--user/libgtop/APKBUILD37
-rw-r--r--user/libmatekbd/APKBUILD38
-rw-r--r--user/libmatemixer/APKBUILD51
-rw-r--r--user/libmateweather/APKBUILD37
-rw-r--r--user/libmatroska/APKBUILD4
-rw-r--r--user/libmpeg2/APKBUILD12
-rw-r--r--user/libmpeg2/altivec.patch16
-rw-r--r--user/libnice/APKBUILD4
-rw-r--r--user/libpeas/APKBUILD39
-rw-r--r--user/libreoffice/APKBUILD4
-rw-r--r--user/libreoffice/boost.patch17
-rw-r--r--user/libsass/APKBUILD2
-rw-r--r--user/libsoup/APKBUILD32
-rw-r--r--user/libssh2/APKBUILD11
-rw-r--r--user/libxklavier/APKBUILD6
-rw-r--r--user/marco/APKBUILD40
-rw-r--r--user/marco/correctly-posix.patch12
-rw-r--r--user/mate-applets/APKBUILD41
-rw-r--r--user/mate-backgrounds/APKBUILD37
-rw-r--r--user/mate-calc/APKBUILD37
-rw-r--r--user/mate-common/APKBUILD37
-rw-r--r--user/mate-complete/APKBUILD26
-rw-r--r--user/mate-complete/org.adelie-linux.about-mate.desktop8
-rw-r--r--user/mate-control-center/APKBUILD40
-rw-r--r--user/mate-desktop/APKBUILD38
-rw-r--r--user/mate-icon-theme/APKBUILD38
-rw-r--r--user/mate-indicator-applet/APKBUILD38
-rw-r--r--user/mate-media/APKBUILD38
-rw-r--r--user/mate-menus/APKBUILD37
-rw-r--r--user/mate-netbook/APKBUILD38
-rw-r--r--user/mate-notification-daemon/APKBUILD37
-rw-r--r--user/mate-panel/APKBUILD39
-rw-r--r--user/mate-polkit/APKBUILD37
-rw-r--r--user/mate-power-manager/APKBUILD39
-rw-r--r--user/mate-screensaver/APKBUILD38
-rw-r--r--user/mate-sensors-applet/APKBUILD38
-rw-r--r--user/mate-session-manager/APKBUILD39
-rw-r--r--user/mate-session-manager/no-systemd.patch65
-rw-r--r--user/mate-settings-daemon/APKBUILD39
-rw-r--r--user/mate-system-monitor/APKBUILD38
-rw-r--r--user/mate-terminal/APKBUILD38
-rw-r--r--user/mate-user-guide/APKBUILD37
-rw-r--r--user/mate-user-share/APKBUILD40
-rw-r--r--user/mate-utils/APKBUILD38
-rw-r--r--user/mednafen/APKBUILD22
-rw-r--r--user/mednafen/ppc.patch11
-rw-r--r--user/mednafen/ppc64.patch13
-rw-r--r--user/mesa-demos/APKBUILD4
-rw-r--r--user/meson/APKBUILD4
-rw-r--r--user/mosh/APKBUILD2
-rw-r--r--user/mozjs/APKBUILD4
-rw-r--r--user/mozjs/arm64.patch60
-rw-r--r--user/mozo/APKBUILD37
-rw-r--r--user/nghttp2/APKBUILD4
-rw-r--r--user/node/APKBUILD71
-rw-r--r--user/node/gyp-python3.patch3862
-rw-r--r--user/node/libatomic.patch14
-rw-r--r--user/node/ppc32.patch18
-rw-r--r--user/node/ppc64.patch40
-rw-r--r--user/node/python3.patch163
-rw-r--r--user/node/stack-silliness.patch14
-rw-r--r--user/node/v8-python3.patch169
-rw-r--r--user/nsd/APKBUILD4
-rw-r--r--user/openjdk8/APKBUILD309
-rw-r--r--user/openjdk8/icedtea-autoconf-config.patch114
-rw-r--r--user/openjdk8/icedtea-hotspot-musl-ppc.patch169
-rw-r--r--user/openjdk8/icedtea-hotspot-musl.patch135
-rw-r--r--user/openjdk8/icedtea-hotspot-noagent-musl.patch79
-rw-r--r--user/openjdk8/icedtea-jdk-execinfo.patch20
-rw-r--r--user/openjdk8/icedtea-jdk-fix-ipv6-init.patch42
-rw-r--r--user/openjdk8/icedtea-jdk-fix-libjvm-load.patch14
-rw-r--r--user/openjdk8/icedtea-jdk-getmntent-buffer.patch88
-rw-r--r--user/openjdk8/icedtea-jdk-includes.patch154
-rw-r--r--user/openjdk8/icedtea-jdk-musl.patch105
-rw-r--r--user/openjdk8/icedtea-jdk-tls-nist-curves.patch47
-rw-r--r--user/openjdk8/remove-gawk.patch125
-rw-r--r--user/pcsc-lite/APKBUILD4
-rw-r--r--user/perl-cgi/APKBUILD4
-rw-r--r--user/perl-class-inspector/APKBUILD4
-rw-r--r--user/perl-datetime-locale/APKBUILD4
-rw-r--r--user/perl-datetime-timezone/APKBUILD4
-rw-r--r--user/perl-json-xs/APKBUILD4
-rw-r--r--user/perl-lib-relative/APKBUILD4
-rw-r--r--user/perl-sub-quote/APKBUILD4
-rw-r--r--user/perl-test-differences/APKBUILD4
-rw-r--r--user/pluma/APKBUILD39
-rw-r--r--user/pulseaudio/APKBUILD2
-rw-r--r--user/py3-pygobject/APKBUILD4
-rw-r--r--user/py3-six/APKBUILD6
-rw-r--r--user/qt5-qtscript/APKBUILD9
-rw-r--r--user/qt5-qtscript/gcc8.patch238
-rw-r--r--user/qt5ct/APKBUILD4
-rw-r--r--user/sane/APKBUILD2
-rw-r--r--user/sassc/APKBUILD2
-rw-r--r--user/smake/APKBUILD35
-rw-r--r--user/spice/APKBUILD1
-rw-r--r--user/tigervnc/0002-vncviewer-Ensure-buffer-always-has-0-termination.patch50
-rw-r--r--user/tigervnc/APKBUILD8
-rw-r--r--user/tigervnc/initialise-var.patch24
-rw-r--r--user/tigervnc/null-termination.patch39
-rw-r--r--user/unicode-data/APKBUILD38
-rw-r--r--user/unifont/APKBUILD4
-rw-r--r--user/v4l-utils/APKBUILD4
-rw-r--r--user/vala/APKBUILD4
-rw-r--r--user/vte/APKBUILD12
-rw-r--r--user/vte/vala.patch29
-rw-r--r--user/wireguard-module-power8-64k/APKBUILD4
-rw-r--r--user/wireguard-module-power8/APKBUILD4
-rw-r--r--user/wireguard-module/APKBUILD4
-rw-r--r--user/wireguard-tools/APKBUILD4
-rw-r--r--user/wpa_supplicant/APKBUILD27
-rw-r--r--user/xf86-video-intel/APKBUILD7
-rw-r--r--user/xf86-video-intel/pmmx.patch13
-rw-r--r--user/xfce4-screenshooter/APKBUILD4
-rw-r--r--user/xfce4-whiskermenu-plugin/APKBUILD4
-rw-r--r--user/xfdesktop/APKBUILD4
-rw-r--r--user/xorg-gtest/APKBUILD48
-rw-r--r--user/xsane/APKBUILD2
-rw-r--r--user/xscreensaver/APKBUILD37
-rw-r--r--user/xscreensaver/xscreensaver-fixes.patch14
-rw-r--r--user/zenity/APKBUILD37
171 files changed, 8704 insertions, 504 deletions
diff --git a/user/alpine/APKBUILD b/user/alpine/APKBUILD
new file mode 100644
index 000000000..189057dea
--- /dev/null
+++ b/user/alpine/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=alpine
+pkgver=2.21
+pkgrel=0
+pkgdesc="Terminal-based email client"
+url="http://alpine.x10host.com/alpine/"
+arch="all"
+license="Apache-2.0"
+depends=""
+makedepends="aspell-dev krb5-dev linux-pam-dev ncurses-dev openldap-dev
+ openssl-dev"
+subpackages="$pkgname-doc"
+source="http://alpine.x10host.com/alpine/release/src/alpine-$pkgver.tar.xz
+ support-musl.patch"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ autoreconf -vif
+}
+
+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="a2a36a033c8af79810816a7da7185c269808ba6d84d013691fd8b3764c63f5fb2284e6844ec5a5e99d168514ae636debf59fae962533a2916679e4e9109c6264 alpine-2.21.tar.xz
+cdf827b5947fd14b6a6c1ad86df4ff1b8be1ffd51279aaa02376b2b60f3de742c54364e18d73d9a75c5c87ed3c8668a3f0c9eb59733f8da195e85833b4364782 support-musl.patch"
diff --git a/user/alpine/support-musl.patch b/user/alpine/support-musl.patch
new file mode 100644
index 000000000..ab3c2d857
--- /dev/null
+++ b/user/alpine/support-musl.patch
@@ -0,0 +1,20 @@
+--- ./configure.ac.orig
++++ ./configure.ac
+@@ -723,7 +723,7 @@
+ else
+ dnl preload c-client default locations/options
+ case $host in
+- *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*)
++ *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*|*-linux-musl*)
+ if test -f /etc/fedora-release -o -f /etc/redhat-release -o -f /etc/redhat_version ; then
+ alpine_SSLTYPE="nopwd"
+ if test -d /etc/pki/tls ; then
+@@ -1059,7 +1059,7 @@
+ dnl build from c-client. Most of this will go away when c-client
+ dnl adopts configure
+ case "$host" in
+- *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*)
++ *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*|*-linux-musl*)
+ alpine_path_delim="/"
+ alpine_mode_readonly="(0600)"
+ if test -f /etc/fedora-release ; then
diff --git a/user/at-spi2-atk/APKBUILD b/user/at-spi2-atk/APKBUILD
index 52cc5f8aa..4f328d84f 100644
--- a/user/at-spi2-atk/APKBUILD
+++ b/user/at-spi2-atk/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=at-spi2-atk
-pkgver=2.30.1
+pkgver=2.32.0
pkgrel=0
pkgdesc="GTK+ module to bridge ATK to D-Bus at-spi"
url="https://wiki.linuxfoundation.org/accessibility/d-bus"
@@ -37,4 +37,4 @@ package() {
DESTDIR="$pkgdir" ninja install
}
-sha512sums="862cccb65d2a8a7df4e899e4f53742535389a0efa0a75c936b52e68690c07e206b19d8308f0910cddb71bda0d803012d613f6959329ae43c411d1314062b7018 at-spi2-atk-2.30.1.tar.xz"
+sha512sums="095ceaa33d5b35f1f4f81a31bea00487c054493cb29d4fdbcf74331ec8d1b9570dc7cb93e1cc06da9ea3f5805e7a3a9e7bf80cfdbce86a1822c2a46327109393 at-spi2-atk-2.32.0.tar.xz"
diff --git a/user/at-spi2-core/APKBUILD b/user/at-spi2-core/APKBUILD
index 1ccdb23c6..38feb8b0a 100644
--- a/user/at-spi2-core/APKBUILD
+++ b/user/at-spi2-core/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=at-spi2-core
-pkgver=2.30.1
+pkgver=2.32.0
pkgrel=0
pkgdesc="Protocol definitions and daemon for D-Bus at-spi"
url="https://wiki.linuxfoundation.org/accessibility/d-bus"
@@ -13,7 +13,9 @@ depends_dev="libxtst-dev"
makedepends="$depends_dev dbus-dev glib-dev intltool gobject-introspection-dev
dbus meson ninja"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.gnome.org/sources/at-spi2-core/${pkgver%.*}/at-spi2-core-$pkgver.tar.xz"
+source="https://download.gnome.org/sources/at-spi2-core/${pkgver%.*}/at-spi2-core-$pkgver.tar.xz
+ stupid-meson-fix.patch
+ "
build() {
cd "$builddir"
@@ -31,4 +33,5 @@ package() {
DESTDIR="$pkgdir" ninja -C builddir/ install
}
-sha512sums="c8b6a2ae5f96ce7d8c1fd32c9fec861148ceff631069b417296425fe6e2ae15198628826e13a72e018871d38e12b1128aa299edcc45eaf3eb7bbff83774361cd at-spi2-core-2.30.1.tar.xz"
+sha512sums="4c77b4e0d37b559d20e6521107e8f7e03e91392414dc7ffdceb558667f3a7a6137af6895f3a8cd97dc3e85715d7875812d658dcc84277a63a10276992bde2fa6 at-spi2-core-2.32.0.tar.xz
+628b40c26d50d35ac898eab547c7c66d481e9ab239e0de4e98f5a8d90ef189960ac8c20312c88e8036c40ef1a1bb90559d5e621157b46f75d185d6b1be550877 stupid-meson-fix.patch"
diff --git a/user/at-spi2-core/stupid-meson-fix.patch b/user/at-spi2-core/stupid-meson-fix.patch
new file mode 100644
index 000000000..461871706
--- /dev/null
+++ b/user/at-spi2-core/stupid-meson-fix.patch
@@ -0,0 +1,11 @@
+--- at-spi2-core-2.32.0/atspi/meson.build.old 2019-03-12 02:54:43.000000000 +0000
++++ at-spi2-core-2.32.0/atspi/meson.build 2019-03-23 22:15:47.910000000 +0000
+@@ -57,7 +57,7 @@
+
+ atspi_includedir = join_paths(get_option('prefix'), get_option('includedir'), 'at-spi-2.0', 'atspi')
+
+-install_headers(atspi_headers, subdir: atspi_includedir)
++install_headers(atspi_headers, install_dir: atspi_includedir)
+
+ atspi_enums = gnome.mkenums('atspi-enum-types',
+ sources: [ 'atspi-constants.h', 'atspi-types.h' ],
diff --git a/user/atk/APKBUILD b/user/atk/APKBUILD
index 6beebfcb0..c87c8dfd7 100644
--- a/user/atk/APKBUILD
+++ b/user/atk/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=atk
-pkgver=2.30.0
+pkgver=2.32.0
pkgrel=0
pkgdesc="A library providing a set of interfaces for accessibility"
url="https://www.gtk.org/"
@@ -33,4 +33,4 @@ package() {
DESTDIR="$pkgdir" ninja install
}
-sha512sums="03f311378fdb91442f27ed542fa36edd2c9c036837c9f25ff37468bf7f743277d0b9253621563d15894e0da9d37e8df0a0e2c0e47e6aae33a38b13744c3b8b8e atk-2.30.0.tar.xz"
+sha512sums="8cd2a3ee006f21835f3e564f2e1de4ae61bd9529b4c0b4f2e3ece88e905e2dd36b67affb089f41582806a1397576602a526a4b8698303708894f20af97ecac22 atk-2.32.0.tar.xz"
diff --git a/user/atril/APKBUILD b/user/atril/APKBUILD
new file mode 100644
index 000000000..4d2996967
--- /dev/null
+++ b/user/atril/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=atril
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Document viewer for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+options="!check" # testsuite requires X and py3-dogtail
+license="GPL-2.0+ AND Afmparse AND Info-ZIP AND libtiff AND LGPL-2.0+ AND MIT AND LGPL-2.1+"
+depends=""
+makedepends="caja-dev djvulibre-dev gobject-introspection-dev gtk+3.0-dev
+ intltool itstool libgxps-dev libsecret-dev libsm-dev libspectre-dev
+ libxml2-dev libxml2-utils poppler-dev python3 tiff-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://pub.mate-desktop.org/releases/1.22/atril-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-introspection \
+ --enable-pixbuf \
+ --enable-comics \
+ --enable-xps
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="bf940178647c348fd78e828bcb3a55c4ff6195d4020bf198ae5ba4a96e2fe582f7e30fb9d4cde4143e82ae783358373d3a9fd68413295586da9fe1b374e2f034 atril-1.22.0.tar.xz"
diff --git a/user/ayatana-ido/APKBUILD b/user/ayatana-ido/APKBUILD
new file mode 100644
index 000000000..dea352c42
--- /dev/null
+++ b/user/ayatana-ido/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=ayatana-ido
+pkgver=0.4.4
+pkgrel=0
+pkgdesc="Indicator display object library for the Gnome desktop environment"
+url="https://ayatanaindicators.github.io/"
+arch="all"
+license="GPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) AND LGPL-2.0+"
+depends=""
+makedepends="glib-dev gobject-introspection-dev gtest-dev gtk+3.0-dev
+ mate-common-dev vala-dev xorg-gtest-dev"
+subpackages="$pkgname-dev"
+source="ayatana-ido-$pkgver.tar.gz::https://github.com/AyatanaIndicators/ayatana-ido/archive/$pkgver.tar.gz
+ gtk-doc-fix.patch"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ autoreconf -vif
+}
+
+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"
+ DESTDIR="$pkgdir" make install
+}
+
+sha512sums="ef04b0b6c959d209e88b1de322ac64ea33fdd043a73980bf3b043380603b6a448ea7bf43ba8e2750e1a0a9bef704a7099f7ae9b92a97d3ce0be2e9f48ba16703 ayatana-ido-0.4.4.tar.gz
+92ddc4f09c5ed7800357a76e2276c07db682408f259e22d6511696df032d6712ecd295d0775db36ad6ace5d3f352ce7d59cd9f1b24e899b7accaf680c0e4488d gtk-doc-fix.patch"
diff --git a/user/ayatana-ido/gtk-doc-fix.patch b/user/ayatana-ido/gtk-doc-fix.patch
new file mode 100644
index 000000000..867aa0b2c
--- /dev/null
+++ b/user/ayatana-ido/gtk-doc-fix.patch
@@ -0,0 +1,16 @@
+diff -Nurd ayatana-ido-0.4.4/configure.ac ayatana-ido-0.4.4.new/configure.ac
+--- ayatana-ido-0.4.4/configure.ac 2018-08-13 05:34:25.000000000 -0500
++++ ayatana-ido-0.4.4.new/configure.ac 2019-03-23 19:40:02.167258822 -0500
+@@ -138,7 +138,11 @@
+
+ dnl = GTK Doc Check ===========================================================
+
+-GTK_DOC_CHECK([1.8])
++m4_ifdef([GTK_DOC_CHECK], [
++GTK_DOC_CHECK([1.8],[])
++],[
++AM_CONDITIONAL([ENABLE_GTK_DOC], false)
++])
+
+ dnl ===========================================================================
+
diff --git a/user/caja-dropbox/APKBUILD b/user/caja-dropbox/APKBUILD
new file mode 100644
index 000000000..17b585fbc
--- /dev/null
+++ b/user/caja-dropbox/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=caja-dropbox
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="DropBox extension for Caja"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="caja-dev py3-docutils py3-pygobject"
+subpackages="$pkgname-doc"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/caja-dropbox-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm "$pkgdir"/usr/lib/caja/extensions-2.0/libcaja-dropbox.a
+}
+
+sha512sums="d21f44c0e0f7f28a963fb8611e6992b3ea58ba2ad5910e440d286ab447f2f91e4776496569eb271ed25cb2628e35d2bd80d12bf832bc76011241f6b09903a8b2 caja-dropbox-1.22.0.tar.xz"
diff --git a/user/caja-extensions/APKBUILD b/user/caja-extensions/APKBUILD
new file mode 100644
index 000000000..530be8356
--- /dev/null
+++ b/user/caja-extensions/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=caja-extensions
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Extensions for the Caja file manager"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="caja-dev dbus-glib-dev intltool mate-desktop-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/caja-extensions-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="19fd287123b8d2ba67b636066e9f8910aadd47d375eb1d52136d9b808b48abacade81dde490ce3edb6fc4a9d2ddfd39d9abf294a58aed8bcaf620c1eff03e761 caja-extensions-1.22.0.tar.xz"
diff --git a/user/caja/APKBUILD b/user/caja/APKBUILD
new file mode 100644
index 000000000..46156b522
--- /dev/null
+++ b/user/caja/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=caja
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="File manager for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+options="!check" # testsuite requires X
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="gobject-introspection-dev intltool libexif-dev libnotify-dev
+ libxml2-dev mate-desktop-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/caja-$pkgver.tar.xz"
+builddir="$srcdir/caja-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ for i in icons globs globs2 XMLnamespaces magic aliases subclasses types treemagic mime.cache version generic-icons; do
+ rm "$pkgdir"/usr/share/mime/$i
+ done
+}
+
+sha512sums="ca97a1e81cc7b061bb331d7a4574c76831dbff50bdc9ba0a162675def7278cf5dadb37aacb0e1e37a0ac2cf60df73f98353aaa36fa0e69a0097017eed5d325b6 caja-1.22.0.tar.xz"
diff --git a/user/cdrtools/APKBUILD b/user/cdrtools/APKBUILD
deleted file mode 100644
index 39a3021c8..000000000
--- a/user/cdrtools/APKBUILD
+++ /dev/null
@@ -1,34 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=cdrtools
-pkgver=3.01
-pkgrel=1
-pkgdesc="Highly portable CD/DVD/Blu-Ray command line recording software"
-url="http://schilytools.sourceforge.net/"
-arch="all"
-options="suid"
-license="CDDL-1.0"
-depends=""
-makedepends="attr-dev byacc expat-dev openssl-dev smake"
-subpackages="$pkgname-doc"
-source="https://download.sourceforge.net/cdrtools/cdrtools-$pkgver.tar.bz2"
-
-build() {
- cd "$builddir"
- smake INS_BASE=/usr
-}
-
-check() {
- cd "$builddir"
- smake check
-}
-
-package() {
- cd "$builddir"
- smake INS_BASE=/usr DESTDIR="$pkgdir" install
-
- mv "$pkgdir"/usr/share/man/man3 "$pkgdir"/usr/share/man/man3sch
- rename .3 .3sch "$pkgdir"/usr/share/man/man3sch/*.3
-}
-
-sha512sums="54f06496e47184e324fc9d8b1153d3c806ed43c3c57e2a8d79a79afe12aa5334e82fa500fe1b1bf49307ad7dfabe687f6e1ad914fc2f0c5c429d8e6a34c293eb cdrtools-3.01.tar.bz2"
diff --git a/user/cmus/APKBUILD b/user/cmus/APKBUILD
index 918cef34c..0be94312e 100644
--- a/user/cmus/APKBUILD
+++ b/user/cmus/APKBUILD
@@ -13,7 +13,8 @@ makedepends="alsa-lib-dev faad2-dev ffmpeg-dev flac-dev libao-dev libcddb-dev
libcdio-paranoia-dev libmad-dev libmodplug-dev libvorbis-dev ncurses-dev
opusfile-dev pulseaudio-dev wavpack-dev"
subpackages="$pkgname-doc"
-source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz
+ ppc-libatomic.patch"
build() {
cd "$builddir"
@@ -60,4 +61,5 @@ package() {
make DESTDIR="$pkgdir" PREFIX=/usr install
}
-sha512sums="cf359dfcefa833a5b10a2d16ac405672bea762b62b7177c115560127035682fba65c15b9a8710179a343d1f99212a0260b5c095542982202e2cd1bef5b0c17fc cmus-2.8.0.tar.gz"
+sha512sums="cf359dfcefa833a5b10a2d16ac405672bea762b62b7177c115560127035682fba65c15b9a8710179a343d1f99212a0260b5c095542982202e2cd1bef5b0c17fc cmus-2.8.0.tar.gz
+06a91da06cc916aa475467aa90bd7170c7288b68459706c3416700e79ba8707fd7a85bded0c0d5d51d805c15f59ff395670f11318ca5a419d17ab1070a48775f ppc-libatomic.patch"
diff --git a/user/cmus/ppc-libatomic.patch b/user/cmus/ppc-libatomic.patch
new file mode 100644
index 000000000..7107fb5db
--- /dev/null
+++ b/user/cmus/ppc-libatomic.patch
@@ -0,0 +1,29 @@
+From 9a56c86a663e53195a32b7908cf2bd4349bad5c3 Mon Sep 17 00:00:00 2001
+From: Luis Ressel <aranea@aixah.de>
+Date: Fri, 29 Mar 2019 17:16:16 +0100
+Subject: [PATCH] Link against libatomic on ppc32. DO NOT UPSTREAM.
+
+Assuming that we'll always need libatomic on ppc32, but never elsewhere
+is hideous and broken, but gcc is making it a huge pain to handle this
+properly.
+---
+ configure | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure b/configure
+index e76acdd..2cd5d45 100755
+--- a/configure
++++ b/configure
+@@ -98,6 +98,9 @@ check_compat()
+ CONFIG_CYGWIN=y
+ makefile_vars CONFIG_CYGWIN
+ esac
++
++ test ppc = "$(uname -m)" && try_link -latomic && COMPAT_LIBS="$COMPAT_LIBS -latomic"
++
+ makefile_vars COMPAT_LIBS
+ }
+
+--
+2.21.0
+
diff --git a/user/dconf/APKBUILD b/user/dconf/APKBUILD
new file mode 100644
index 000000000..988cfbae5
--- /dev/null
+++ b/user/dconf/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=dconf
+pkgver=0.32.0
+pkgrel=0
+pkgdesc="Configuration management for the Gnome desktop environment"
+url="https://gnome.org"
+arch="all"
+license="LGPL-2.0+ AND LGPL-2.1+"
+depends="dbus"
+makedepends="meson ninja
+ bash-completion dbus-dev docbook-xsl libxslt-dev python3-dev vala-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/dconf/${pkgver%.*}/dconf-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+check() {
+ cd "$builddir"
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="09ae65ad365947aed24228b94978b290060264e55b443d18a743e943627703c92e16e3a5ca8a0aaf3549f7a1d5aad77bdc285d4c8519db705d3104ec22b111a0 dconf-0.32.0.tar.xz"
diff --git a/user/dosbox/APKBUILD b/user/dosbox/APKBUILD
index 0b9418d50..e8674b531 100644
--- a/user/dosbox/APKBUILD
+++ b/user/dosbox/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=dosbox
pkgver=0.82.7
-pkgrel=1
+pkgrel=2
pkgdesc="Emulator for MS-DOS games"
url="https://github.com/joncampbell123/dosbox-x/"
arch="all !s390x"
@@ -15,6 +15,7 @@ source="https://github.com/joncampbell123/dosbox-x/archive/dosbox-x-wip-20180513
asmfix.patch
posix-headers.patch
constness.patch
+ gcc8-pmmx.patch
"
builddir="$srcdir/dosbox-x-dosbox-x-wip-20180513-1316"
@@ -40,4 +41,5 @@ sha512sums="38b7423b695f3b0dfd26f8c8913f26afba73ea6235bb205ec3a5d7f08ef3c74a9b6c
daf0efea03d6295f5a20d8d197f7d0ba38e0608edcfe8be19fc6091b783885d523557674f0f7df83b88186b77794723106cf7a0e02125d2cc75ecfd7d51fa91d porttalk-fix.patch
266ede57d21030f7752287f18660b47e9185a9aef9d022337dded9c9ce93e572691b41aca878f8a28c67bf5d217c7e84912336c21aacf594085dc31d99862ebf asmfix.patch
462e84d5bac8fb2c1317b303d1bdda72a50e9eedfb5251450cb8d0f98f4297d6a483eb2c95624cbc8d25e917788032dd1e7d8b0d06d82dad6600f8bd6eec85f4 posix-headers.patch
-775d8f209ea04a81fda5c3dcf8186b529248befb962019c66e60344a5e07c95462f9cc4acf0f82c44635fc86f1b4817030792a1900d36e6d911b6f782722f320 constness.patch"
+775d8f209ea04a81fda5c3dcf8186b529248befb962019c66e60344a5e07c95462f9cc4acf0f82c44635fc86f1b4817030792a1900d36e6d911b6f782722f320 constness.patch
+0e23ccef2c238583b1fbbf598da95f6e5f805edef37bd08d0d0c4a69e92f11b935b94dd3a8d889dc9587ec264b8540169b2858116f20d8467c345a179893090d gcc8-pmmx.patch"
diff --git a/user/dosbox/gcc8-pmmx.patch b/user/dosbox/gcc8-pmmx.patch
new file mode 100644
index 000000000..3b86802ed
--- /dev/null
+++ b/user/dosbox/gcc8-pmmx.patch
@@ -0,0 +1,32 @@
+From 771f1c8304253fcb95aef54da739f43712aea726 Mon Sep 17 00:00:00 2001
+From: Jonathan Campbell <jonathan@castus.tv>
+Date: Sun, 20 May 2018 19:30:58 -0700
+Subject: [PATCH] Suddenly MinGW GCC 7.3.0 does not allow the dynamic core to
+ declare EBP clobbered. Fix dynamic core entry appropriately
+
+---
+ src/cpu/core_dyn_x86/risc_x86.h | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/cpu/core_dyn_x86/risc_x86.h b/src/cpu/core_dyn_x86/risc_x86.h
+index dea5ae0ca..d2a847a4f 100644
+--- a/src/cpu/core_dyn_x86/risc_x86.h
++++ b/src/cpu/core_dyn_x86/risc_x86.h
+@@ -130,13 +130,15 @@ static BlockReturn gen_runcode(Bit8u * code) {
+ #else
+ register Bit32u tempflags=reg_flags & FMASK_TEST;
+ __asm__ volatile (
++ "pushl %%ebp \n"
+- "call 1f ; 1: addl $run_return_adress-.,(%%esp) \n"
++ "pushl $(run_return_adress) \n"
+ "pushl %2 \n"
+ "jmp *%3 \n"
+ "run_return_adress: \n"
++ "popl %%ebp \n"
+ :"=a" (retval), "=c" (tempflags)
+ :"r" (tempflags),"r" (code)
+- :"%edx","%ebx","%edi","%esi","%ebp","cc","memory"
++ :"%edx","%ebx","%edi","%esi"/*,"%ebp"*/,"cc","memory" /* NTS: GCC 7.3.0 MinGW suddenly will not allow this code to declare EBP clobbered */
+ );
+ reg_flags=(reg_flags & ~FMASK_TEST) | (tempflags & FMASK_TEST);
+ #endif
diff --git a/user/enchant/APKBUILD b/user/enchant/APKBUILD
index f2ddc1c65..57b0bf6c1 100644
--- a/user/enchant/APKBUILD
+++ b/user/enchant/APKBUILD
@@ -5,6 +5,7 @@ pkgrel=0
pkgdesc="A wrapper library for generic spell checking"
url="https://abiword.github.io/enchant/"
arch="all"
+options="!check" # Requires dictionary that it can't find
license="LGPL-2.0+"
subpackages="$pkgname-dev $pkgname-doc"
depends=""
diff --git a/user/engrampa/APKBUILD b/user/engrampa/APKBUILD
new file mode 100644
index 000000000..e2e84c8b6
--- /dev/null
+++ b/user/engrampa/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=engrampa
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Archive manager for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="caja-dev file-dev gtk+3.0-dev intltool itstool json-glib-dev
+ libsm-dev libxml2-utils"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/engrampa-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-magic
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7b4c3b85184c1530ec72eba174ee571cc14490c88f5fef1232acd4197f1020107f5172d6d4271753f9f6fcfadcf049273095b3dfbcef6fdd25a51ad8d2e17382 engrampa-1.22.0.tar.xz"
diff --git a/user/eom/APKBUILD b/user/eom/APKBUILD
new file mode 100644
index 000000000..f6479a1f6
--- /dev/null
+++ b/user/eom/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=eom
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Image viewer for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+ AND GPL-2.0-only"
+depends=""
+makedepends="gobject-introspection-dev gtk+3.0-dev intltool itstool
+ mate-desktop-dev libjpeg-turbo-dev libexif-dev libpeas-dev librsvg-dev
+ libxml2-dev libxml2-utils"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/eom-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1e086d1e2a0adc02978ffb45a4636e9b614a52d53a7a821af4050029f3fa3a774c29c2d43b5f2e0c58a100311eccc34e9424caf44e7e2139b4fa8d695b77cea0 eom-1.22.0.tar.xz"
diff --git a/user/evince/APKBUILD b/user/evince/APKBUILD
index 9f9e7172e..c1b07dc43 100644
--- a/user/evince/APKBUILD
+++ b/user/evince/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=evince
pkgver=3.31.4
-pkgrel=0
+pkgrel=1
pkgdesc="GNOME document viewer"
url="https://wiki.gnome.org/Apps/Evince"
arch="all"
@@ -13,7 +13,7 @@ makedepends="djvulibre-dev glib-dev gobject-introspection-dev
gtk+3.0-dev itstool libarchive-dev libexecinfo-dev libgxps-dev
libsecret-dev libspectre-dev libxml2-dev libxml2-utils poppler-dev
tiff-dev zlib-dev"
-subpackages="$pkgname-doc $pkgname-lang"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://ftp.gnome.org/pub/gnome/sources/evince/3.31/evince-$pkgver.tar.xz"
build() {
diff --git a/user/featherpad/APKBUILD b/user/featherpad/APKBUILD
index 85110b2c9..fc73865e7 100644
--- a/user/featherpad/APKBUILD
+++ b/user/featherpad/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=featherpad
-pkgver=0.9.3
+pkgver=0.9.4
pkgrel=0
pkgdesc="Featureful Qt-based text editor"
url="https://github.com/tsujan/FeatherPad"
@@ -31,4 +31,4 @@ package() {
make INSTALL_ROOT="$pkgdir" PREFIX=/usr install
}
-sha512sums="f06749b0ab57e6869bb6568367a7ef777a0f91c6a9229fe7892e720f48020ceac36d6948159b0516f4d1c920bff4ceb23f6b29a492d58908305856d2f03c2d36 FeatherPad-0.9.3.tar.gz"
+sha512sums="95fe137ccc0de49bb464b15aec586287e46b04ff2fe636d6092e39a6c5e3d633ca0b809181a728a8931a6628cdcf51cd0b91d8dfa58eee6a551fb3ec4ff42280 FeatherPad-0.9.4.tar.gz"
diff --git a/user/freetype/0001-Enable-table-validation-modules.patch b/user/freetype/0001-Enable-table-validation-modules.patch
deleted file mode 100644
index 3e9451fa8..000000000
--- a/user/freetype/0001-Enable-table-validation-modules.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-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/user/freetype/0002-Enable-subpixel-rendering.patch b/user/freetype/0002-Enable-subpixel-rendering.patch
deleted file mode 100644
index dfb57966e..000000000
--- a/user/freetype/0002-Enable-subpixel-rendering.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-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/user/freetype/0003-Enable-infinality-subpixel-hinting.patch b/user/freetype/0003-Enable-infinality-subpixel-hinting.patch
deleted file mode 100644
index bbfa2a2cd..000000000
--- a/user/freetype/0003-Enable-infinality-subpixel-hinting.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-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/user/freetype/0004-Enable-long-PCF-family-names.patch b/user/freetype/0004-Enable-long-PCF-family-names.patch
deleted file mode 100644
index 675423a7c..000000000
--- a/user/freetype/0004-Enable-long-PCF-family-names.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-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/user/freetype/40-memcpy-fix.patch b/user/freetype/40-memcpy-fix.patch
deleted file mode 100644
index 89e61cd0b..000000000
--- a/user/freetype/40-memcpy-fix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- ./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/user/freetype/APKBUILD b/user/freetype/APKBUILD
index 652bef747..b2f5cd66e 100644
--- a/user/freetype/APKBUILD
+++ b/user/freetype/APKBUILD
@@ -1,25 +1,17 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=freetype
-pkgver=2.9.1
-pkgrel=2
+pkgver=2.10.0
+pkgrel=0
pkgdesc="TrueType font rendering library"
url="https://www.freetype.org/"
arch="all"
license="FTL OR GPL-2.0+"
options="!check"
depends=""
-depends_dev=""
-makedepends="$depends_dev zlib-dev libpng-dev bzip2-dev"
+makedepends="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
- "
+source="http://download.savannah.gnu.org/releases/freetype/freetype-$pkgver.tar.bz2"
# secfixes:
# 2.9.1-r0:
@@ -29,7 +21,6 @@ source="http://download.savannah.gnu.org/releases/freetype/freetype-$pkgver.tar.
# - CVE-2017-8287
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -43,11 +34,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
-
- install -Dm644 "$srcdir"/freetype-profile.sh \
- "$pkgdir"/etc/profile.d/freetype.sh
}
doc() {
@@ -55,9 +42,4 @@ doc() {
default_doc
}
-sha512sums="856766e1f3f4c7dc8afb2b5ee991138c8b642c6a6e5e007cd2bc04ae58bde827f082557cf41bf541d97e8485f7fd064d10390d1ee597f19d1daed6c152e27708 freetype-2.9.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"
+sha512sums="dfad66f419ea9577f09932e0730c0c887bdcbdbc8152fa7477a0c39d69a5b68476761deed6864ddcc5cf18d100a7a3f728049768e24afcb04b1a74b25b6acf7e freetype-2.10.0.tar.bz2"
diff --git a/user/freetype/freetype-profile.sh b/user/freetype/freetype-profile.sh
deleted file mode 100644
index a4cc6423b..000000000
--- a/user/freetype/freetype-profile.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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/user/giblib/APKBUILD b/user/giblib/APKBUILD
index dcc509921..22f125ef3 100644
--- a/user/giblib/APKBUILD
+++ b/user/giblib/APKBUILD
@@ -10,7 +10,7 @@ subpackages="$pkgname-doc $pkgname-dev"
depends=""
depends_dev="freetype-dev imlib2-dev libx11-dev libxext-dev zlib-dev"
makedepends="$depends_dev"
-source="https://distfiles.gentoo.org/distfiles/$pkgname-$pkgver.tar.gz"
+source="http://distfiles.gentoo.org/distfiles/$pkgname-$pkgver.tar.gz"
prepare() {
cd "$builddir"
diff --git a/user/glib-networking/APKBUILD b/user/glib-networking/APKBUILD
index 8cb1a8019..40c86ad5c 100644
--- a/user/glib-networking/APKBUILD
+++ b/user/glib-networking/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=glib-networking
-pkgver=2.58.0
-_ver=2.58
+pkgver=2.60.0.1
+_ver=2.60
pkgrel=0
pkgdesc="Networking support for GLib"
url="https://www.gnome.org/"
@@ -37,4 +37,4 @@ package() {
rm -f "$pkgdir"/usr/lib/gio/modules/*.a
}
-sha512sums="d9cfd97ef9905eceb1f807a7d18c648fcf148214bf3fc55c718c5bcd6fb0afc429ab5b7bf72e83cf959d5ce7f145ce17952c1288d4225cc99d3c6ad66e4494ff glib-networking-2.58.0.tar.xz"
+sha512sums="98a34a14cdbbcb4a9496bce807e7720dd9e103adbacd5dc44439d5fcaf02eef12c0385df95767d7603587331b84c7ad4a677f47b00583a46f15a022572a3690f glib-networking-2.60.0.1.tar.xz"
diff --git a/user/glibmm/APKBUILD b/user/glibmm/APKBUILD
index e5dfbfd14..9ceb52bb2 100644
--- a/user/glibmm/APKBUILD
+++ b/user/glibmm/APKBUILD
@@ -1,14 +1,14 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=glibmm
-pkgver=2.58.0
+pkgver=2.60.0
pkgrel=0
pkgdesc="C++ interfaces for glib"
url="https://gnome.org"
arch="all"
license="GPL-2.0+ AND LGPL-2.1+"
depends="glib-networking"
-makedepends="glib-dev libsigc++-dev"
+makedepends="glib-dev>=2.60.0 libsigc++-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/glibmm/${pkgver%.*}/glibmm-$pkgver.tar.xz"
@@ -34,4 +34,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e376462cdf1a60ed7d7750115200162016f57797674bbf7291c11b8754a6e4394eb1e2948ce4e37247438120dba4e18f5cf9c543963c1e97d8561d174d5ae7df glibmm-2.58.0.tar.xz"
+sha512sums="ea0477d5cb6e59019e87f929630ff32ac38dd5e4fb53fe84ef64b5b41c1090c8e10a0a67b26c786ab4d9ebf64b993fa0044333b4aa8554c331a0a6d02039c5ad glibmm-2.60.0.tar.xz"
diff --git a/user/gnutls/APKBUILD b/user/gnutls/APKBUILD
index 8924c70e8..94e741c25 100644
--- a/user/gnutls/APKBUILD
+++ b/user/gnutls/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer:
pkgname=gnutls
-pkgver=3.6.6
+pkgver=3.6.7
pkgrel=0
pkgdesc="A TLS protocol implementation"
url="http://www.gnutls.org/"
@@ -72,5 +72,5 @@ xx() {
mv "$pkgdir"/usr/lib/lib*xx.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="4ff34f38d7dc543bc5750d8fdfe9be84af60c66e8d41da45f6cffc11d6c6c726784fd2d471b3416604ca1f3f9efb22ff7a290d5c92c96deda38df6ae3e794cc1 gnutls-3.6.6.tar.xz
+sha512sums="ae9b8996eb9b7269d28213f0aca3a4a17890ba8d47e3dc3b8e754ab8e2b4251e9412aaaa161a8bf56167f04cc169b4cada46f55a7bde92b955eb36cd717a99f3 gnutls-3.6.7.tar.xz
abc24ee59cc67805fe953535b0bae33080fc8b0bf788304377f6d10ec8c162c4cf203a69c98a4ba3483b4c60ed7a204433cc7db9b8190eddb0d68f6fb6dad52d gnulib-tests-dont-require-gpg-passphrase.patch"
diff --git a/user/gobject-introspection/APKBUILD b/user/gobject-introspection/APKBUILD
index c8f5fc03a..1e97e0eb5 100644
--- a/user/gobject-introspection/APKBUILD
+++ b/user/gobject-introspection/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=gobject-introspection
-pkgver=1.58.3
+pkgver=1.60.0
pkgrel=0
pkgdesc="Introspection system for GObject-based libraries"
url="https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
@@ -13,9 +13,7 @@ makedepends="$depends_dev bison flex glib-dev libffi-dev meson ninja python3-dev
checkdepends="sed"
subpackages="$pkgname-doc $pkgname-dev"
replaces="libgirepository"
-source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
- we-are-in-a-pickle.patch
- "
+source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
prepare() {
cd "$builddir"
@@ -48,5 +46,4 @@ dev() {
replaces="gobject-introspection"
}
-sha512sums="0811cd08e224975b3aa55ae89d648fc65f3105cae8a077a5671593d84743b1db28e9fbffe53fc86a2b3e82ea98c35f3daae033d3df07c7020cc3bf8b5d94f796 gobject-introspection-1.58.3.tar.xz
-106e36c04ab9035b92d7f34251c3af2c37fbbc538d2b96027735565df74314eb90a93288f1bc62c08742ff6ba525d72ea03306e3b32f48724a09548788466d3d we-are-in-a-pickle.patch"
+sha512sums="858cf12b1a606be4ec884444ef0c9f05aaaf75d4f547dde489c4eef35d125a66d3d1b7c3cd879bae0f01bc0fb75dd3473a1e1bc9f66241f32ac27b0a35a06901 gobject-introspection-1.60.0.tar.xz"
diff --git a/user/gpgme/APKBUILD b/user/gpgme/APKBUILD
index bb97598e4..c541b7af7 100644
--- a/user/gpgme/APKBUILD
+++ b/user/gpgme/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gpgme
pkgver=1.12.0
-pkgrel=1
+pkgrel=2
pkgdesc="GnuPG Made Easy"
url="https://www.gnupg.org/related_software/gpgme/"
arch="all"
@@ -13,7 +13,9 @@ depends_dev="libgpg-error-dev libassuan-dev qt5-qtbase-dev"
makedepends="$depends_dev doxygen python3-dev swig cmd:which"
subpackages="$pkgname-dev $pkgname-doc gpgmepp qgpgme py3-gpg:_py"
source="https://gnupg.org/ftp/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2
- 1.12.0-fix-t-tofuinfo.patch"
+ 1.12.0-fix-t-tofuinfo.patch
+ test32bit.patch
+ "
build() {
cd "$builddir"
@@ -60,4 +62,5 @@ _py() {
}
sha512sums="c228b3df28377df882be536ada56dc9c73150048a58e591aa4495f89c854af95820152cd60139840f994c249e9c7df50d8b89eb9d6dc4ce02aa80bbfebcdd014 gpgme-1.12.0.tar.bz2
-c8748651021a6ea670329cffb9565b905272b092315e77dc6fa9fa23890f8a55c2159edbfa026e8af961f2ff0c0d524dc8332a2e9a24fce2b37ac7cc4bb88cb3 1.12.0-fix-t-tofuinfo.patch"
+c8748651021a6ea670329cffb9565b905272b092315e77dc6fa9fa23890f8a55c2159edbfa026e8af961f2ff0c0d524dc8332a2e9a24fce2b37ac7cc4bb88cb3 1.12.0-fix-t-tofuinfo.patch
+26bb302f462d7164842acea38080b3937b0b7b11d12fcfe1a61d656a41c993474dc7d9ca2298f936b030874a2f59f85b2189b11087f8b39d4c685a9a4e5d9450 test32bit.patch"
diff --git a/user/gpgme/test32bit.patch b/user/gpgme/test32bit.patch
new file mode 100644
index 000000000..49dafdddb
--- /dev/null
+++ b/user/gpgme/test32bit.patch
@@ -0,0 +1,93 @@
+From 651a1afe80bcc421da26f38015e8a322e140f130 Mon Sep 17 00:00:00 2001
+From: Ben McGinnes <ben@adversary.org>
+Date: Sat, 20 Oct 2018 11:07:55 +1100
+Subject: [PATCH] python bindings: callback test
+
+* lang/python/tests/t-callbacks.py: Updated test logic to try
+ generating a key which expires in 2099 and if that fails then
+ fallback to an expiration in 2037 in an attempt to catch the 32-bit
+ systems.
+---
+ lang/python/tests/t-callbacks.py | 32 ++++++++++++++++++++++++++++++--
+ 1 file changed, 30 insertions(+), 2 deletions(-)
+
+diff --git a/lang/python/tests/t-callbacks.py b/lang/python/tests/t-callbacks.py
+index 5bcac237..3a210dd0 100755
+--- a/lang/python/tests/t-callbacks.py
++++ b/lang/python/tests/t-callbacks.py
+@@ -20,12 +20,14 @@
+ from __future__ import absolute_import, print_function, unicode_literals
+
+ import os
++import platform
+ import gpg
+ import support
+ _ = support # to appease pyflakes.
+
+ del absolute_import, print_function, unicode_literals
+
++oops = None
+ c = gpg.Context()
+ c.set_pinentry_mode(gpg.constants.PINENTRY_MODE_LOOPBACK)
+
+@@ -99,6 +101,17 @@ Expire-Date: 2099-12-31
+ </GnupgKeyParms>
+ """
+
++prams = """<GnupgKeyParms format="internal">
++Key-Type: RSA
++Key-Length: 1024
++Name-Real: Joe Tester
++Name-Comment: with stupid passphrase
++Name-Email: joe+gpg@example.org
++Passphrase: Crypt0R0cks
++Expire-Date: 2037-12-31
++</GnupgKeyParms>
++"""
++
+ messages = []
+
+
+@@ -111,7 +124,10 @@ def progress_cb(what, typ, current, total, hook=None):
+
+ c = gpg.Context()
+ c.set_progress_cb(progress_cb, messages)
+-c.op_genkey(parms, None, None)
++try:
++ c.op_genkey(parms, None, None)
++except Exception as oops:
++ c.op_genkey(prams, None, None)
+ assert len(messages) > 0
+
+
+@@ -123,7 +139,10 @@ def progress_cb(what, typ, current, total, hook=None):
+ c = gpg.Context()
+ c.set_progress_cb(progress_cb, None)
+ try:
+- c.op_genkey(parms, None, None)
++ try:
++ c.op_genkey(parms, None, None)
++ except Exception as oops:
++ c.op_genkey(prams, None, None)
+ except Exception as e:
+ assert e == myException
+ else:
+@@ -139,6 +158,15 @@ alpha = c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False)
+ cookie = object()
+ edit_cb_called = False
+
++def oops_check():
++ if oops is not None and platform.architecture()[0] != "64bit":
++ y2k38_msg = "System appears to be 32-bit and vulnerable to EOL in 2038."
++ elif oops is not None and platform.architecture()[0] == "64bit":
++ y2k38_msg = "System appears to be 64-bit, but may use 32-bit time."
++ else:
++ y2k38_msg = "System is 64-bit and/or not susceptible to 2038 EOL."
++ return y2k38_msg
++
+
+ def edit_cb(status, args, hook):
+ global edit_cb_called
+--
+2.11.0
+
diff --git a/user/gsettings-desktop-schemas/APKBUILD b/user/gsettings-desktop-schemas/APKBUILD
index 83bdc123e..185d15bdf 100644
--- a/user/gsettings-desktop-schemas/APKBUILD
+++ b/user/gsettings-desktop-schemas/APKBUILD
@@ -1,13 +1,13 @@
# Maintainer:
pkgname=gsettings-desktop-schemas
-pkgver=3.28.1
+pkgver=3.32.0
pkgrel=0
pkgdesc="GSettings schemas shared by GNOME desktop components"
url="https://developer.gnome.org/gio/unstable/GSettings.html"
arch="noarch"
license="LGPL-2.0-or-later"
-makedepends="glib-dev gobject-introspection-dev intltool"
-subpackages="$pkgname-dev"
+makedepends="glib-dev gobject-introspection-dev intltool meson ninja"
+subpackages="$pkgname-dev $pkgname-lang"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
prepare() {
@@ -18,24 +18,19 @@ prepare() {
build() {
cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --disable-nls
- make
+ mkdir -p build && cd build
+ meson -Dprefix=/usr ..
+ ninja
}
check() {
- cd "$builddir"
- make check
+ cd "$builddir"/build
+ ninja test
}
package() {
- cd "$builddir"
- make install DESTDIR="$pkgdir"
+ cd "$builddir"/build
+ DESTDIR="$pkgdir" ninja install
}
dev() {
@@ -47,4 +42,4 @@ dev() {
}
-sha512sums="2bf3260e976943e9d1e51feda62ef1e432870a6d9b34881afbdf99ddbe4954e5dd679697e152e793a0b38492dbbc4891018f7aa8cd4e703d05a8647cc5a56785 gsettings-desktop-schemas-3.28.1.tar.xz"
+sha512sums="cf1d78a8f9f1697e20c995286b50d556c2ecc83bf4b28be19b3258a724494a2827fb9567cabf29cda1c590488fd2645e905072e08321766c8bdddd22ac3710dc gsettings-desktop-schemas-3.32.0.tar.xz"
diff --git a/user/gtk+3.0/APKBUILD b/user/gtk+3.0/APKBUILD
index ea1c05d69..0504053e6 100644
--- a/user/gtk+3.0/APKBUILD
+++ b/user/gtk+3.0/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=gtk+3.0
-pkgver=3.24.5
+pkgver=3.24.7
pkgrel=0
pkgdesc="The GTK+ Toolkit (v3)"
url="https://www.gtk.org/"
@@ -53,4 +53,4 @@ package() {
rm -f "$pkgdir"/usr/share/man/man1/gtk-update-icon-cache.1
}
-sha512sums="344988c9e2a2d7fd2fd1e367a113be7c4a32c28c9cf395aeab923e25256b99856091d1583d3f8557aac6919a930a4d0af69b966486caab559c7d9d22585cc1a1 gtk+-3.24.5.tar.xz"
+sha512sums="2605087c3e09c81192769e6c4bcc4374e0fadbc4d05433edeaefd9915e128ff925c64fb3d07799bacccb16d85d31e53936ac09c696a09349efa6e21d886074c5 gtk+-3.24.7.tar.xz"
diff --git a/user/gtksourceview-3.0/APKBUILD b/user/gtksourceview-3.0/APKBUILD
index ca4fd1c32..12ec22e9c 100644
--- a/user/gtksourceview-3.0/APKBUILD
+++ b/user/gtksourceview-3.0/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=gtksourceview-3.0
-pkgver=3.24.9
+pkgver=3.24.10
pkgrel=0
pkgdesc="Source viewer widget for GTK+ 3.0"
url="https://gnome.org"
@@ -36,4 +36,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="29b58afba1c0b473205cf7070997139d2ca07cf68d40185aa76fa59c900ad21c03ccb79dec9970e5f96743cfdb5a7d926b21a9947244bc8cf8cbd1033467cd01 gtksourceview-3.24.9.tar.xz"
+sha512sums="990935ed7c3b10a1659cf22bd36eb71e76088768f7b70234b50465f542592720bb6b206746e0606c96ab99ba0208535fc6073b4f6c0f3427acd0ab5a43420d46 gtksourceview-3.24.10.tar.xz"
diff --git a/user/gucharmap/APKBUILD b/user/gucharmap/APKBUILD
new file mode 100644
index 000000000..9a3d7bfcf
--- /dev/null
+++ b/user/gucharmap/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=gucharmap
+pkgver=12.0.1
+_unicode=12.0.0
+pkgrel=0
+pkgdesc="Unicode utility for the Gnome desktop environment"
+url="https://gnome.org"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="desktop-file-utils gobject-introspection-dev gtk+3.0-dev intltool
+ itstool libxml2-utils unicode-data"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/gucharmap/${pkgver%.*}/gucharmap-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --with-unicode-data=/usr/share/unicode/$_unicode
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="989034350c73c3f1857167f434aa4a5c140ef7574cb799b874e421a8d0c2bf520dfcee85bc0cf8e52f439fb7d30e0db5172a25c107c80b38ce6da4e703a3ffc2 gucharmap-12.0.1.tar.xz"
diff --git a/user/gvim/APKBUILD b/user/gvim/APKBUILD
index 0d0b4af59..a31e6eee5 100644
--- a/user/gvim/APKBUILD
+++ b/user/gvim/APKBUILD
@@ -5,7 +5,7 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=gvim
_pkgreal=vim
-pkgver=8.1.0952
+pkgver=8.1.1073
pkgrel=0
pkgdesc="advanced text editor"
url="http://www.vim.org"
@@ -74,4 +74,4 @@ package() {
ln -s gvim rgvim
}
-sha512sums="485d839901b3d1fc8efcc035991d5f34849f6d05d9c556dcf5b2918cd01e7f7b490cd0a7eb976c7577adb41962dceea4552474103f0b3c7807311d07f8158bd1 vim-8.1.0952.tar.gz"
+sha512sums="74d13063853677aaff795925414baa293819ccd20e3deb7013c134b42434e8abd14db1645116b20081f80bcb3dfd9a1e0c6b210ed9af62a4cf19c183025c9779 vim-8.1.1073.tar.gz"
diff --git a/user/icewm/APKBUILD b/user/icewm/APKBUILD
index c74eaf649..78975e205 100644
--- a/user/icewm/APKBUILD
+++ b/user/icewm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=icewm
-pkgver=1.5.2
+pkgver=1.5.3
pkgrel=0
pkgdesc="A window manager designed for speed, usability, and consistency"
url="https://github.com/bbidulock/icewm"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f2a542d162e984dcc6f7b8e3fc2dbd7df46510f961431b4c3b6651351f7b236ef4724a07ce01dfa163b08c9a130e7ee3ed62e1c5b1f364340998d31290323614 icewm-1.5.2.tar.xz"
+sha512sums="3fb7bb3002687fc3105c61f062600015cf59173e054e3dc3dc1af4ec960991790bbb5b4ba842e9c67c8f73fb8189ae76772f3df58fd679884c85239e6d93a3cb icewm-1.5.3.tar.xz"
diff --git a/user/imagemagick/APKBUILD b/user/imagemagick/APKBUILD
index a96496fcc..f06e32d6c 100644
--- a/user/imagemagick/APKBUILD
+++ b/user/imagemagick/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=imagemagick
-pkgver=7.0.8.32
+pkgver=7.0.8.35
_abiver=7
_pkgver=${pkgver%.*}-${pkgver##*.}
pkgrel=0
@@ -81,4 +81,4 @@ _cxx() {
mv "$pkgdir"/usr/lib/libMagick++*.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="ca33135795c78479557526403140b5feb1c1e39c57b5b94f1f7bc2f4cef65e975dcd760c08be965882d0498011a18d6aff5567c485c54a188b3e36ee542c5e56 ImageMagick-7.0.8-32.tar.xz"
+sha512sums="6da0c64838488262809c8e70167b021624a436fc5569583075ee5878cb96ac5f511e05eede9009a49ee9856c7e96692e425dc41fe8d80a0599d300f45f2d3186 ImageMagick-7.0.8-35.tar.xz"
diff --git a/user/jasper/APKBUILD b/user/jasper/APKBUILD
index 3fbb320cd..321969aa3 100644
--- a/user/jasper/APKBUILD
+++ b/user/jasper/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=jasper
-pkgver=2.0.14
+pkgver=2.0.16
pkgrel=0
pkgdesc="Library implementing JPEG-2000"
url="http://www.ece.uvic.ca/~mdadams/jasper/"
@@ -9,7 +9,8 @@ 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"
+source="$pkgname-$pkgver.tar.gz::https://github.com/mdadams/jasper/archive/version-$pkgver.tar.gz"
+builddir="$srcdir/$pkgname-version-$pkgver"
# secfixes:
# 2.0.12-r1:
@@ -44,4 +45,4 @@ libs() {
mv "$pkgdir"/usr/lib "$subpkgdir"/usr
}
-sha512sums="9e5cffd2e899e37ba08890e2377ddfc3c2fb13d9fe00dea6b4612e4d241a6f4327de6835809b415c41ae4bf44208cf7871c1982ff5fc04ae6bc09fd376b0afc8 jasper-2.0.14.tar.gz"
+sha512sums="b3bca227f833567c9061c4a29c0599784ed6a131b5cceddfd1696542d19add821eda445ce6d83782b454b266723b24d0f028cbc644a25c0e3a75304e615b34ee jasper-2.0.16.tar.gz"
diff --git a/user/libayatana-indicator/APKBUILD b/user/libayatana-indicator/APKBUILD
new file mode 100644
index 000000000..4372a2b44
--- /dev/null
+++ b/user/libayatana-indicator/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libayatana-indicator
+pkgver=0.6.2
+pkgrel=0
+pkgdesc="Gnome library implementing the StatusNotifierItem specification"
+url="https://ayatanaindicators.github.io/"
+arch="all"
+options="!check" # incompetent test author
+license="GPL-3.0-only"
+depends=""
+makedepends="ayatana-ido-dev gtk+3.0-dev"
+subpackages="$pkgname-dev"
+source="libayatana-indicator-$pkgver.tar.gz::https://github.com/AyatanaIndicators/libayatana-indicator/archive/$pkgver.tar.gz"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ autoreconf -vif
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" make -j1 install
+}
+
+sha512sums="47a89a4f59d547e4aeeeba245ec7df360e18dc9f8a8c256cbeaf2a95e335f2734873457b2b0fdef8c2fdeaf780dda38cfe020c335a3447a2175914d580aeb8de libayatana-indicator-0.6.2.tar.gz"
diff --git a/user/libebml/APKBUILD b/user/libebml/APKBUILD
index e9aad6680..5ed4be827 100644
--- a/user/libebml/APKBUILD
+++ b/user/libebml/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=libebml
-pkgver=1.3.6
+pkgver=1.3.7
pkgrel=0
pkgdesc="Library to parse Extensible Binary Meta-Language files"
url="https://www.matroska.org/"
@@ -29,4 +29,4 @@ package() {
make install DESTDIR="$pkgdir"
}
-sha512sums="6a31a56dcde39642848f25353a462f4621d6cfd3bc9ef62add1b00d098c6a80b3c2b50ecf4d6dd50650c609eb39a6150c6d1b69ea3a77a3928bd3300af7dd91f libebml-1.3.6.tar.xz"
+sha512sums="ad574a73a1d2c5fbd4581991ff790ef22cfcaf5645295b06dce36235b43d552bbec3b400d3c80550c8020ed3720226fad05348c6034c444da1106439c7fd9fc1 libebml-1.3.7.tar.xz"
diff --git a/user/libfakekey/APKBUILD b/user/libfakekey/APKBUILD
new file mode 100644
index 000000000..d8221c552
--- /dev/null
+++ b/user/libfakekey/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libfakekey
+pkgver=0.3
+pkgrel=0
+pkgdesc="Library for faking X key-presses from character inputs"
+url="https://www.yoctoproject.org/software-item/matchbox/"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+makedepends="libx11-dev libxtst-dev"
+subpackages="$pkgname-dev"
+source="http://git.yoctoproject.org/cgit.cgi/libfakekey/snapshot/libfakekey-$pkgver.tar.gz"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ autoreconf -vif
+}
+
+build() {
+ cd "$builddir"
+ LIBS="-lX11" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="9c09007c6ab616095bdf69669cfdf0d176d44beaeb6b2a0fe8e310bb835d3f241ca7499dcb523c1eeeb24968ef908c1951f97352da419fc1bbb3883cb43dd963 libfakekey-0.3.tar.gz"
diff --git a/user/libglade/APKBUILD b/user/libglade/APKBUILD
new file mode 100644
index 000000000..97d20f603
--- /dev/null
+++ b/user/libglade/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libglade
+pkgver=2.6.4
+pkgrel=0
+pkgdesc="GUI construction toolkit for GTK+ 2"
+url="https://gnome.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+"
+depends=""
+makedepends="gtk+2.0-dev libxml2-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/libglade/${pkgver%.*}/libglade-$pkgver.tar.bz2"
+
+prepare() {
+ cd "$builddir"
+ update_config_sub
+ default_prepare
+}
+
+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="b725842febaf4c1f0d305a629ae1c61ea2de24dd6f41937e806c078fada2cea483195ef40f5238ce2045e47130c92559e984f677de667b840dd7fff0f8559735 libglade-2.6.4.tar.bz2"
diff --git a/user/libgnome-keyring/APKBUILD b/user/libgnome-keyring/APKBUILD
new file mode 100644
index 000000000..030194fc5
--- /dev/null
+++ b/user/libgnome-keyring/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libgnome-keyring
+pkgver=3.12.0
+pkgrel=0
+pkgdesc="Gnome library for secure authentication storage"
+url="https://gnome.org"
+arch="all"
+options="!check" # Test suite requires py-dbus.
+license="GPL-2.0+ AND LGPL-2.1+ AND LGPL-2.0+"
+depends=""
+makedepends="dbus-dev dbus-glib-dev gobject-introspection-dev intltool
+ libgcrypt-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/libgnome-keyring/${pkgver%.*}/libgnome-keyring-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="dd1777b6e0dd774feb86dbc72d9f2a85f2143e2772a09c438b84aec468ddc5e7ee5ebd534d24f079e5daf4757f2918d0621e26fb671fde0fcef9c74d30f8b9bd libgnome-keyring-3.12.0.tar.xz"
diff --git a/user/libgtop/APKBUILD b/user/libgtop/APKBUILD
new file mode 100644
index 000000000..ea17925e3
--- /dev/null
+++ b/user/libgtop/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libgtop
+pkgver=2.40.0
+pkgrel=0
+pkgdesc="Gnome library for system monitoring"
+url="https://gnome.org"
+arch="all"
+license="GPL-2.0+ AND GPL-2.0-only"
+depends=""
+makedepends="glib-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/libgtop/${pkgver%.*}/libgtop-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a9b2135796d7e41c63a6621f672c385d1baeb74d4af3e55c9164aaaae18c66a8a76b09a6ae8b37f89f120092123c38830e0da840c6613a09035ea62339117861 libgtop-2.40.0.tar.xz"
diff --git a/user/libmatekbd/APKBUILD b/user/libmatekbd/APKBUILD
new file mode 100644
index 000000000..f7ea8d723
--- /dev/null
+++ b/user/libmatekbd/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libmatekbd
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Keyboard libraries for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+makedepends="gobject-introspection-dev gtk+3.0-dev intltool libice-dev
+ libxklavier-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/libmatekbd-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="79f19455bb6c0df5a50e445907ac12d6bd92a54cd086e0303890bc67350de3d94b2fd665efdaec85f84a42d76af430ad0a1b9639da078179ac25d27c4a325281 libmatekbd-1.22.0.tar.xz"
diff --git a/user/libmatemixer/APKBUILD b/user/libmatemixer/APKBUILD
new file mode 100644
index 000000000..a3b1fc797
--- /dev/null
+++ b/user/libmatemixer/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libmatemixer
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Sound mixer library for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+makedepends="alsa-lib-dev intltool pulseaudio-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-alsa $pkgname-pulse"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/libmatemixer-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+alsa() {
+ pkgdesc="$pkgdesc (ALSA backend)"
+ install_if="$pkgname=$pkgver-r$pkgrel alsa-lib"
+ mkdir -p "$subpkgdir"/usr/lib/$pkgname
+ mv "$pkgdir"/usr/lib/$pkgname/$pkgname-alsa.so "$subpkgdir"/usr/lib/$pkgname
+}
+
+pulse() {
+ pkgdesc="$pkgdesc (PulseAudio backend)"
+ install_if="$pkgname=$pkgver-r$pkgrel pulseaudio"
+ mkdir -p "$subpkgdir"/usr/lib/$pkgname
+ mv "$pkgdir"/usr/lib/$pkgname/$pkgname-pulse.so "$subpkgdir"/usr/lib/$pkgname
+}
+
+sha512sums="6eaa006142601c077ac70739e637273288a4b9713dfc4179341c4832ae4e3b362e92104e150132ee274224d6c5dc057d812b7e1814e49a7690581de6d81e0db8 libmatemixer-1.22.0.tar.xz"
diff --git a/user/libmateweather/APKBUILD b/user/libmateweather/APKBUILD
new file mode 100644
index 000000000..3d6f9573d
--- /dev/null
+++ b/user/libmateweather/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libmateweather
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Weather library for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.1+ AND GPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool libsoup-dev libxml2-dev libxml2-utils"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/libmateweather-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="43371fc615dda2b9042633a63ac4c1fb0b1ea43b20c783e443b0f57e10ad8fddedbd593f03bd6c942729f0a9c80484266fe1ef900d128fa4b02f80d6a80ae9bd libmateweather-1.22.0.tar.xz"
diff --git a/user/libmatroska/APKBUILD b/user/libmatroska/APKBUILD
index ea56219a2..85e521369 100644
--- a/user/libmatroska/APKBUILD
+++ b/user/libmatroska/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=libmatroska
-pkgver=1.4.9
+pkgver=1.5.0
pkgrel=0
pkgdesc="Library to parse Matroska files"
url="https://www.matroska.org/"
@@ -29,4 +29,4 @@ package() {
make install DESTDIR="$pkgdir"
}
-sha512sums="281224b66ce7ef39daf0f186cda1144250e190b914e64f4f2524e8bf0170a3d18dbc50f204d4ca8d7eaffe183a61f96c92ba6ec4325bacb068272d62cdbcef33 libmatroska-1.4.9.tar.xz"
+sha512sums="eb59b5afd9d510c2d6c7408b0053a261cee6669a9f5bbb1a939d98d96ac6c9b8f340691e95310268f59c954a1d9f72322fd0ec7b442a74c56cd2e2c22eb3a754 libmatroska-1.5.0.tar.xz"
diff --git a/user/libmpeg2/APKBUILD b/user/libmpeg2/APKBUILD
index f72f51e93..f24035f54 100644
--- a/user/libmpeg2/APKBUILD
+++ b/user/libmpeg2/APKBUILD
@@ -1,25 +1,26 @@
# Maintainer:
pkgname=libmpeg2
pkgver=0.5.1
-pkgrel=9
+pkgrel=10
pkgdesc="Library for decoding MPEG-1 and MPEG-2 video streams"
url="http://libmpeg2.sourceforge.net/"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
subpackages="$pkgname-dev $pkgname-doc mpeg2dec"
makedepends="libx11-dev libice-dev libsm-dev libxext-dev libxv-dev"
-source="https://distfiles.gentoo.org/distfiles/libmpeg2-$pkgver.tar.gz
+source="http://distfiles.gentoo.org/distfiles/libmpeg2-$pkgver.tar.gz
arm-private-symbols.patch
arm-textrel.patch
+ altivec.patch
"
prepare() {
update_config_sub
default_prepare
+ autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +34,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -50,4 +49,5 @@ mpeg2dec() {
sha512sums="3648a2b3d7e2056d5adb328acd2fb983a1fa9a05ccb6f9388cc686c819445421811f42e8439418a0491a13080977f074a0d8bf8fa6bc101ff245ddea65a46fbc libmpeg2-0.5.1.tar.gz
334e4e0b1e2877311503d2907f4f65c26d6a83ee79308c49697b2f3d2b8da9ac665e19ab419d85a944eaa34e1d43f512d1418a372cd444381d66f71df2a92c83 arm-private-symbols.patch
-888b8b4f90ece7f8dcd54895c36e2a93471de167f83cddc67d6943baf9e7ea19abd31ab055f6805629a2e176a1057e18de6a053fdea69cec90483a5165efa9c9 arm-textrel.patch"
+888b8b4f90ece7f8dcd54895c36e2a93471de167f83cddc67d6943baf9e7ea19abd31ab055f6805629a2e176a1057e18de6a053fdea69cec90483a5165efa9c9 arm-textrel.patch
+d985e832cf0d10f6f63f3ac0140bddb3c4bd92c44c09a99ec1bd195f36d69b01a14a020ab7ce6d6c154439d4d006cd5da1fa23dbf2c694a1f2e6b1793c8d416e altivec.patch"
diff --git a/user/libmpeg2/altivec.patch b/user/libmpeg2/altivec.patch
new file mode 100644
index 000000000..7edfaa344
--- /dev/null
+++ b/user/libmpeg2/altivec.patch
@@ -0,0 +1,16 @@
+--- a/configure.ac.bak 2010-05-25 17:12:14.756245990 +0000
++++ b/configure.ac 2010-05-25 17:11:51.629581723 +0000
+@@ -79,11 +79,10 @@
+ CFLAGS="$OPT_CFLAGS $TRY_CFLAGS $CFLAGS"
+ AC_MSG_CHECKING([if <altivec.h> is needed])
+ AC_TRY_COMPILE([],
+- [typedef vector int t;
+- vec_ld(0, (unsigned char *)0);],
++ [vector int t; t = vec_add(t,t);],
+ [have_altivec=yes; AC_MSG_RESULT(no)],
+ [AC_TRY_COMPILE([#include <altivec.h>],
+- [typedef vector int t; vec_ld(0, (unsigned char *)0);],
++ [vector int t; t = vec_add(t,t);],
+ [AC_DEFINE([HAVE_ALTIVEC_H],,
+ [Define to 1 if you have the <altivec.h> header.])
+ have_altivec=yes; AC_MSG_RESULT(yes)],
diff --git a/user/libnice/APKBUILD b/user/libnice/APKBUILD
index 15c544c34..d7ab8cdb8 100644
--- a/user/libnice/APKBUILD
+++ b/user/libnice/APKBUILD
@@ -6,10 +6,10 @@ pkgrel=0
pkgdesc="GLib-based Interactive Connectivity Establishment (ICE) library"
url="https://nice.freedesktop.org/wiki/"
arch="all"
+options="!check" # test-send-recv fails on 32-bit platforms
license="MPL-1.1 AND LGPL-2.1-only"
depends=""
-depends_dev="glib-dev"
-makedepends="$depends_dev gobject-introspection-dev gstreamer-dev openssl-dev"
+makedepends="glib-dev gobject-introspection-dev gstreamer-dev openssl-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://nice.freedesktop.org/releases/libnice-$pkgver.tar.gz
dont-error-on-socket-close.patch
diff --git a/user/libpeas/APKBUILD b/user/libpeas/APKBUILD
new file mode 100644
index 000000000..942d22442
--- /dev/null
+++ b/user/libpeas/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libpeas
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="GObject-based plugin framework"
+url="https://gnome.org"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="intltool glib-dev gobject-introspection-dev gtk+3.0-dev
+ py3-pygobject py3-pygobject-dev python3-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="https://download.gnome.org/sources/libpeas/${pkgver%.*}/libpeas-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="9c1da1d4b5688c0f4d0647f3519dbfbed94c8921091057aaef0e41bf5ed3f8faf04a49ce9e4eea3fd7bf4ac4dfa1727d76a5f6dae2a4f52228d4c8c74b420c91 libpeas-1.22.0.tar.xz"
diff --git a/user/libreoffice/APKBUILD b/user/libreoffice/APKBUILD
index a9e18b5f3..b6968e4ab 100644
--- a/user/libreoffice/APKBUILD
+++ b/user/libreoffice/APKBUILD
@@ -94,6 +94,7 @@ source="https://download.documentfoundation.org/$pkgname/src/$_ver/$pkgname-$pkg
disable-outdated-font-test.patch
disable-mariadbc.patch
disable-mysqlc.patch
+ boost.patch
"
ldpath="/usr/lib/$pkgname/program"
@@ -483,4 +484,5 @@ bac06a1f0f6ef3e5860ec340470583b2a7ff079efa9efee9119ae1ac320b97ecbfdb7eba63975d4f
6a039ba592a23b8db1dd5c8d5dffbc9562270de691d2eb1e1c420f8632532c0fce14a0f3844dc2e6f6b6b04655c40230bd69fd81d1ae6f0bd16f0e88ce0a2783 disable-crc-test.patch
4ffc389a3c545d37d152bb52390c3abd06a32eb9fee03110c07e8b57f9b9d1be68fdc5092ad0be76f6540367a1f1d2e9e32d519021d8205847594edb811da428 disable-outdated-font-test.patch
c1925fe5833410c6a4b47a1723e67ce3898fc01ebded766023855cd93f290a6788638a86a8595e112ab788628c0ea7642c41d7ff987ba9117c2e079a99a3b29f disable-mariadbc.patch
-01ef207d0b3ab1ded5edadd2d05cefe65d7c2dc4285abee12d7fbb61c92b2a3e37d5cfe5bb8f5ea9a40fd2918396ec25b473a916012e04732ebbe79ee6768a21 disable-mysqlc.patch"
+01ef207d0b3ab1ded5edadd2d05cefe65d7c2dc4285abee12d7fbb61c92b2a3e37d5cfe5bb8f5ea9a40fd2918396ec25b473a916012e04732ebbe79ee6768a21 disable-mysqlc.patch
+431f55b4ec96caa94b0f55d3691931ad65320ecacbd8f9c9f477107136866ba614683eb77458006960240918392e995a567f5b5436d75003ac036f6d24a77e0a boost.patch"
diff --git a/user/libreoffice/boost.patch b/user/libreoffice/boost.patch
new file mode 100644
index 000000000..cd8ef9dba
--- /dev/null
+++ b/user/libreoffice/boost.patch
@@ -0,0 +1,17 @@
+After https://github.com/boostorg/logic/commit/23cd89d4c80f build fails:
+
+sfx2/source/appl/shutdownicon.cxx:170:12: error: no viable conversion from returned value of type 'boost::logic::tribool' to function return type 'bool'
+ return loaded;
+ ^~~~~~
+
+--- lo/sfx2/source/appl/shutdownicon.cxx.orig 2018-06-19 22:27:30 UTC
++++ lo/sfx2/source/appl/shutdownicon.cxx
+@@ -167,7 +167,7 @@ bool LoadModule()
+ #endif // ENABLE_QUICKSTART_APPLET
+ }
+ assert(!boost::logic::indeterminate(loaded));
+- return loaded;
++ return bool{loaded};
+ }
+
+ }
diff --git a/user/libsass/APKBUILD b/user/libsass/APKBUILD
index b96567340..5d560aa6e 100644
--- a/user/libsass/APKBUILD
+++ b/user/libsass/APKBUILD
@@ -4,7 +4,7 @@ pkgname=libsass
pkgver=3.5.5
pkgrel=0
pkgdesc="Library for preprocessing CSS"
-url="http://sass-lang.com/libsass"
+url="https://sass-lang.com/libsass"
arch="all"
options="!check" # Tests require sassc, which requires this library.
license="MIT"
diff --git a/user/libsoup/APKBUILD b/user/libsoup/APKBUILD
index b69b2ea55..27dde65ad 100644
--- a/user/libsoup/APKBUILD
+++ b/user/libsoup/APKBUILD
@@ -1,38 +1,32 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=libsoup
-pkgver=2.64.2
+pkgver=2.66.0
pkgrel=0
pkgdesc="GObject-based HTTP library"
url="https://wiki.gnome.org/Projects/libsoup"
arch="all"
-options="!check" # test suite requires poorly-configured apache-httpd
license="LGPL-2.0+ AND LGPL-2.1+"
makedepends="glib-dev libxml2-dev sqlite-dev libpsl-dev intltool vala-dev
- gobject-introspection-dev glib-networking"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://download.gnome.org/sources/libsoup/2.64/libsoup-$pkgver.tar.xz"
+ gobject-introspection-dev glib-networking meson ninja krb5-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.gnome.org/sources/libsoup/${pkgver%.*}/libsoup-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ mkdir -p "$builddir"/build
+ cd "$builddir"/build
+ meson -Dprefix=/usr ..
+ ninja
}
check() {
- cd "$builddir"
- make check
+ cd "$builddir"/build
+ ninja test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ cd "$builddir"/build
+ DESTDIR="$pkgdir" ninja install
}
-sha512sums="c001495be4e1eafd169b904431b22e961b52f5a3202f2e75b0657281cbfd91153148765bd95378bba3e85a66d7eaca428750641f20c07ca3232d1f9bdabdc90f libsoup-2.64.2.tar.xz"
+sha512sums="a79d4dafbf12a3345803b38859a398839e3e9e389552c90bab60b005ffa7e4ce2f43112e322ca10f134ab6e6c53568e058c82c370617e872539e1fafd82a1352 libsoup-2.66.0.tar.xz"
diff --git a/user/libssh2/APKBUILD b/user/libssh2/APKBUILD
index 9497d8ace..cb6e11f97 100644
--- a/user/libssh2/APKBUILD
+++ b/user/libssh2/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer:
pkgname=libssh2
-pkgver=1.8.0
-pkgrel=2
+pkgver=1.8.2
+pkgrel=0
pkgdesc="Library for accessing SSH servers"
url="https://libssh2.org/"
arch="all"
@@ -12,11 +12,6 @@ makedepends_host="openssl-dev zlib-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://libssh2.org/download/libssh2-$pkgver.tar.gz"
-prepare() {
- cd "$builddir"
- update_config_sub
-}
-
build() {
cd "$builddir"
./configure \
@@ -42,4 +37,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="289aa45c4f99653bebf5f99565fe9c519abc204feb2084b47b7cc3badc8bf4ecdedd49ea6acdce8eb902b3c00995d5f92a3ca77b2508b92f04ae0e7de7287558 libssh2-1.8.0.tar.gz"
+sha512sums="390ab4ad93bb738415ec11a6eb92806c9b9e9e5d8ee7c442d841a58b4292c1c447a9bc99e153ba464e2e11f9c0d1913469303598c3046722d1ae821991e8cb93 libssh2-1.8.2.tar.gz"
diff --git a/user/libxklavier/APKBUILD b/user/libxklavier/APKBUILD
index 0f3964a06..e1addd860 100644
--- a/user/libxklavier/APKBUILD
+++ b/user/libxklavier/APKBUILD
@@ -2,12 +2,14 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=libxklavier
pkgver=5.4
-pkgrel=0
+pkgrel=1
pkgdesc="High-level API for XKB"
url="https://www.freedesktop.org/wiki/Software/LibXklavier/"
arch="all"
license="LGPL-2.0+"
-makedepends="libx11-dev libxml2-dev glib-dev libxcb-dev libxi-dev iso-codes-dev"
+makedepends="gobject-introspection-dev libx11-dev libxml2-dev glib-dev
+ libxcb-dev libxkbcommon-dev libxkbfile-dev libxi-dev iso-codes-dev
+ vala-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://people.freedesktop.org/~svu/libxklavier-$pkgver.tar.bz2"
diff --git a/user/marco/APKBUILD b/user/marco/APKBUILD
new file mode 100644
index 000000000..99289220b
--- /dev/null
+++ b/user/marco/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=marco
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Window manager for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND MIT-advertising AND MIT-CMU"
+depends=""
+makedepends="gtk+3.0-dev intltool itstool libcanberra-dev libice-dev libsm-dev
+ libxml2-utils zenity"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/marco-$pkgver.tar.xz
+ correctly-posix.patch"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="0935ca1532fde882e21ebbc67b41afe80e15e8519b413b9b8bde351196be347a8dcac2e092da818ec0bc700216e38211f192a891eafec8ac7d9bf63d3a42328d marco-1.22.0.tar.xz
+b377b2a7d2af094a8b4bd6d1827c85f9675656cd8bdc6892b334c8479d188459ec8585fed3c746fdaef5820f768ce93605586693a3308f0db2d6f58e08f4df49 correctly-posix.patch"
diff --git a/user/marco/correctly-posix.patch b/user/marco/correctly-posix.patch
new file mode 100644
index 000000000..e2ad5fa18
--- /dev/null
+++ b/user/marco/correctly-posix.patch
@@ -0,0 +1,12 @@
+diff -Nurd marco-1.22.0/src/ui/theme.c marco-1.22.0.new/src/ui/theme.c
+--- marco-1.22.0/src/ui/theme.c 2019-02-08 08:51:33.000000000 -0600
++++ marco-1.22.0.new/src/ui/theme.c 2019-03-23 06:00:16.139892136 -0500
+@@ -60,7 +60,7 @@
+ #include <gtk/gtk.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#define __USE_XOPEN
++#define _XOPEN_SOURCE
+ #include <math.h>
+
+ #define GDK_COLOR_RGBA(color) \
diff --git a/user/mate-applets/APKBUILD b/user/mate-applets/APKBUILD
new file mode 100644
index 000000000..c8d60eaf0
--- /dev/null
+++ b/user/mate-applets/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-applets
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Utility applications for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+ AND GPL-2.0-only"
+depends=""
+makedepends="dbus-dev dbus-glib-dev gtk+3.0-dev gtksourceview-3.0-dev
+ gucharmap-dev intltool itstool libmateweather-dev libnotify-dev
+ libwnck-dev libxml2-dev libxml2-utils mate-panel-dev polkit-dev
+ upower-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/1.22/mate-applets-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ rm -r mateweather/docs/ru
+ ./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="2f3e17414171ec5ab6967b76b1291d99783c3091b51127788f99148f46d5f2068edf7d890c3ebca1a59c29cbda4a06be11c852e5e88d4dc58e9981d906c9e34c mate-applets-1.22.0.tar.xz"
diff --git a/user/mate-backgrounds/APKBUILD b/user/mate-backgrounds/APKBUILD
new file mode 100644
index 000000000..bd70d43a8
--- /dev/null
+++ b/user/mate-backgrounds/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-backgrounds
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Desktop wallpapers provided by the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="noarch"
+license="GPL-2.0+"
+depends=""
+makedepends="intltool"
+subpackages="$pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-backgrounds-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b7135cdb20972d50f43026cf98275faaa3c5e41bd0900bca7624a8f9ed03d0ec7f465c78aaf3da534ea6798e8cc690727a1fed8f14b3fb42a8a63bd82858ff30 mate-backgrounds-1.22.0.tar.xz"
diff --git a/user/mate-calc/APKBUILD b/user/mate-calc/APKBUILD
new file mode 100644
index 000000000..f55f691fc
--- /dev/null
+++ b/user/mate-calc/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-calc
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Calculator utility for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND GPL-2.0-only"
+depends=""
+makedepends="gtk+3.0-dev intltool itstool libxml2-utils libxml2-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-calc-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a0d72a17dc9e7e97ef36cb2f089db126b1f91790d6a34ae829ef9cea87e82b025ba106f08e8c677352e72423a6670a3bf8751eecc67444cd8cea8dc8f3cf6728 mate-calc-1.22.0.tar.xz"
diff --git a/user/mate-common/APKBUILD b/user/mate-common/APKBUILD
new file mode 100644
index 000000000..e9e00f902
--- /dev/null
+++ b/user/mate-common/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-common
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Additional development support for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="noarch"
+license="GPL-3.0-only"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://pub.mate-desktop.org/releases/1.22/mate-common-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3887634081c126c6c23f560ca256ae83edbc5f77f0fc0128c2aaa2b5652672ec6f21ca29b0b44802b03c5dfd53bf0da860093ec73c46fba58f7be12a1db1d2a3 mate-common-1.22.0.tar.xz"
diff --git a/user/mate-complete/APKBUILD b/user/mate-complete/APKBUILD
new file mode 100644
index 000000000..f3a5ac75a
--- /dev/null
+++ b/user/mate-complete/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-complete
+pkgver=1.22.0
+pkgrel=0
+url="https://mate-desktop.org"
+pkgdesc="Complete MATE desktop environment"
+arch="noarch"
+options="!check" # No tests
+license=" "
+depends="atril caja caja-dropbox caja-extensions engrampa eom marco
+ mate-applets mate-backgrounds mate-calc mate-control-center
+ mate-desktop mate-icon-theme mate-indicator-applet mate-media
+ mate-menus mate-netbook mate-notification-daemon mate-panel
+ mate-polkit mate-power-manager mate-screensaver mate-sensors-applet
+ mate-session-manager mate-settings-daemon mate-system-monitor
+ mate-terminal mate-user-guide mate-user-share mate-utils mozo pluma"
+source="org.adelie-linux.about-mate.desktop"
+
+package() {
+ cd "$srcdir"
+ mkdir -p "$pkgdir"/usr/share/applications
+ install -Dm644 org.adelie-linux.about-mate.desktop "$pkgdir"/usr/share/applications
+}
+
+sha512sums="24fd0524d949a22b22e38c81667f31498bc524302c52128c10d8a5802315720543426ba82245f5e7510832c493389ff59f36be14433f1a6a6c68993f733f329c org.adelie-linux.about-mate.desktop"
diff --git a/user/mate-complete/org.adelie-linux.about-mate.desktop b/user/mate-complete/org.adelie-linux.about-mate.desktop
new file mode 100644
index 000000000..53e23ed68
--- /dev/null
+++ b/user/mate-complete/org.adelie-linux.about-mate.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About MATE
+Comment=Learn about the MATE desktop environment
+Icon=dialog-information
+Categories=MATE
+Exec=xdg-open https://mate-desktop.org
diff --git a/user/mate-control-center/APKBUILD b/user/mate-control-center/APKBUILD
new file mode 100644
index 000000000..93db69089
--- /dev/null
+++ b/user/mate-control-center/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-control-center
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Configuration utilities for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0-only AND GPL-2.0+ AND LGPL-2.0+ AND LGPL-2.1+ AND MIT"
+depends=""
+makedepends="accountsservice-dev dbus-dev dbus-glib-dev desktop-file-utils
+ gtk+3.0-dev intltool itstool libcanberra-dev libmatekbd-dev
+ libxklavier-dev libxml2-dev libxml2-utils marco-dev mate-desktop-dev
+ mate-menus-dev mate-settings-daemon-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-control-center-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3b2b88458848862a4c819d54104e9394817b29feb3d05117fe69441023ec5e6c922012395f24b5f70c9f9dbf6f8044f769840ec9996b1495441c4cb690f68371 mate-control-center-1.22.0.tar.xz"
diff --git a/user/mate-desktop/APKBUILD b/user/mate-desktop/APKBUILD
new file mode 100644
index 000000000..a09df86a9
--- /dev/null
+++ b/user/mate-desktop/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-desktop
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Core library for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="MIT AND LGPL-2.0+ AND GPL-2.0+"
+depends=""
+makedepends="dconf-dev gobject-introspection-dev gtk+3.0-dev intltool
+ iso-codes-dev startup-notification-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-desktop-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3950249c0bc026163da7f38a6fd5551c0e1e863e298e9d2ca224679b6c802d1deaf12e16ea873a2ea0539a7989a523d0495fb0dc4c556857203c0b04ab6edf7a mate-desktop-1.22.0.tar.xz"
diff --git a/user/mate-icon-theme/APKBUILD b/user/mate-icon-theme/APKBUILD
new file mode 100644
index 000000000..aad16388d
--- /dev/null
+++ b/user/mate-icon-theme/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-icon-theme
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Default icon theme for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="noarch"
+license="LGPL-3.0-only OR CC-BY-SA-3.0"
+depends=""
+makedepends="icon-naming-utils-dev intltool"
+subpackages="$pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-icon-theme-$pkgver.tar.xz"
+builddir="$srcdir/mate-icon-theme-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b4f0b5040e412bcbe818c14f101556cd643cc9dfce02aa676edc790f17de7da2272754235f8d9ad000551e7d92a5974cec3336712074747fcf669c0a729f8a5e mate-icon-theme-1.22.0.tar.xz"
diff --git a/user/mate-indicator-applet/APKBUILD b/user/mate-indicator-applet/APKBUILD
new file mode 100644
index 000000000..884c9e35c
--- /dev/null
+++ b/user/mate-indicator-applet/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-indicator-applet
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="MATE panel applet for consistent information display"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-3.0+ AND LGPL-2.0+"
+depends=""
+makedepends="ayatana-ido-dev gtk+3.0-dev intltool libayatana-indicator-dev
+ mate-panel-dev"
+subpackages="$pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-indicator-applet-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6e1dd133a521f247ecb648b3ffa542e326f504fd3b0719a74099e83ac1dfa9fd4d7676af284f89f69d6684e5640f240930bb0fb43bcf7d59472786adf4c3200c mate-indicator-applet-1.22.0.tar.xz"
diff --git a/user/mate-media/APKBUILD b/user/mate-media/APKBUILD
new file mode 100644
index 000000000..aa6090507
--- /dev/null
+++ b/user/mate-media/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-media
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Media utilities for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool libcanberra-dev libmatemixer-dev libxml2-dev
+ mate-desktop-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/1.22/mate-media-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1c1751ebb0c848cece0e2fc10240832dff317dfcc08aa6721fe00feaf2cff907c700f5e0debd5a236078a199b9d65d59124ffca7a04f61d425d16b1adb02fc1f mate-media-1.22.0.tar.xz"
diff --git a/user/mate-menus/APKBUILD b/user/mate-menus/APKBUILD
new file mode 100644
index 000000000..4d4fe80d4
--- /dev/null
+++ b/user/mate-menus/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-menus
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Desktop menu implementation for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+makedepends="gobject-introspection-dev intltool"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/1.22/mate-menus-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7ca02c1bb89c83b6b331fc2e8878862fa8f02f5cd52b297aa44b36dd5c2d1ee1ffeb1641d63a10bd4deb99f63ded9c3b890a05ab7f7faf32d7f895b0a2f68d70 mate-menus-1.22.0.tar.xz"
diff --git a/user/mate-netbook/APKBUILD b/user/mate-netbook/APKBUILD
new file mode 100644
index 000000000..6b002e694
--- /dev/null
+++ b/user/mate-netbook/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-netbook
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Netbook-oriented window manager for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-3.0-only AND LGPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool libfakekey-dev libwnck-dev libxtst-dev
+ mate-panel-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-netbook-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="faff1618e0a99b95b291d7556b1ccd5d0593be1ffa2b2ee30f4df2c9228ff797e9021cc7a0f6183c69b38fdb3dae1c4cb206539057174ff37a4b56b55d07c33a mate-netbook-1.22.0.tar.xz"
diff --git a/user/mate-notification-daemon/APKBUILD b/user/mate-notification-daemon/APKBUILD
new file mode 100644
index 000000000..c45995739
--- /dev/null
+++ b/user/mate-notification-daemon/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-notification-daemon
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Notification service for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool libcanberra-dev libnotify-dev libwnck-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-notification-daemon-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1345604dee1315843ad5a6920aab7cbe1544c8f7c7ccea686e5684c7ea5272fa09d27edbcc996f6a568f8b3760f561b84901c44f93f1b3ae2d5ddcd3c3ce86fc mate-notification-daemon-1.22.0.tar.xz"
diff --git a/user/mate-panel/APKBUILD b/user/mate-panel/APKBUILD
new file mode 100644
index 000000000..dd01821ce
--- /dev/null
+++ b/user/mate-panel/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-panel
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Panel for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND GPL-2.0-only AND LGPL-2.0+ AND MIT"
+depends=""
+makedepends="gobject-introspection-dev gtk+3.0-dev intltool itstool libice-dev
+ libmateweather-dev librsvg-dev libsm-dev libwnck-dev libxml2-utils
+ mate-desktop-dev mate-menus-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-panel-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="078c6dcdc17970a7a7fab9a218eaf2c8cd6c4074c0c23ff4ce7ccf57e007d0afcbe797be4ad4c9d2c16d9033cc554cc5a979ec61dc721514db939a5e60de456b mate-panel-1.22.0.tar.xz"
diff --git a/user/mate-polkit/APKBUILD b/user/mate-polkit/APKBUILD
new file mode 100644
index 000000000..345159cbc
--- /dev/null
+++ b/user/mate-polkit/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-polkit
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="PolKit integration for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool polkit-dev"
+subpackages="$pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-polkit-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e761ec10842789b5bbb3831f568c64e969429131a893850e8323927b949e115a24b3907fd3def7f31f5f785f0831717d852c61f08a9028a009ea9cca0ba86393 mate-polkit-1.22.0.tar.xz"
diff --git a/user/mate-power-manager/APKBUILD b/user/mate-power-manager/APKBUILD
new file mode 100644
index 000000000..10fec58b7
--- /dev/null
+++ b/user/mate-power-manager/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-power-manager
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Power management utility for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="dbus-dev dbus-glib-dev intltool itstool libcanberra-dev
+ libexecinfo-dev libgnome-keyring-dev libnotify-dev libxml2-utils
+ mate-panel-dev upower-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-power-manager-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ LIBS="-lexecinfo" ./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="d36ec8d328e00ccc14b26c36ded74f20ea80578870541899560c6a744018e5e91b08ec9b4d517548404e82da6f1868ed1f2fcc0aada1223f98e68dd6e6009503 mate-power-manager-1.22.0.tar.xz"
diff --git a/user/mate-screensaver/APKBUILD b/user/mate-screensaver/APKBUILD
new file mode 100644
index 000000000..7d5c002b7
--- /dev/null
+++ b/user/mate-screensaver/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-screensaver
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Screensaver for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+ AND MIT"
+depends=""
+makedepends="dbus-glib-dev gtk+3.0-dev intltool libxscrnsaver-dev
+ mate-desktop-dev mate-menus-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-screensaver-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e253495ad700264ee7833d7b5a732cabff53058384801ff5e874d45f812cea1e4bd3877a1688ecec6197c37f32761f69a4924a47a6556332f1fec736e540e333 mate-screensaver-1.22.0.tar.xz"
diff --git a/user/mate-sensors-applet/APKBUILD b/user/mate-sensors-applet/APKBUILD
new file mode 100644
index 000000000..aad0bd7e4
--- /dev/null
+++ b/user/mate-sensors-applet/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-sensors-applet
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="System monitoring applet for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool itstool libnotify-dev libxml2-utils libxslt
+ mate-panel-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-sensors-applet-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f756fdff4dd8fe824fbe41956411ca1e6ce251fc1d43276c7244a8a806e91bacc283c412b831935136682971509e23c08538264963af31488bee15ce5644d5cb mate-sensors-applet-1.22.0.tar.xz"
diff --git a/user/mate-session-manager/APKBUILD b/user/mate-session-manager/APKBUILD
new file mode 100644
index 000000000..09ee4cc78
--- /dev/null
+++ b/user/mate-session-manager/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-session-manager
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Session manager for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="dbus-glib-dev gtk+3.0-dev intltool libsm-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-session-manager-$pkgver.tar.xz
+ no-systemd.patch"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7e5e21e37c7ac55ca7d71302edef9aabeccf39233aec9edfe93a2fdcd4150d039e8121adecebb3d0a4a707eccef0c7afa1b54c5b52b57853242964c7506eeb9a mate-session-manager-1.22.0.tar.xz
+ea84e562b3a5d08b373f270d8d5fa9eeae9b803e3eb4ef925c31bad0e4e185eecfcff5465864a4a449fc5cade000b3ee18dea515744fcb59ac2efaf9df420a43 no-systemd.patch"
diff --git a/user/mate-session-manager/no-systemd.patch b/user/mate-session-manager/no-systemd.patch
new file mode 100644
index 000000000..79c19f34a
--- /dev/null
+++ b/user/mate-session-manager/no-systemd.patch
@@ -0,0 +1,65 @@
+From 254a091b31517a25bc037b31daff27fbb74ac90d Mon Sep 17 00:00:00 2001
+From: Victor Kareh <vkareh@redhat.com>
+Date: Wed, 6 Mar 2019 09:20:36 -0500
+Subject: [PATCH] Guard against missing systemd
+
+---
+ mate-session/gsm-systemd.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/mate-session/gsm-systemd.c b/mate-session/gsm-systemd.c
+index da3f23b..d03cafd 100644
+--- a/mate-session/gsm-systemd.c
++++ b/mate-session/gsm-systemd.c
+@@ -429,16 +429,31 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
+ gboolean is_last_session;
+ int ret, i;
+
++#ifdef HAVE_SYSTEMD
+ ret = sd_pid_get_session (getpid (), &session);
++#endif
++
++ if (session == NULL) {
++ return FALSE;
++ }
+
+ if (ret != 0) {
++ free (session);
+ return FALSE;
+ }
+
++#ifdef HAVE_SYSTEMD
+ ret = sd_uid_get_sessions (getuid (), FALSE, &sessions);
++#endif
++
++ if (sessions == NULL) {
++ free (session);
++ return FALSE;
++ }
+
+ if (ret <= 0) {
+ free (session);
++ free (sessions);
+ return FALSE;
+ }
+
+@@ -450,7 +465,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
+ if (g_strcmp0 (sessions[i], session) == 0)
+ continue;
+
++#ifdef HAVE_SYSTEMD
+ ret = sd_session_get_state (sessions[i], &state);
++#endif
+
+ if (ret != 0)
+ continue;
+@@ -461,7 +478,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
+ }
+ free (state);
+
++#ifdef HAVE_SYSTEMD
+ ret = sd_session_get_type (sessions[i], &type);
++#endif
+
+ if (ret != 0)
+ continue;
diff --git a/user/mate-settings-daemon/APKBUILD b/user/mate-settings-daemon/APKBUILD
new file mode 100644
index 000000000..df1a07ec1
--- /dev/null
+++ b/user/mate-settings-daemon/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-settings-daemon
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Settings daemon for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND MIT AND LGPL-2.0+ AND GPL-3.0+"
+depends=""
+makedepends="dbus-dev dbus-glib-dev dconf-dev gtk+3.0-dev intltool
+ libcanberra-dev libmatekbd-dev libmatemixer-dev libnotify-dev
+ mate-desktop-dev nss-dev polkit-dev pulseaudio-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-settings-daemon-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e8fa2ba07195dd66a94312909be37abe67089c7a687afee3bfde5860a598e84481949c9cdc7408886f90776556b41d5574bd6efc0614ed7583908214d59c6cb5 mate-settings-daemon-1.22.0.tar.xz"
diff --git a/user/mate-system-monitor/APKBUILD b/user/mate-system-monitor/APKBUILD
new file mode 100644
index 000000000..6f4db0166
--- /dev/null
+++ b/user/mate-system-monitor/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-system-monitor
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="System monitor utilities for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+ AND GPL-2.0-only"
+depends=""
+makedepends="gtkmm+3.0-dev intltool itstool libgtop-dev librsvg-dev
+ libwnck-dev libxml2-dev libxml2-utils"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-system-monitor-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6f97f934626b49320ea0dbb4e14743c4f33b12a85671b69465f689765f3003f00e51685b616e34a482c3ec0ca09ca4e13cbdb2e3eb4719c0d1fc7b25b24436a7 mate-system-monitor-1.22.0.tar.xz"
diff --git a/user/mate-terminal/APKBUILD b/user/mate-terminal/APKBUILD
new file mode 100644
index 000000000..fd0179bb6
--- /dev/null
+++ b/user/mate-terminal/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-terminal
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Terminal emulator for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-3.0+ AND LGPL-3.0+"
+depends=""
+makedepends="dconf-dev gtk+3.0-dev intltool itstool libsm-dev libxml2-utils
+ vte-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-terminal-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="45932db8c50348386a58ee7acaf08af43e28bd495dac08b4dcff5defd1c10189163bdfd73c61015674d61f275dabc2f749b2e0cbf9981c7dfdef5a4060686645 mate-terminal-1.22.0.tar.xz"
diff --git a/user/mate-user-guide/APKBUILD b/user/mate-user-guide/APKBUILD
new file mode 100644
index 000000000..96b71d29f
--- /dev/null
+++ b/user/mate-user-guide/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-user-guide
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="User handbook for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="noarch"
+license="GFDL-1.1+"
+depends=""
+makedepends="intltool itstool libxml2-utils"
+subpackages="$pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-user-guide-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="faf82569d8289f13d31c0c3a548692194f4938dc341b5a2214ccd3bba1fafaa6b5446cc5455ade391e7172268354cf2088c2a119aee96d3d42e71ee4c094dd14 mate-user-guide-1.22.0.tar.xz"
diff --git a/user/mate-user-share/APKBUILD b/user/mate-user-share/APKBUILD
new file mode 100644
index 000000000..3e681aa4f
--- /dev/null
+++ b/user/mate-user-share/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-user-share
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Inter-user file sharing utilities for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="apache-httpd-dev caja-dev dbus-glib-dev gtk+3.0-dev intltool
+ itstool libcanberra-dev libnotify-dev libxml2-utils"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-user-share-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --with-httpd=/usr/sbin/httpd \
+ --with-modules-dir=/usr/libexec/apache2
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="151532ebe031a973e8825d86c9a315697f5930f89d78960946da3ba135238e3130c59018d04cf9dc8d343ff1613e51254701bbf8e23a9881733ecbb7e6fb9f18 mate-user-share-1.22.0.tar.xz"
diff --git a/user/mate-utils/APKBUILD b/user/mate-utils/APKBUILD
new file mode 100644
index 000000000..7d70c09f4
--- /dev/null
+++ b/user/mate-utils/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mate-utils
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Miscellaneous utilities for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+license="LGPL-2.0+ AND LGPL-2.1+ AND GPL-2.0+ AND GPL-3.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool itstool libcanberra-dev libgtop-dev
+ libsm-dev libxml2-utils mate-panel-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-utils-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="248c6e4108900768a4e8b272d20ac9b2d70e8bf77375f4669a099f4d8386c2e8affeafb772d209f00906f96f20d7ee347167ef4837186f44d8aaad85ef855f70 mate-utils-1.22.0.tar.xz"
diff --git a/user/mednafen/APKBUILD b/user/mednafen/APKBUILD
index 097454cad..0666bec0f 100644
--- a/user/mednafen/APKBUILD
+++ b/user/mednafen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Horst Burkhardt <horst@adelielinux.org>
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=mednafen
-pkgver=1.21.3
+pkgver=1.22.1
pkgrel=0
pkgdesc="an emulator for various home gaming consoles"
url="https://mednafen.github.io/"
@@ -12,18 +12,26 @@ license="GPL-2.0-only"
depends=""
makedepends="alsa-lib-dev flac-dev libogg-dev libsndfile-dev libvorbis-dev
lzo-dev sdl2-dev zlib-dev"
-source="https://mednafen.github.io/releases/files/$pkgname-$pkgver.tar.xz"
+source="https://mednafen.github.io/releases/files/$pkgname-$pkgver.tar.xz
+ ppc.patch
+ ppc64.patch
+ "
builddir="$srcdir/$pkgname"
build() {
- cd "$builddir"
- ./configure --prefix=/usr --enable-ss=no
- make
+ ./autogen.sh
+ export CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
+ ./configure \
+ --prefix=/usr \
+ --enable-ss=no \
+ --enable-snes-faust=no
+ make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="987c14edae68901f8a693c9f7317063daf4274bb0b650ed05cd01cf4ceb38d76e6ff5446c324447f73727096c74d0bf7f545cdeadfb6291d67656d659de26715 mednafen-1.21.3.tar.xz"
+sha512sums="4e6890b984a812e188a42582e79dfdac28e101ce3bd658044b68f267d5c8b3799ea3f4de3dcac5314a615f17591a537b51e64f6bd165fec01f028b201eb32763 mednafen-1.22.1.tar.xz
+264b22be3af9db57d0e8676d77b57338308764c79a5eae1c7bd3bb211c5e190ec0797e34a952039175395c0b8819e6285f2ac5f652ee0d5b9d1e0eaf43eca6e9 ppc.patch
+84cbff76b16960ec67fec785fc6e8d541db342e9567fb6f4d42c84ced3fc0f0dfe702a8a7fd7af4f84835f8efe289e7cb9cf18766e4196525686eaa23b02537c ppc64.patch"
diff --git a/user/mednafen/ppc.patch b/user/mednafen/ppc.patch
new file mode 100644
index 000000000..0f795f169
--- /dev/null
+++ b/user/mednafen/ppc.patch
@@ -0,0 +1,11 @@
+--- mednafen/configure.ac.old 2019-01-28 06:52:37.000000000 +0000
++++ mednafen/configure.ac 2019-03-24 22:30:31.180000000 +0000
+@@ -765,7 +765,7 @@
+ AM_CONDITIONAL(ARCH_X86_32, true)
+ ;;
+
+- powerpc)
++ powerpc*|ppc*)
+ AC_DEFINE([ARCH_POWERPC], [1], [Define if we are compiling for PPC architectures.])
+ AM_CONDITIONAL(ARCH_POWERPC, true)
+
diff --git a/user/mednafen/ppc64.patch b/user/mednafen/ppc64.patch
new file mode 100644
index 000000000..734af47de
--- /dev/null
+++ b/user/mednafen/ppc64.patch
@@ -0,0 +1,13 @@
+musl is always ELFv2, no matter endianness.
+
+--- mednafen/src/snes/src/lib/libco/ppc.c.old 2019-01-28 06:52:37.000000000 +0000
++++ mednafen/src/snes/src/lib/libco/ppc.c 2019-03-25 03:42:05.330000000 +0000
+@@ -40,7 +40,7 @@
+ /* Whether function calls are indirect through a descriptor,
+ or are directly to function */
+ #ifndef LIBCO_PPCDESC
+- #if !_CALL_SYSV && (_CALL_AIX || _CALL_AIXDESC || LIBCO_PPC64)
++ #if !_CALL_SYSV && (_CALL_AIX || _CALL_AIXDESC || (LIBCO_PPC64 && _CALL_ELF == 1))
+ #define LIBCO_PPCDESC 1
+ #endif
+ #endif
diff --git a/user/mesa-demos/APKBUILD b/user/mesa-demos/APKBUILD
index f89083ae4..d1c172828 100644
--- a/user/mesa-demos/APKBUILD
+++ b/user/mesa-demos/APKBUILD
@@ -3,7 +3,7 @@
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=mesa-demos
pkgver=8.4.0
-pkgrel=0
+pkgrel=1
pkgdesc="Mesa demos and utils"
url="http://mesa3d.org"
arch="all"
@@ -25,6 +25,8 @@ build() {
package() {
cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
+ # conflicts with X11 bitmap tool
+ mv "$pkgdir"/usr/bin/bitmap "$pkgdir"/usr/bin/bitmap-demo
}
sha512sums="b72d03cad36e0535ff18dcfb222ec4200064b9264f6da51a6e5f03b0dd912abe188bc1d600b6698de3ce6f63b28d2ce01565886ca8e7079edc4967fbf2fb0957 mesa-demos-8.4.0.tar.bz2"
diff --git a/user/meson/APKBUILD b/user/meson/APKBUILD
index d649ab340..709062f23 100644
--- a/user/meson/APKBUILD
+++ b/user/meson/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer:
pkgname=meson
-pkgver=0.49.2
+pkgver=0.50.0
pkgrel=0
pkgdesc="Fast, user-friendly build system"
url="http://mesonbuild.com/"
@@ -27,4 +27,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="d07a5dfd699f1e4b00af39c377ec186c91718d9595cb0ab506b4b40c0c63ddd14eccbe8afb446635272c431e2a78032888be0bc8f6064044da53e8c0b5f7be3f meson-0.49.2.tar.gz"
+sha512sums="93ed7dbb1e3f7687834560686b9bf1c34d1098b1a542d3a6f6f91e36316202705e3a45fa4280237e3896a02177b42a6362e1afe4fbe29adf0b857c5c368f6f5f meson-0.50.0.tar.gz"
diff --git a/user/mosh/APKBUILD b/user/mosh/APKBUILD
index 323891e69..afa107c80 100644
--- a/user/mosh/APKBUILD
+++ b/user/mosh/APKBUILD
@@ -7,7 +7,7 @@ pkgdesc="Mobile shell surviving disconnects with local echo and line editing"
url="https://mosh.org"
arch="all"
license="GPL-3.0+"
-depends="$pkgname-client $pkgname-server"
+depends="$pkgname-client $pkgname-server perl"
checkdepends="tmux perl"
makedepends="ncurses-dev zlib-dev openssl-dev perl-dev perl-io-tty
protobuf-dev automake autoconf libtool gzip"
diff --git a/user/mozjs/APKBUILD b/user/mozjs/APKBUILD
index 7760654b5..e9b3958ac 100644
--- a/user/mozjs/APKBUILD
+++ b/user/mozjs/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mozjs
pkgver=52.4.0
-pkgrel=1
+pkgrel=2
pkgdesc="Standalone JavaScript interpreter from Mozilla"
url="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
arch="all"
@@ -18,6 +18,7 @@ source="https://distfiles.adelielinux.org/source/mozilla/mozjs-$pkgver.tar.bz2
0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch
0008-tests-Skip-on-all-64-bit-archs.patch
0009-build-Include-configure-script-be-nicer-about-option.patch
+ arm64.patch
baseconfig.patch
dont-fail-tests-without-ion.patch
python3.patch
@@ -68,6 +69,7 @@ edbec26bff4fb91911b1dafc566d4cf37635e9039a1cbd527543d74765d1c96bcfae71fe4f9a66c6
d9acf4570a073a2151e19ad854e72ff927d050b532f04367bf49fb0c98f8eb544e9f6c455b1411d09a8a3034a2be62e23b7f9080fac9249e4132e85f2245d474 0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch
a95e91ffa3693ac2ac81eddee2e490b4acfb5ae0381a291b1916afc0d91fb00b95457fde0efe62905025fe425c18d5363c5e6ad1bb121645b29a14f6c76c0489 0008-tests-Skip-on-all-64-bit-archs.patch
2556f3322c5bc39c1efbbbd19b6843cf69b63a0255e8e3617f58b229e75ac221b6cb57fce15452cd1f25498c66f29f588f38c10c175b82c6fe163faaa7e3e2b0 0009-build-Include-configure-script-be-nicer-about-option.patch
+63806e54fe7530703420fd070a8ef38b46cd185991a6d66dc2c1ec588f2b271883120b8e16d1a898eb6ddb41569d719f857e71f9e16e839962527cee1f47c41e arm64.patch
22870d6ee8a0a0b4359d78173aef0ade49063bfad495fd40815852684a1cdf17f9f50585e0d693eb712c2a2225ea43c4387cf454f3b9bd39e01899f3936775f1 baseconfig.patch
6ebaf6fd24f1987020ad0da82cd2ff878e5c27997ac45a571899f492b435d12e32274eac35e2d571775b6f6bdce24f8e7a968088da61329e2cd36dfc762a0156 dont-fail-tests-without-ion.patch
66a894b4878797438ac1361b892df4df45fe0c990e9540235336116a2dbfcc5d787a3076dca323b8252fb8cb6e39a61819fc0d4ce1491fb9e4d07c912fdf9e4d python3.patch"
diff --git a/user/mozjs/arm64.patch b/user/mozjs/arm64.patch
new file mode 100644
index 000000000..df1c8cc7e
--- /dev/null
+++ b/user/mozjs/arm64.patch
@@ -0,0 +1,60 @@
+
+# HG changeset patch
+# User Jim Chen <nchen@mozilla.com>
+# Date 1493664360 14400
+# Node ID 042d975f9355f711b058152691a44e458ba252b3
+# Parent fa7165dda22460795afe4ed27ecc57f454a3dfaa
+Bug 1357874 - Add more AArch64 support to JS code; r=luke
+
+* Fix a parentheses warning when compiling testGCAllocator.cpp.
+
+* Define GETRANDOM_NR macro for AArch64.
+
+* Disable Android workarounds in jsnativestack.cpp and
+ WasmSignalHandlers.cpp for AArch64, because AArch64 is only supported
+ on API 21+, in which case those workarounds don't apply.
+
+* Enable trace logging in TraceLogging.cpp.
+
+diff --git a/js/src/jsapi-tests/testGCAllocator.cpp b/js/src/jsapi-tests/testGCAllocator.cpp
+--- a/js/src/jsapi-tests/testGCAllocator.cpp
++++ b/js/src/jsapi-tests/testGCAllocator.cpp
+@@ -310,15 +310,15 @@ void unmapPages(void* p, size_t size) {
+ #elif defined(XP_UNIX)
+
+ void*
+ mapMemoryAt(void* desired, size_t length)
+ {
+ #if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__)
+- MOZ_RELEASE_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0);
++ MOZ_RELEASE_ASSERT((0xffff800000000000ULL & (uintptr_t(desired) + length - 1)) == 0);
+ #endif
+ void* region = mmap(desired, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ if (region == MAP_FAILED)
+ return nullptr;
+ if (region != desired) {
+ if (munmap(region, length))
+ MOZ_RELEASE_ASSERT(errno == ENOMEM);
+ return nullptr;
+diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp
+--- a/js/src/vm/TraceLogging.cpp
++++ b/js/src/vm/TraceLogging.cpp
+@@ -56,17 +56,17 @@ rdtsc(void)
+ );
+ result = upper;
+ result = result<<32;
+ result = result|lower;
+
+ return result;
+
+ }
+-#elif defined(__arm__)
++#elif defined(__arm__) || defined(__aarch64__)
+
+ #include <sys/time.h>
+
+ static __inline__ uint64_t
+ rdtsc(void)
+ {
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
diff --git a/user/mozo/APKBUILD b/user/mozo/APKBUILD
new file mode 100644
index 000000000..9d24d67cd
--- /dev/null
+++ b/user/mozo/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mozo
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Menu editor for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="noarch"
+license="LGPL-2.0+"
+depends="python3"
+makedepends="intltool mate-menus-dev py3-pygobject-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mozo-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f3d60e94d9bf5fdd435320856563622f0687cc2844a3d51473bcef5c442f4938a4030533271ead2fd88fb0ce805c16b40d629e5a69fc642e7e670a1afd5745db mozo-1.22.0.tar.xz"
diff --git a/user/nghttp2/APKBUILD b/user/nghttp2/APKBUILD
index da23381f8..0c0c764e7 100644
--- a/user/nghttp2/APKBUILD
+++ b/user/nghttp2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=nghttp2
-pkgver=1.36.0
+pkgver=1.37.0
pkgrel=0
pkgdesc="Experimental HTTP/2 client, server and proxy"
url="https://nghttp2.org/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4e0d5c5cdb4f1b7e5f12790850237f36649af4aa9596033392725972e4e0e5a33bb78bd1aa0735e35e489b523b7e9a236a7b5847dfca69bd7583fcab36c13c76 nghttp2-1.36.0.tar.xz"
+sha512sums="67a4b9df3f7f0edad719011fa289d9aa9ef04f31ef3ccf826b861c8830ed24e0743a33b54ab66d198fec7edbf723852b38a2007b335d7f566f702f4b02297b0f nghttp2-1.37.0.tar.xz"
diff --git a/user/node/APKBUILD b/user/node/APKBUILD
new file mode 100644
index 000000000..ba3ff6807
--- /dev/null
+++ b/user/node/APKBUILD
@@ -0,0 +1,71 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=node
+pkgver=10.15.3
+pkgrel=0
+pkgdesc="JavaScript runtime"
+url="https://nodejs.org/"
+arch="all"
+license="MIT AND ICU AND BSD-3-Clause AND BSD-2-Clause AND ISC AND OpenSSL AND Public-Domain AND Zlib AND Artistic-2.0 AND Apache-2.0 AND CC0-1.0"
+depends=""
+makedepends="c-ares-dev http-parser-dev icu-dev libexecinfo-dev libuv-dev
+ nghttp2-dev python3 zlib-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://nodejs.org/download/release/v$pkgver/node-v$pkgver.tar.xz
+ https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz
+ libatomic.patch
+ ppc32.patch
+ ppc64.patch
+ stack-silliness.patch
+ "
+builddir="$srcdir/$pkgname-v$pkgver"
+
+unpack() {
+ default_unpack
+ [ -z $SKIP_PYTHON ] || return 0
+
+ msg "Killing all remaining hope for humanity and building Python 2..."
+ cd "$srcdir/Python-2.7.15"
+ [ -d ../python ] && rm -r ../python
+ # 19:39 <+solar> just make the firefox build process build its own py2 copy
+ # 20:03 <calvin> TheWilfox: there's always violence
+ ./configure --prefix="$srcdir/python"
+ make -j $JOBS
+ make -j $JOBS install
+}
+
+build() {
+ cd "$builddir"
+ export PATH="$srcdir/python/bin:$PATH"
+ # We can't use --shared-openssl until 1.1 is available.
+ python ./configure.py \
+ --prefix=/usr \
+ --with-intl=system-icu \
+ --shared-cares \
+ --shared-http-parser \
+ --shared-libuv \
+ --shared-nghttp2 \
+ --openssl-no-asm \
+ --shared-zlib
+ # keep DESTDIR set, to avoid a full rebuild in package()
+ make DESTDIR="$pkgdir"
+}
+
+check() {
+ cd "$builddir"
+ export PATH="$srcdir/python/bin:$PATH"
+ make DESTDIR="$pkgdir" test-only
+}
+
+package() {
+ cd "$builddir"
+ export PATH="$srcdir/python/bin:$PATH"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="cf741f733af7a7e1fbd37b0f98110078494b4771dbdfccacfda95a5ea4cda6cdcea4f8d31dddcf27477213614e4ab6cf7d1a1f900cb92936333730737ac4f9e8 node-v10.15.3.tar.xz
+27ea43eb45fc68f3d2469d5f07636e10801dee11635a430ec8ec922ed790bb426b072da94df885e4dfa1ea8b7a24f2f56dd92f9b0f51e162330f161216bd6de6 Python-2.7.15.tar.xz
+8f64922d586bce9d82c83042a989739cc55ecc5e015778cdfbda21c257aa50527ddb18740985bcb2068e4a749b71eb8a135d9a8152b374d361589df7f33c9b60 libatomic.patch
+d369cd9685e372368af11ea763defdde7afc789ce5e2f617b47174fb4d45003d6e494a00ef92c9ed098c49c189d1690edf9ce780448a5b4a5b072c20ea35ab95 ppc32.patch
+583326353de5b0ac14a6c42321f6b031bd943a80550624794e15bd7526470f67bfa14a66558db3c94b4ee2db3053d2e4efed2117f4e7b6dca3c59c171048c094 ppc64.patch
+3ea09e36ed0cc31e0475ebc9c92b7609b70e9c1637c5db6c92cf1d6363fb8c6f884ffa20dd81054ca390b721695185327d80c9eeff0688a959e9d46947602471 stack-silliness.patch"
diff --git a/user/node/gyp-python3.patch b/user/node/gyp-python3.patch
new file mode 100644
index 000000000..e52ef19ec
--- /dev/null
+++ b/user/node/gyp-python3.patch
@@ -0,0 +1,3862 @@
+diff --git a/tools/gyp/pylib/gyp/input.py b/pylib/gyp/input.py
+index a046a15..21b4606 100644
+--- a/tools/gyp/pylib/gyp/input.py
++++ b/tools/gyp/pylib/gyp/input.py
+@@ -2,14 +2,8 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-from compiler.ast import Const
+-from compiler.ast import Dict
+-from compiler.ast import Discard
+-from compiler.ast import List
+-from compiler.ast import Module
+-from compiler.ast import Node
+-from compiler.ast import Stmt
+-import compiler
++import ast
++
+ import gyp.common
+ import gyp.simple_copy
+ import multiprocessing
+@@ -183,43 +177,38 @@
+ Note that this is slower than eval() is.
+ """
+
+- ast = compiler.parse(file_contents)
+- assert isinstance(ast, Module)
+- c1 = ast.getChildren()
+- assert c1[0] is None
+- assert isinstance(c1[1], Stmt)
+- c2 = c1[1].getChildren()
+- assert isinstance(c2[0], Discard)
+- c3 = c2[0].getChildren()
+- assert len(c3) == 1
+- return CheckNode(c3[0], [])
++ syntax_tree = ast.parse(file_contents)
++ assert isinstance(syntax_tree, ast.Module)
++ c1 = syntax_tree.body
++ assert len(c1) == 1
++ c2 = c1[0]
++ assert isinstance(c2, ast.Expr)
++ return CheckNode(c2.value, [])
+
+
+ def CheckNode(node, keypath):
+- if isinstance(node, Dict):
+- c = node.getChildren()
++ if isinstance(node, ast.Dict):
+ dict = {}
+- for n in range(0, len(c), 2):
+- assert isinstance(c[n], Const)
+- key = c[n].getChildren()[0]
++ for key, value in zip(node.keys, node.values):
++ assert isinstance(key, ast.Str)
++ key = key.s
+ if key in dict:
+ raise GypError("Key '" + key + "' repeated at level " +
+ repr(len(keypath) + 1) + " with key path '" +
+ '.'.join(keypath) + "'")
+ kp = list(keypath) # Make a copy of the list for descending this node.
+ kp.append(key)
+- dict[key] = CheckNode(c[n + 1], kp)
++ dict[key] = CheckNode(value, kp)
+ return dict
+- elif isinstance(node, List):
+- c = node.getChildren()
++ elif isinstance(node, ast.List):
+ children = []
+- for index, child in enumerate(c):
++ for index, child in enumerate(node.elts):
+ kp = list(keypath) # Copy list.
+ kp.append(repr(index))
+ children.append(CheckNode(child, kp))
+ return children
+- elif isinstance(node, Const):
+- return node.getChildren()[0]
++ elif isinstance(node, ast.Str):
++ return node.s
+ else:
+ raise TypeError("Unknown AST node at key path '" + '.'.join(keypath) +
+ "': " + repr(node))
+diff --git a/tools/gyp/pylib/gyp/simple_copy.py b/pylib/gyp/simple_copy.py
+index 74c98c5..eaf5f8b 100644
+--- a/tools/gyp/pylib/gyp/simple_copy.py
++++ b/tools/gyp/pylib/gyp/simple_copy.py
+@@ -28,8 +28,19 @@
+ def _deepcopy_atomic(x):
+ return x
+
+-for x in (type(None), int, long, float,
+- bool, str, unicode, type):
++try:
++ _string_types = (str, unicode)
++# There's no unicode in python3
++except NameError:
++ _string_types = (str, )
++
++try:
++ _integer_types = (int, long)
++# There's no long in python3
++except NameError:
++ _integer_types = (int, )
++
++for x in (type(None), float, bool, type) + _integer_types + _string_types:
+ d[x] = _deepcopy_atomic
+
+ def _deepcopy_list(x):
+diff --git a/tools/gyp/PRESUBMIT.py b/PRESUBMIT.py
+index 4bc1b8c..5ee669b 100644
+--- a/tools/gyp/PRESUBMIT.py
++++ b/tools/gyp/PRESUBMIT.py
+@@ -76,8 +76,7 @@
+ def _LicenseHeader(input_api):
+ # Accept any year number from 2009 to the current year.
+ current_year = int(input_api.time.strftime('%Y'))
+- allowed_years = (str(s) for s in reversed(xrange(2009, current_year + 1)))
+-
++ allowed_years = (str(s) for s in reversed(range(2009, current_year + 1)))
+ years_re = '(' + '|'.join(allowed_years) + ')'
+
+ # The (c) is deprecated, but tolerate it until it's removed from all files.
+diff --git a/tools/gyp/README.md b/README.md
+index c0d73ac..b4766c9 100644
+--- a/tools/gyp/README.md
++++ b/tools/gyp/README.md
+@@ -1,4 +1,5 @@
+ GYP can Generate Your Projects.
+ ===================================
+
+-Documents are available at [gyp.gsrc.io](https://gyp.gsrc.io), or you can check out ```md-pages``` branch to read those documents offline.
++Documents are available at [gyp.gsrc.io](https://gyp.gsrc.io), or you can
++check out ```md-pages``` branch to read those documents offline.
+diff --git a/tools/gyp/buildbot/buildbot_run.py b/buildbot/buildbot_run.py
+index 9a2b71f..8941652 100755
+--- a/tools/gyp/buildbot/buildbot_run.py
++++ b/tools/gyp/buildbot/buildbot_run.py
+@@ -5,6 +5,8 @@
+
+ """Argument-less script to select what to run on the buildbots."""
+
++from __future__ import print_function
++
+ import os
+ import shutil
+ import subprocess
+@@ -24,14 +26,14 @@
+ with open(os.devnull) as devnull_fd:
+ retcode = subprocess.call(stdin=devnull_fd, *args, **kwargs)
+ if retcode != 0:
+- print '@@@STEP_EXCEPTION@@@'
++ print('@@@STEP_EXCEPTION@@@')
+ sys.exit(1)
+
+
+ def PrepareCmake():
+ """Build CMake 2.8.8 since the version in Precise is 2.8.7."""
+ if os.environ['BUILDBOT_CLOBBER'] == '1':
+- print '@@@BUILD_STEP Clobber CMake checkout@@@'
++ print('@@@BUILD_STEP Clobber CMake checkout@@@')
+ shutil.rmtree(CMAKE_DIR)
+
+ # We always build CMake 2.8.8, so no need to do anything
+@@ -39,10 +41,10 @@
+ if os.path.isdir(CMAKE_DIR):
+ return
+
+- print '@@@BUILD_STEP Initialize CMake checkout@@@'
++ print('@@@BUILD_STEP Initialize CMake checkout@@@')
+ os.mkdir(CMAKE_DIR)
+
+- print '@@@BUILD_STEP Sync CMake@@@'
++ print('@@@BUILD_STEP Sync CMake@@@')
+ CallSubProcess(
+ ['git', 'clone',
+ '--depth', '1',
+@@ -53,7 +55,7 @@
+ CMAKE_DIR],
+ cwd=CMAKE_DIR)
+
+- print '@@@BUILD_STEP Build CMake@@@'
++ print('@@@BUILD_STEP Build CMake@@@')
+ CallSubProcess(
+ ['/bin/bash', 'bootstrap', '--prefix=%s' % CMAKE_DIR],
+ cwd=CMAKE_DIR)
+@@ -74,7 +76,7 @@
+ if not format:
+ format = title
+
+- print '@@@BUILD_STEP ' + title + '@@@'
++ print('@@@BUILD_STEP ' + title + '@@@')
+ sys.stdout.flush()
+ env = os.environ.copy()
+ if msvs_version:
+@@ -89,17 +91,17 @@
+ retcode = subprocess.call(command, cwd=ROOT_DIR, env=env, shell=True)
+ if retcode:
+ # Emit failure tag, and keep going.
+- print '@@@STEP_FAILURE@@@'
++ print('@@@STEP_FAILURE@@@')
+ return 1
+ return 0
+
+
+ def GypBuild():
+ # Dump out/ directory.
+- print '@@@BUILD_STEP cleanup@@@'
+- print 'Removing %s...' % OUT_DIR
++ print('@@@BUILD_STEP cleanup@@@')
++ print('Removing %s...' % OUT_DIR)
+ shutil.rmtree(OUT_DIR, ignore_errors=True)
+- print 'Done.'
++ print('Done.')
+
+ retcode = 0
+ if sys.platform.startswith('linux'):
+@@ -128,7 +130,7 @@
+ # after the build proper that could be used for cumulative failures),
+ # use that instead of this. This isolates the final return value so
+ # that it isn't misattributed to the last stage.
+- print '@@@BUILD_STEP failures@@@'
++ print('@@@BUILD_STEP failures@@@')
+ sys.exit(retcode)
+
+
+diff --git a/tools/gyp/pylib/gyp/MSVSSettings.py b/pylib/gyp/MSVSSettings.py
+index 8ae1918..1d2e25a 100644
+--- a/tools/gyp/pylib/gyp/MSVSSettings.py
++++ b/tools/gyp/pylib/gyp/MSVSSettings.py
+@@ -14,9 +14,17 @@
+ MSBuild install directory, e.g. c:\Program Files (x86)\MSBuild
+ """
+
++from __future__ import print_function
++
+ import sys
+ import re
+
++try:
++ # basestring was removed in python3.
++ basestring
++except NameError:
++ basestring = str
++
+ # Dictionaries of settings validators. The key is the tool name, the value is
+ # a dictionary mapping setting names to validation functions.
+ _msvs_validators = {}
+@@ -400,7 +408,7 @@
+
+ if unrecognized:
+ # We don't know this setting. Give a warning.
+- print >> stderr, error_msg
++ print(error_msg, file=stderr)
+
+
+ def FixVCMacroSlashes(s):
+@@ -433,7 +441,7 @@
+ '$(PlatformName)': '$(Platform)',
+ '$(SafeInputName)': '%(Filename)',
+ }
+- for old, new in replace_map.iteritems():
++ for old, new in replace_map.items():
+ s = s.replace(old, new)
+ s = FixVCMacroSlashes(s)
+ return s
+@@ -453,17 +461,18 @@
+ dictionaries of settings and their values.
+ """
+ msbuild_settings = {}
+- for msvs_tool_name, msvs_tool_settings in msvs_settings.iteritems():
++ for msvs_tool_name, msvs_tool_settings in msvs_settings.items():
+ if msvs_tool_name in _msvs_to_msbuild_converters:
+ msvs_tool = _msvs_to_msbuild_converters[msvs_tool_name]
+- for msvs_setting, msvs_value in msvs_tool_settings.iteritems():
++ for msvs_setting, msvs_value in msvs_tool_settings.items():
+ if msvs_setting in msvs_tool:
+ # Invoke the translation function.
+ try:
+ msvs_tool[msvs_setting](msvs_value, msbuild_settings)
+- except ValueError, e:
+- print >> stderr, ('Warning: while converting %s/%s to MSBuild, '
+- '%s' % (msvs_tool_name, msvs_setting, e))
++ except ValueError as e:
++ print(('Warning: while converting %s/%s to MSBuild, '
++ '%s' % (msvs_tool_name, msvs_setting, e)),
++ file=stderr)
+ else:
+ _ValidateExclusionSetting(msvs_setting,
+ msvs_tool,
+@@ -472,8 +481,8 @@
+ (msvs_tool_name, msvs_setting)),
+ stderr)
+ else:
+- print >> stderr, ('Warning: unrecognized tool %s while converting to '
+- 'MSBuild.' % msvs_tool_name)
++ print(('Warning: unrecognized tool %s while converting to '
++ 'MSBuild.' % msvs_tool_name), file=stderr)
+ return msbuild_settings
+
+
+@@ -513,13 +522,13 @@
+ for tool_name in settings:
+ if tool_name in validators:
+ tool_validators = validators[tool_name]
+- for setting, value in settings[tool_name].iteritems():
++ for setting, value in settings[tool_name].items():
+ if setting in tool_validators:
+ try:
+ tool_validators[setting](value)
+- except ValueError, e:
+- print >> stderr, ('Warning: for %s/%s, %s' %
+- (tool_name, setting, e))
++ except ValueError as e:
++ print(('Warning: for %s/%s, %s' %
++ (tool_name, setting, e)), file=stderr)
+ else:
+ _ValidateExclusionSetting(setting,
+ tool_validators,
+@@ -528,7 +537,7 @@
+ stderr)
+
+ else:
+- print >> stderr, ('Warning: unrecognized tool %s' % tool_name)
++ print(('Warning: unrecognized tool %s' % tool_name), file=stderr)
+
+
+ # MSVS and MBuild names of the tools.
+diff --git a/tools/gyp/pylib/gyp/MSVSSettings_test.py b/pylib/gyp/MSVSSettings_test.py
+index bf6ea6b..73ed25e 100755
+--- a/tools/gyp/pylib/gyp/MSVSSettings_test.py
++++ b/tools/gyp/pylib/gyp/MSVSSettings_test.py
+@@ -6,7 +6,10 @@
+
+ """Unit tests for the MSVSSettings.py file."""
+
+-import StringIO
++try:
++ from StringIO import StringIO
++except ImportError:
++ from io import StringIO
+ import unittest
+ import gyp.MSVSSettings as MSVSSettings
+
+@@ -14,7 +17,7 @@
+ class TestSequenceFunctions(unittest.TestCase):
+
+ def setUp(self):
+- self.stderr = StringIO.StringIO()
++ self.stderr = StringIO()
+
+ def _ExpectedWarnings(self, expected):
+ """Compares recorded lines to expected warnings."""
+diff --git a/tools/gyp/pylib/gyp/MSVSUserFile.py b/pylib/gyp/MSVSUserFile.py
+index 6c07e9a..2264d64 100644
+--- a/tools/gyp/pylib/gyp/MSVSUserFile.py
++++ b/tools/gyp/pylib/gyp/MSVSUserFile.py
+@@ -91,7 +91,7 @@
+
+ if environment and isinstance(environment, dict):
+ env_list = ['%s="%s"' % (key, val)
+- for (key,val) in environment.iteritems()]
++ for (key,val) in environment.items()]
+ environment = ' '.join(env_list)
+ else:
+ environment = ''
+@@ -135,7 +135,7 @@
+ def WriteIfChanged(self):
+ """Writes the user file."""
+ configs = ['Configurations']
+- for config, spec in sorted(self.configurations.iteritems()):
++ for config, spec in sorted(self.configurations.items()):
+ configs.append(spec)
+
+ content = ['VisualStudioUserFile',
+diff --git a/tools/gyp/pylib/gyp/MSVSUtil.py b/pylib/gyp/MSVSUtil.py
+index 96dea6c..f24530b 100644
+--- a/tools/gyp/pylib/gyp/MSVSUtil.py
++++ b/tools/gyp/pylib/gyp/MSVSUtil.py
+@@ -236,7 +236,7 @@
+
+ # Set up the shim to output its PDB to the same location as the final linker
+ # target.
+- for config_name, config in shim_dict.get('configurations').iteritems():
++ for config_name, config in shim_dict.get('configurations').items():
+ pdb_path = _GetPdbPath(target_dict, config_name, vars)
+
+ # A few keys that we don't want to propagate.
+diff --git a/tools/gyp/pylib/gyp/MSVSVersion.py b/pylib/gyp/MSVSVersion.py
+index 44b958d..5f316b6 100644
+--- a/tools/gyp/pylib/gyp/MSVSVersion.py
++++ b/tools/gyp/pylib/gyp/MSVSVersion.py
+@@ -189,7 +189,7 @@
+ text = None
+ try:
+ text = _RegistryQueryBase('Sysnative', key, value)
+- except OSError, e:
++ except OSError as e:
+ if e.errno == errno.ENOENT:
+ text = _RegistryQueryBase('System32', key, value)
+ else:
+@@ -207,12 +207,15 @@
+ contents of the registry key's value, or None on failure. Throws
+ ImportError if _winreg is unavailable.
+ """
+- import _winreg
++ try:
++ import _winreg as winreg
++ except ImportError:
++ import winreg
+ try:
+ root, subkey = key.split('\\', 1)
+ assert root == 'HKLM' # Only need HKLM for now.
+- with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, subkey) as hkey:
+- return _winreg.QueryValueEx(hkey, value)[0]
++ with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, subkey) as hkey:
++ return winreg.QueryValueEx(hkey, value)[0]
+ except WindowsError:
+ return None
+
+diff --git a/tools/gyp/pylib/gyp/__init__.py b/pylib/gyp/__init__.py
+index 668f38b..e038151 100755
+--- a/tools/gyp/pylib/gyp/__init__.py
++++ b/tools/gyp/pylib/gyp/__init__.py
+@@ -4,6 +4,8 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
++from __future__ import print_function
++
+ import copy
+ import gyp.input
+ import optparse
+@@ -14,6 +16,12 @@
+ import traceback
+ from gyp.common import GypError
+
++try:
++ # basestring was removed in python3.
++ basestring
++except NameError:
++ basestring = str
++
+ # Default debug modes for GYP
+ debug = {}
+
+@@ -22,7 +30,6 @@
+ DEBUG_VARIABLES = 'variables'
+ DEBUG_INCLUDES = 'includes'
+
+-
+ def DebugOutput(mode, message, *args):
+ if 'all' in gyp.debug or mode in gyp.debug:
+ ctx = ('unknown', 0, 'unknown')
+@@ -34,8 +41,8 @@
+ pass
+ if args:
+ message %= args
+- print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]),
+- ctx[1], ctx[2], message)
++ print('%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]),
++ ctx[1], ctx[2], message))
+
+ def FindBuildFiles():
+ extension = '.gyp'
+@@ -207,7 +214,7 @@
+ # We always want to ignore the environment when regenerating, to avoid
+ # duplicate or changed flags in the environment at the time of regeneration.
+ flags = ['--ignore-environment']
+- for name, metadata in options._regeneration_metadata.iteritems():
++ for name, metadata in options._regeneration_metadata.items():
+ opt = metadata['opt']
+ value = getattr(options, name)
+ value_predicate = metadata['type'] == 'path' and FixPath or Noop
+@@ -226,12 +233,13 @@
+ (action == 'store_false' and not value)):
+ flags.append(opt)
+ elif options.use_environment and env_name:
+- print >>sys.stderr, ('Warning: environment regeneration unimplemented '
++ print(('Warning: environment regeneration unimplemented '
+ 'for %s flag %r env_name %r' % (action, opt,
+- env_name))
++ env_name)),
++ file=sys.stderr)
+ else:
+- print >>sys.stderr, ('Warning: regeneration unimplemented for action %r '
+- 'flag %r' % (action, opt))
++ print(('Warning: regeneration unimplemented for action %r '
++ 'flag %r' % (action, opt)), file=sys.stderr)
+
+ return flags
+
+@@ -431,12 +439,11 @@
+ for build_file in build_files:
+ build_file_dir = os.path.abspath(os.path.dirname(build_file))
+ build_file_dir_components = build_file_dir.split(os.path.sep)
+- components_len = len(build_file_dir_components)
+- for index in xrange(components_len - 1, -1, -1):
+- if build_file_dir_components[index] == 'src':
++ for component in reversed(build_file_dir_components):
++ if component == 'src':
+ options.depth = os.path.sep.join(build_file_dir_components)
+ break
+- del build_file_dir_components[index]
++ del build_file_dir_components[-1]
+
+ # If the inner loop found something, break without advancing to another
+ # build file.
+@@ -475,7 +482,7 @@
+ if home_dot_gyp != None:
+ default_include = os.path.join(home_dot_gyp, 'include.gypi')
+ if os.path.exists(default_include):
+- print 'Using overrides found in ' + default_include
++ print('Using overrides found in ' + default_include)
+ includes.append(default_include)
+
+ # Command-line --include files come after the default include.
+@@ -490,7 +497,7 @@
+ if options.generator_flags:
+ gen_flags += options.generator_flags
+ generator_flags = NameValueListToDict(gen_flags)
+- if DEBUG_GENERAL in gyp.debug.keys():
++ if DEBUG_GENERAL in gyp.debug:
+ DebugOutput(DEBUG_GENERAL, "generator_flags: %s", generator_flags)
+
+ # Generate all requested formats (use a set in case we got one format request
+@@ -523,7 +530,7 @@
+ generator.GenerateOutput(flat_list, targets, data, params)
+
+ if options.configs:
+- valid_configs = targets[flat_list[0]]['configurations'].keys()
++ valid_configs = targets[flat_list[0]]['configurations']
+ for conf in options.configs:
+ if conf not in valid_configs:
+ raise GypError('Invalid config specified via --build: %s' % conf)
+@@ -536,7 +543,7 @@
+ def main(args):
+ try:
+ return gyp_main(args)
+- except GypError, e:
++ except GypError as e:
+ sys.stderr.write("gyp: %s\n" % e)
+ return 1
+
+diff --git a/tools/gyp/pylib/gyp/common.py b/pylib/gyp/common.py
+index 1b245ec..1823de8 100644
+--- a/tools/gyp/pylib/gyp/common.py
++++ b/tools/gyp/pylib/gyp/common.py
+@@ -345,7 +345,7 @@
+ prefix=os.path.split(filename)[1] + '.gyp.',
+ dir=os.path.split(filename)[0])
+ try:
+- self.tmp_file = os.fdopen(tmp_fd, 'wb')
++ self.tmp_file = os.fdopen(tmp_fd, 'w')
+ except Exception:
+ # Don't leave turds behind.
+ os.unlink(self.tmp_path)
+@@ -363,7 +363,7 @@
+ same = False
+ try:
+ same = filecmp.cmp(self.tmp_path, filename, False)
+- except OSError, e:
++ except OSError as e:
+ if e.errno != errno.ENOENT:
+ raise
+
+@@ -382,9 +382,9 @@
+ #
+ # No way to get the umask without setting a new one? Set a safe one
+ # and then set it back to the old value.
+- umask = os.umask(077)
++ umask = os.umask(0o77)
+ os.umask(umask)
+- os.chmod(self.tmp_path, 0666 & ~umask)
++ os.chmod(self.tmp_path, 0o666 & ~umask)
+ if sys.platform == 'win32' and os.path.exists(filename):
+ # NOTE: on windows (but not cygwin) rename will not replace an
+ # existing file, so it must be preceded with a remove. Sadly there
+@@ -471,7 +471,7 @@
+ ''.join([source[0], header] + source[1:]))
+
+ # Make file executable.
+- os.chmod(tool_path, 0755)
++ os.chmod(tool_path, 0o755)
+
+
+ # From Alex Martelli,
+diff --git a/tools/gyp/pylib/gyp/common_test.py b/pylib/gyp/common_test.py
+index ad6f9a1..0b8ada3 100755
+--- a/tools/gyp/pylib/gyp/common_test.py
++++ b/tools/gyp/pylib/gyp/common_test.py
+@@ -63,6 +63,7 @@
+ self.assertFlavor('solaris', 'sunos' , {});
+ self.assertFlavor('linux' , 'linux2' , {});
+ self.assertFlavor('linux' , 'linux3' , {});
++ self.assertFlavor('linux' , 'linux' , {});
+
+ def test_param(self):
+ self.assertFlavor('foobar', 'linux2' , {'flavor': 'foobar'})
+diff --git a/tools/gyp/pylib/gyp/easy_xml.py b/pylib/gyp/easy_xml.py
+index 2522efb..15c6651 100644
+--- a/tools/gyp/pylib/gyp/easy_xml.py
++++ b/tools/gyp/pylib/gyp/easy_xml.py
+@@ -6,6 +6,11 @@
+ import os
+ import locale
+
++try:
++ # reduce moved to functools in python3.
++ reduce
++except NameError:
++ from functools import reduce
+
+ def XmlToString(content, encoding='utf-8', pretty=False):
+ """ Writes the XML content to disk, touching the file only if it has changed.
+@@ -80,7 +85,7 @@
+ # Optionally in second position is a dictionary of the attributes.
+ rest = specification[1:]
+ if rest and isinstance(rest[0], dict):
+- for at, val in sorted(rest[0].iteritems()):
++ for at, val in sorted(rest[0].items()):
+ xml_parts.append(' %s="%s"' % (at, _XmlEscape(val, attr=True)))
+ rest = rest[1:]
+ if rest:
+diff --git a/tools/gyp/pylib/gyp/easy_xml_test.py b/pylib/gyp/easy_xml_test.py
+index df64354..a1fdb18 100755
+--- a/tools/gyp/pylib/gyp/easy_xml_test.py
++++ b/tools/gyp/pylib/gyp/easy_xml_test.py
+@@ -8,13 +8,16 @@
+
+ import gyp.easy_xml as easy_xml
+ import unittest
+-import StringIO
++try:
++ from StringIO import StringIO
++except ImportError:
++ from io import StringIO
+
+
+ class TestSequenceFunctions(unittest.TestCase):
+
+ def setUp(self):
+- self.stderr = StringIO.StringIO()
++ self.stderr = StringIO()
+
+ def test_EasyXml_simple(self):
+ self.assertEqual(
+diff --git a/tools/gyp/pylib/gyp/flock_tool.py b/pylib/gyp/flock_tool.py
+index b38d866..81fb79d 100755
+--- a/tools/gyp/pylib/gyp/flock_tool.py
++++ b/tools/gyp/pylib/gyp/flock_tool.py
+@@ -39,7 +39,7 @@
+ # where fcntl.flock(fd, LOCK_EX) always fails
+ # with EBADF, that's why we use this F_SETLK
+ # hack instead.
+- fd = os.open(lockfile, os.O_WRONLY|os.O_NOCTTY|os.O_CREAT, 0666)
++ fd = os.open(lockfile, os.O_WRONLY|os.O_NOCTTY|os.O_CREAT, 0o666)
+ if sys.platform.startswith('aix'):
+ # Python on AIX is compiled with LARGEFILE support, which changes the
+ # struct size.
+diff --git a/tools/gyp/pylib/gyp/generator/analyzer.py b/pylib/gyp/generator/analyzer.py
+index 921c1a6..b3484dc 100644
+--- a/tools/gyp/pylib/gyp/generator/analyzer.py
++++ b/tools/gyp/pylib/gyp/generator/analyzer.py
+@@ -62,6 +62,8 @@
+ then the "all" target includes "b1" and "b2".
+ """
+
++from __future__ import print_function
++
+ import gyp.common
+ import gyp.ninja_syntax as ninja_syntax
+ import json
+@@ -155,7 +157,7 @@
+ continue
+ result.append(base_path + source)
+ if debug:
+- print 'AddSource', org_source, result[len(result) - 1]
++ print('AddSource', org_source, result[len(result) - 1])
+
+
+ def _ExtractSourcesFromAction(action, base_path, base_path_components,
+@@ -185,7 +187,7 @@
+ base_path += '/'
+
+ if debug:
+- print 'ExtractSources', target, base_path
++ print('ExtractSources', target, base_path)
+
+ results = []
+ if 'sources' in target_dict:
+@@ -278,7 +280,7 @@
+ the root of the source tree."""
+ if _ToLocalPath(toplevel_dir, _ToGypPath(build_file)) in files:
+ if debug:
+- print 'gyp file modified', build_file
++ print('gyp file modified', build_file)
+ return True
+
+ # First element of included_files is the file itself.
+@@ -291,8 +293,8 @@
+ _ToGypPath(gyp.common.UnrelativePath(include_file, build_file))
+ if _ToLocalPath(toplevel_dir, rel_include_file) in files:
+ if debug:
+- print 'included gyp file modified, gyp_file=', build_file, \
+- 'included file=', rel_include_file
++ print('included gyp file modified, gyp_file=', build_file, \
++ 'included file=', rel_include_file)
+ return True
+ return False
+
+@@ -373,7 +375,7 @@
+ # If a build file (or any of its included files) is modified we assume all
+ # targets in the file are modified.
+ if build_file_in_files[build_file]:
+- print 'matching target from modified build file', target_name
++ print('matching target from modified build file', target_name)
+ target.match_status = MATCH_STATUS_MATCHES
+ matching_targets.append(target)
+ else:
+@@ -381,7 +383,7 @@
+ toplevel_dir)
+ for source in sources:
+ if _ToGypPath(os.path.normpath(source)) in files:
+- print 'target', target_name, 'matches', source
++ print('target', target_name, 'matches', source)
+ target.match_status = MATCH_STATUS_MATCHES
+ matching_targets.append(target)
+ break
+@@ -433,7 +435,7 @@
+ for dep in target.deps:
+ if _DoesTargetDependOnMatchingTargets(dep):
+ target.match_status = MATCH_STATUS_MATCHES_BY_DEPENDENCY
+- print '\t', target.name, 'matches by dep', dep.name
++ print('\t', target.name, 'matches by dep', dep.name)
+ return True
+ target.match_status = MATCH_STATUS_DOESNT_MATCH
+ return False
+@@ -445,7 +447,7 @@
+ supplied as input to analyzer.
+ possible_targets: targets to search from."""
+ found = []
+- print 'Targets that matched by dependency:'
++ print('Targets that matched by dependency:')
+ for target in possible_targets:
+ if _DoesTargetDependOnMatchingTargets(target):
+ found.append(target)
+@@ -484,12 +486,13 @@
+ (add_if_no_ancestor or target.requires_build)) or
+ (target.is_static_library and add_if_no_ancestor and
+ not target.is_or_has_linked_ancestor)):
+- print '\t\tadding to compile targets', target.name, 'executable', \
+- target.is_executable, 'added_to_compile_targets', \
+- target.added_to_compile_targets, 'add_if_no_ancestor', \
+- add_if_no_ancestor, 'requires_build', target.requires_build, \
+- 'is_static_library', target.is_static_library, \
++ print('\t\tadding to compile targets', target.name, 'executable',
++ target.is_executable, 'added_to_compile_targets',
++ target.added_to_compile_targets, 'add_if_no_ancestor',
++ add_if_no_ancestor, 'requires_build', target.requires_build,
++ 'is_static_library', target.is_static_library,
+ 'is_or_has_linked_ancestor', target.is_or_has_linked_ancestor
++ )
+ result.add(target)
+ target.added_to_compile_targets = True
+
+@@ -500,7 +503,7 @@
+ supplied_targets: set of targets supplied to analyzer to search from."""
+ result = set()
+ for target in matching_targets:
+- print 'finding compile targets for match', target.name
++ print('finding compile targets for match', target.name)
+ _AddCompileTargets(target, supplied_targets, True, result)
+ return result
+
+@@ -508,46 +511,46 @@
+ def _WriteOutput(params, **values):
+ """Writes the output, either to stdout or a file is specified."""
+ if 'error' in values:
+- print 'Error:', values['error']
++ print('Error:', values['error'])
+ if 'status' in values:
+- print values['status']
++ print(values['status'])
+ if 'targets' in values:
+ values['targets'].sort()
+- print 'Supplied targets that depend on changed files:'
++ print('Supplied targets that depend on changed files:')
+ for target in values['targets']:
+- print '\t', target
++ print('\t', target)
+ if 'invalid_targets' in values:
+ values['invalid_targets'].sort()
+- print 'The following targets were not found:'
++ print('The following targets were not found:')
+ for target in values['invalid_targets']:
+- print '\t', target
++ print('\t', target)
+ if 'build_targets' in values:
+ values['build_targets'].sort()
+- print 'Targets that require a build:'
++ print('Targets that require a build:')
+ for target in values['build_targets']:
+- print '\t', target
++ print('\t', target)
+ if 'compile_targets' in values:
+ values['compile_targets'].sort()
+- print 'Targets that need to be built:'
++ print('Targets that need to be built:')
+ for target in values['compile_targets']:
+- print '\t', target
++ print('\t', target)
+ if 'test_targets' in values:
+ values['test_targets'].sort()
+- print 'Test targets:'
++ print('Test targets:')
+ for target in values['test_targets']:
+- print '\t', target
++ print('\t', target)
+
+ output_path = params.get('generator_flags', {}).get(
+ 'analyzer_output_path', None)
+ if not output_path:
+- print json.dumps(values)
++ print(json.dumps(values))
+ return
+ try:
+ f = open(output_path, 'w')
+ f.write(json.dumps(values) + '\n')
+ f.close()
+ except IOError as e:
+- print 'Error writing to output file', output_path, str(e)
++ print('Error writing to output file', output_path, str(e))
+
+
+ def _WasGypIncludeFileModified(params, files):
+@@ -556,7 +559,7 @@
+ if params['options'].includes:
+ for include in params['options'].includes:
+ if _ToGypPath(os.path.normpath(include)) in files:
+- print 'Include file modified, assuming all changed', include
++ print('Include file modified, assuming all changed', include)
+ return True
+ return False
+
+@@ -638,13 +641,13 @@
+ set(self._root_targets))]
+ else:
+ test_targets = [x for x in test_targets_no_all]
+- print 'supplied test_targets'
++ print('supplied test_targets')
+ for target_name in self._test_target_names:
+- print '\t', target_name
+- print 'found test_targets'
++ print('\t', target_name)
++ print('found test_targets')
+ for target in test_targets:
+- print '\t', target.name
+- print 'searching for matching test targets'
++ print('\t', target.name)
++ print('searching for matching test targets')
+ matching_test_targets = _GetTargetsDependingOnMatchingTargets(test_targets)
+ matching_test_targets_contains_all = (test_target_names_contains_all and
+ set(matching_test_targets) &
+@@ -654,14 +657,14 @@
+ # 'all' is subsequentely added to the matching names below.
+ matching_test_targets = [x for x in (set(matching_test_targets) &
+ set(test_targets_no_all))]
+- print 'matched test_targets'
++ print('matched test_targets')
+ for target in matching_test_targets:
+- print '\t', target.name
++ print('\t', target.name)
+ matching_target_names = [gyp.common.ParseQualifiedTarget(target.name)[1]
+ for target in matching_test_targets]
+ if matching_test_targets_contains_all:
+ matching_target_names.append('all')
+- print '\tall'
++ print('\tall')
+ return matching_target_names
+
+ def find_matching_compile_target_names(self):
+@@ -669,7 +672,7 @@
+ assert self.is_build_impacted();
+ # Compile targets are found by searching up from changed targets.
+ # Reset the visited status for _GetBuildTargets.
+- for target in self._name_to_target.itervalues():
++ for target in self._name_to_target.values():
+ target.visited = False
+
+ supplied_targets = _LookupTargets(self._supplied_target_names_no_all(),
+@@ -677,10 +680,10 @@
+ if 'all' in self._supplied_target_names():
+ supplied_targets = [x for x in (set(supplied_targets) |
+ set(self._root_targets))]
+- print 'Supplied test_targets & compile_targets'
++ print('Supplied test_targets & compile_targets')
+ for target in supplied_targets:
+- print '\t', target.name
+- print 'Finding compile targets'
++ print('\t', target.name)
++ print('Finding compile targets')
+ compile_targets = _GetCompileTargets(self._changed_targets,
+ supplied_targets)
+ return [gyp.common.ParseQualifiedTarget(target.name)[1]
+@@ -699,7 +702,7 @@
+
+ toplevel_dir = _ToGypPath(os.path.abspath(params['options'].toplevel_dir))
+ if debug:
+- print 'toplevel_dir', toplevel_dir
++ print('toplevel_dir', toplevel_dir)
+
+ if _WasGypIncludeFileModified(params, config.files):
+ result_dict = { 'status': all_changed_string,
+diff --git a/tools/gyp/pylib/gyp/generator/cmake.py b/pylib/gyp/generator/cmake.py
+index a2b9629..4a2041c 100644
+--- a/tools/gyp/pylib/gyp/generator/cmake.py
++++ b/tools/gyp/pylib/gyp/generator/cmake.py
+@@ -28,6 +28,8 @@
+ CMakeLists.txt file.
+ """
+
++from __future__ import print_function
++
+ import multiprocessing
+ import os
+ import signal
+@@ -36,6 +38,12 @@
+ import gyp.common
+ import gyp.xcode_emulation
+
++try:
++ # maketrans moved to str in python3.
++ _maketrans = string.maketrans
++except NameError:
++ _maketrans = str.maketrans
++
+ generator_default_variables = {
+ 'EXECUTABLE_PREFIX': '',
+ 'EXECUTABLE_SUFFIX': '',
+@@ -238,7 +246,7 @@
+ Invalid for make: ':'
+ Invalid for unknown reasons but cause failures: '.'
+ """
+- return a.translate(string.maketrans(' /():."', '_______'))
++ return a.translate(_maketrans(' /():."', '_______'))
+
+
+ def WriteActions(target_name, actions, extra_sources, extra_deps,
+@@ -644,8 +652,8 @@
+
+ cmake_target_type = cmake_target_type_from_gyp_target_type.get(target_type)
+ if cmake_target_type is None:
+- print ('Target %s has unknown target type %s, skipping.' %
+- ( target_name, target_type ) )
++ print('Target %s has unknown target type %s, skipping.' %
++ ( target_name, target_type ))
+ return
+
+ SetVariable(output, 'TARGET', target_name)
+@@ -868,8 +876,8 @@
+ default_product_ext = generator_default_variables['SHARED_LIB_SUFFIX']
+
+ elif target_type != 'executable':
+- print ('ERROR: What output file should be generated?',
+- 'type', target_type, 'target', target_name)
++ print(('ERROR: What output file should be generated?',
++ 'type', target_type, 'target', target_name))
+
+ product_prefix = spec.get('product_prefix', default_product_prefix)
+ product_name = spec.get('product_name', default_product_name)
+@@ -1207,11 +1215,11 @@
+ output_dir,
+ config_name))
+ arguments = ['cmake', '-G', 'Ninja']
+- print 'Generating [%s]: %s' % (config_name, arguments)
++ print('Generating [%s]: %s' % (config_name, arguments))
+ subprocess.check_call(arguments, cwd=build_dir)
+
+ arguments = ['ninja', '-C', build_dir]
+- print 'Building [%s]: %s' % (config_name, arguments)
++ print('Building [%s]: %s' % (config_name, arguments))
+ subprocess.check_call(arguments)
+
+
+@@ -1230,7 +1238,7 @@
+ GenerateOutputForConfig(target_list, target_dicts, data,
+ params, user_config)
+ else:
+- config_names = target_dicts[target_list[0]]['configurations'].keys()
++ config_names = target_dicts[target_list[0]]['configurations']
+ if params['parallel']:
+ try:
+ pool = multiprocessing.Pool(len(config_names))
+@@ -1239,7 +1247,7 @@
+ arglists.append((target_list, target_dicts, data,
+ params, config_name))
+ pool.map(CallGenerateOutputForConfig, arglists)
+- except KeyboardInterrupt, e:
++ except KeyboardInterrupt as e:
+ pool.terminate()
+ raise e
+ else:
+diff --git a/tools/gyp/pylib/gyp/generator/dump_dependency_json.py b/pylib/gyp/generator/dump_dependency_json.py
+index 160eafe..2bf3f39 100644
+--- a/tools/gyp/pylib/gyp/generator/dump_dependency_json.py
++++ b/tools/gyp/pylib/gyp/generator/dump_dependency_json.py
+@@ -2,6 +2,8 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
++from __future__ import print_function
++
+ import collections
+ import os
+ import gyp
+@@ -96,4 +98,4 @@
+ f = open(filename, 'w')
+ json.dump(edges, f)
+ f.close()
+- print 'Wrote json to %s.' % filename
++ print('Wrote json to %s.' % filename)
+diff --git a/tools/gyp/pylib/gyp/generator/eclipse.py b/pylib/gyp/generator/eclipse.py
+index 3544347..d039f03 100644
+--- a/tools/gyp/pylib/gyp/generator/eclipse.py
++++ b/tools/gyp/pylib/gyp/generator/eclipse.py
+@@ -141,7 +141,7 @@
+ compiler_includes_list.append(include_dir)
+
+ # Find standard gyp include dirs.
+- if config.has_key('include_dirs'):
++ if 'include_dirs' in config:
+ include_dirs = config['include_dirs']
+ for shared_intermediate_dir in shared_intermediate_dirs:
+ for include_dir in include_dirs:
+@@ -272,7 +272,7 @@
+ out.write(' <language name="holder for library settings"></language>\n')
+ for lang in eclipse_langs:
+ out.write(' <language name="%s">\n' % lang)
+- for key in sorted(defines.iterkeys()):
++ for key in sorted(defines.keys()):
+ out.write(' <macro><name>%s</name><value>%s</value></macro>\n' %
+ (escape(key), escape(defines[key])))
+ out.write(' </language>\n')
+@@ -418,7 +418,7 @@
+ GenerateOutputForConfig(target_list, target_dicts, data, params,
+ user_config)
+ else:
+- config_names = target_dicts[target_list[0]]['configurations'].keys()
++ config_names = target_dicts[target_list[0]]['configurations']
+ for config_name in config_names:
+ GenerateOutputForConfig(target_list, target_dicts, data, params,
+ config_name)
+diff --git a/tools/gyp/pylib/gyp/generator/gypd.py b/pylib/gyp/generator/gypd.py
+index 3efdb99..78eeaa6 100644
+--- a/tools/gyp/pylib/gyp/generator/gypd.py
++++ b/tools/gyp/pylib/gyp/generator/gypd.py
+@@ -88,7 +88,7 @@
+ if not output_file in output_files:
+ output_files[output_file] = input_file
+
+- for output_file, input_file in output_files.iteritems():
++ for output_file, input_file in output_files.items():
+ output = open(output_file, 'w')
+ pprint.pprint(data[input_file], output)
+ output.close()
+diff --git a/tools/gyp/pylib/gyp/generator/make.py b/pylib/gyp/generator/make.py
+index fb4f918..2057e3a 100644
+--- a/tools/gyp/pylib/gyp/generator/make.py
++++ b/tools/gyp/pylib/gyp/generator/make.py
+@@ -21,6 +21,8 @@
+ # toplevel Makefile. It may make sense to generate some .mk files on
+ # the side to keep the the files readable.
+
++from __future__ import print_function
++
+ import os
+ import re
+ import sys
+@@ -668,7 +670,7 @@
+ basenames.setdefault(basename, []).append(source)
+
+ error = ''
+- for basename, files in basenames.iteritems():
++ for basename, files in basenames.items():
+ if len(files) > 1:
+ error += ' %s: %s\n' % (basename, ' '.join(files))
+
+@@ -816,7 +818,7 @@
+ gyp.xcode_emulation.MacPrefixHeader(
+ self.xcode_settings, lambda p: Sourceify(self.Absolutify(p)),
+ self.Pchify))
+- sources = filter(Compilable, all_sources)
++ sources = [x for x in all_sources if Compilable(x)]
+ if sources:
+ self.WriteLn(SHARED_HEADER_SUFFIX_RULES_COMMENT1)
+ extensions = set([os.path.splitext(s)[1] for s in sources])
+@@ -945,7 +947,7 @@
+ '%s%s'
+ % (name, cd_action, command))
+ self.WriteLn()
+- outputs = map(self.Absolutify, outputs)
++ outputs = [self.Absolutify(o) for o in outputs]
+ # The makefile rules are all relative to the top dir, but the gyp actions
+ # are defined relative to their containing dir. This replaces the obj
+ # variable for the action rule with an absolute version so that the output
+@@ -1035,7 +1037,7 @@
+ outputs = [gyp.xcode_emulation.ExpandEnvVars(o, env) for o in outputs]
+ inputs = [gyp.xcode_emulation.ExpandEnvVars(i, env) for i in inputs]
+
+- outputs = map(self.Absolutify, outputs)
++ outputs = [self.Absolutify(o) for o in outputs]
+ all_outputs += outputs
+ # Only write the 'obj' and 'builddir' rules for the "primary" output
+ # (:1); it's superfluous for the "extra outputs", and this avoids
+@@ -1233,11 +1235,11 @@
+ self.WriteList(cflags_objcc, 'CFLAGS_OBJCC_%s' % configname)
+ includes = config.get('include_dirs')
+ if includes:
+- includes = map(Sourceify, map(self.Absolutify, includes))
++ includes = [Sourceify(self.Absolutify(include)) for include in includes]
+ self.WriteList(includes, 'INCS_%s' % configname, prefix='-I')
+
+ compilable = filter(Compilable, sources)
+- objs = map(self.Objectify, map(self.Absolutify, map(Target, compilable)))
++ objs = [self.Objectify(self.Absolutify(Target(x))) for x in compilable]
+ self.WriteList(objs, 'OBJS')
+
+ for obj in objs:
+@@ -1309,7 +1311,7 @@
+
+ # If there are any object files in our input file list, link them into our
+ # output.
+- extra_link_deps += filter(Linkable, sources)
++ extra_link_deps += [source for source in sources if Linkable(source)]
+
+ self.WriteLn()
+
+@@ -1377,8 +1379,8 @@
+ elif self.type == 'none':
+ target = '%s.stamp' % target
+ elif self.type != 'executable':
+- print ("ERROR: What output file should be generated?",
+- "type", self.type, "target", target)
++ print(("ERROR: What output file should be generated?",
++ "type", self.type, "target", target))
+
+ target_prefix = spec.get('product_prefix', target_prefix)
+ target = spec.get('product_name', target)
+@@ -1542,9 +1544,9 @@
+ # Postbuilds expect to be run in the gyp file's directory, so insert an
+ # implicit postbuild to cd to there.
+ postbuilds.insert(0, gyp.common.EncodePOSIXShellList(['cd', self.path]))
+- for i in xrange(len(postbuilds)):
+- if not postbuilds[i].startswith('$'):
+- postbuilds[i] = EscapeShellArgument(postbuilds[i])
++ for i, postbuild in enumerate(postbuilds):
++ if not postbuild.startswith('$'):
++ postbuilds[i] = EscapeShellArgument(postbuild)
+ self.WriteLn('%s: builddir := $(abs_builddir)' % QuoteSpaces(self.output))
+ self.WriteLn('%s: POSTBUILDS := %s' % (
+ QuoteSpaces(self.output), ' '.join(postbuilds)))
+@@ -1634,7 +1636,7 @@
+ self.WriteDoCmd([self.output_binary], deps, 'touch', part_of_all,
+ postbuilds=postbuilds)
+ else:
+- print "WARNING: no output for", self.type, target
++ print("WARNING: no output for", self.type, target)
+
+ # Add an alias for each target (if there are any outputs).
+ # Installable target aliases are created below.
+@@ -1741,7 +1743,7 @@
+ output is just a name to run the rule
+ command: (optional) command name to generate unambiguous labels
+ """
+- outputs = map(QuoteSpaces, outputs)
++ outputs = [QuoteSpaces(o) for o in outputs]
+ inputs = map(QuoteSpaces, inputs)
+
+ if comment:
+@@ -1986,7 +1988,7 @@
+ if options.toplevel_dir and options.toplevel_dir != '.':
+ arguments += '-C', options.toplevel_dir
+ arguments.append('BUILDTYPE=' + config)
+- print 'Building [%s]: %s' % (config, arguments)
++ print('Building [%s]: %s' % (config, arguments))
+ subprocess.check_call(arguments)
+
+
+diff --git a/tools/gyp/pylib/gyp/generator/msvs.py b/pylib/gyp/generator/msvs.py
+index 8fe9e5a..e8a2b36 100644
+--- a/tools/gyp/pylib/gyp/generator/msvs.py
++++ b/tools/gyp/pylib/gyp/generator/msvs.py
+@@ -2,6 +2,9 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
++from __future__ import print_function
++
++import collections
+ import copy
+ import ntpath
+ import os
+@@ -23,16 +26,6 @@
+ from gyp.common import GypError
+ from gyp.common import OrderedSet
+
+-# TODO: Remove once bots are on 2.7, http://crbug.com/241769
+-def _import_OrderedDict():
+- import collections
+- try:
+- return collections.OrderedDict
+- except AttributeError:
+- import gyp.ordered_dict
+- return gyp.ordered_dict.OrderedDict
+-OrderedDict = _import_OrderedDict()
+-
+
+ # Regular expression for validating Visual Studio GUIDs. If the GUID
+ # contains lowercase hex letters, MSVS will be fine. However,
+@@ -202,7 +195,7 @@
+ if not prefix: prefix = []
+ result = []
+ excluded_result = []
+- folders = OrderedDict()
++ folders = collections.OrderedDict()
+ # Gather files into the final result, excluded, or folders.
+ for s in sources:
+ if len(s) == 1:
+@@ -469,7 +462,7 @@
+ 'CommandLine': cmd,
+ })
+ # Add to the properties of primary input for each config.
+- for config_name, c_data in spec['configurations'].iteritems():
++ for config_name, c_data in spec['configurations'].items():
+ p.AddFileConfig(_FixPath(primary_input),
+ _ConfigFullName(config_name, c_data), tools=[tool])
+
+@@ -775,8 +768,8 @@
+ # the VCProj but cause the same problem on the final command-line. Moving
+ # the item to the end of the list does works, but that's only possible if
+ # there's only one such item. Let's just warn the user.
+- print >> sys.stderr, ('Warning: MSVS may misinterpret the odd number of ' +
+- 'quotes in ' + s)
++ print(('Warning: MSVS may misinterpret the odd number of ' +
++ 'quotes in ' + s), file=sys.stderr)
+ return s
+
+
+@@ -991,7 +984,7 @@
+ basenames.setdefault(basename, []).append(source)
+
+ error = ''
+- for basename, files in basenames.iteritems():
++ for basename, files in basenames.items():
+ if len(files) > 1:
+ error += ' %s: %s\n' % (basename, ' '.join(files))
+
+@@ -1023,7 +1016,7 @@
+ relative_path_of_gyp_file = gyp.common.RelativePath(gyp_path, project_dir)
+
+ config_type = _GetMSVSConfigurationType(spec, project.build_file)
+- for config_name, config in spec['configurations'].iteritems():
++ for config_name, config in spec['configurations'].items():
+ _AddConfigurationToMSVSProject(p, spec, config_type, config_name, config)
+
+ # MSVC08 and prior version cannot handle duplicate basenames in the same
+@@ -1392,10 +1385,10 @@
+ A list of Tool objects.
+ """
+ tool_list = []
+- for tool, settings in tools.iteritems():
++ for tool, settings in tools.items():
+ # Collapse settings with lists.
+ settings_fixed = {}
+- for setting, value in settings.iteritems():
++ for setting, value in settings.items():
+ if type(value) == list:
+ if ((tool == 'VCLinkerTool' and
+ setting == 'AdditionalDependencies') or
+@@ -1570,7 +1563,7 @@
+ def _GetPrecompileRelatedFiles(spec):
+ # Gather a list of precompiled header related sources.
+ precompiled_related = []
+- for _, config in spec['configurations'].iteritems():
++ for _, config in spec['configurations'].items():
+ for k in precomp_keys:
+ f = config.get(k)
+ if f:
+@@ -1581,7 +1574,7 @@
+ def _ExcludeFilesFromBeingBuilt(p, spec, excluded_sources, excluded_idl,
+ list_excluded):
+ exclusions = _GetExcludedFilesFromBuild(spec, excluded_sources, excluded_idl)
+- for file_name, excluded_configs in exclusions.iteritems():
++ for file_name, excluded_configs in exclusions.items():
+ if (not list_excluded and
+ len(excluded_configs) == len(spec['configurations'])):
+ # If we're not listing excluded files, then they won't appear in the
+@@ -1598,7 +1591,7 @@
+ # Exclude excluded sources from being built.
+ for f in excluded_sources:
+ excluded_configs = []
+- for config_name, config in spec['configurations'].iteritems():
++ for config_name, config in spec['configurations'].items():
+ precomped = [_FixPath(config.get(i, '')) for i in precomp_keys]
+ # Don't do this for ones that are precompiled header related.
+ if f not in precomped:
+@@ -1608,7 +1601,7 @@
+ # Exclude them now.
+ for f in excluded_idl:
+ excluded_configs = []
+- for config_name, config in spec['configurations'].iteritems():
++ for config_name, config in spec['configurations'].items():
+ excluded_configs.append((config_name, config))
+ exclusions[f] = excluded_configs
+ return exclusions
+@@ -1617,7 +1610,7 @@
+ def _AddToolFilesToMSVS(p, spec):
+ # Add in tool files (rules).
+ tool_files = OrderedSet()
+- for _, config in spec['configurations'].iteritems():
++ for _, config in spec['configurations'].items():
+ for f in config.get('msvs_tool_files', []):
+ tool_files.add(f)
+ for f in tool_files:
+@@ -1630,7 +1623,7 @@
+ # kind (i.e. C vs. C++) as the precompiled header source stub needs
+ # to have use of precompiled headers disabled.
+ extensions_excluded_from_precompile = []
+- for config_name, config in spec['configurations'].iteritems():
++ for config_name, config in spec['configurations'].items():
+ source = config.get('msvs_precompiled_source')
+ if source:
+ source = _FixPath(source)
+@@ -1651,7 +1644,7 @@
+ else:
+ basename, extension = os.path.splitext(source)
+ if extension in extensions_excluded_from_precompile:
+- for config_name, config in spec['configurations'].iteritems():
++ for config_name, config in spec['configurations'].items():
+ tool = MSVSProject.Tool('VCCLCompilerTool',
+ {'UsePrecompiledHeader': '0',
+ 'ForcedIncludeFiles': '$(NOINHERIT)'})
+@@ -1702,7 +1695,7 @@
+ return # Nothing to add
+ # Write out the user file.
+ user_file = _CreateMSVSUserFile(project_path, version, spec)
+- for config_name, c_data in spec['configurations'].iteritems():
++ for config_name, c_data in spec['configurations'].items():
+ user_file.AddDebugSettings(_ConfigFullName(config_name, c_data),
+ action, environment, working_directory)
+ user_file.WriteIfChanged()
+@@ -1756,7 +1749,7 @@
+ def _DictsToFolders(base_path, bucket, flat):
+ # Convert to folders recursively.
+ children = []
+- for folder, contents in bucket.iteritems():
++ for folder, contents in bucket.items():
+ if type(contents) == dict:
+ folder_children = _DictsToFolders(os.path.join(base_path, folder),
+ contents, flat)
+@@ -1778,8 +1771,8 @@
+ # such projects up one level.
+ if (type(node) == dict and
+ len(node) == 1 and
+- node.keys()[0] == parent + '.vcproj'):
+- return node[node.keys()[0]]
++ next(iter(node)) == parent + '.vcproj'):
++ return node[next(iter(node))]
+ if type(node) != dict:
+ return node
+ for child in node:
+@@ -1798,8 +1791,8 @@
+ # Walk down from the top until we hit a folder that has more than one entry.
+ # In practice, this strips the top-level "src/" dir from the hierarchy in
+ # the solution.
+- while len(root) == 1 and type(root[root.keys()[0]]) == dict:
+- root = root[root.keys()[0]]
++ while len(root) == 1 and type(root[next(iter(root))]) == dict:
++ root = root[next(iter(root))]
+ # Collapse singles.
+ root = _CollapseSingles('', root)
+ # Merge buckets until everything is a root entry.
+@@ -1828,7 +1821,7 @@
+ # Prepare a dict indicating which project configurations are used for which
+ # solution configurations for this target.
+ config_platform_overrides = {}
+- for config_name, c in spec['configurations'].iteritems():
++ for config_name, c in spec['configurations'].items():
+ config_fullname = _ConfigFullName(config_name, c)
+ platform = c.get('msvs_target_platform', _ConfigPlatform(c))
+ fixed_config_fullname = '%s|%s' % (
+@@ -1967,7 +1960,7 @@
+ msvs_version = params['msvs_version']
+ devenv = os.path.join(msvs_version.path, 'Common7', 'IDE', 'devenv.com')
+
+- for build_file, build_file_dict in data.iteritems():
++ for build_file, build_file_dict in data.items():
+ (build_file_root, build_file_ext) = os.path.splitext(build_file)
+ if build_file_ext != '.gyp':
+ continue
+@@ -1977,7 +1970,7 @@
+
+ for config in configurations:
+ arguments = [devenv, sln_path, '/Build', config]
+- print 'Building [%s]: %s' % (config, arguments)
++ print('Building [%s]: %s' % (config, arguments))
+ rtn = subprocess.check_call(arguments)
+
+
+@@ -2029,7 +2022,7 @@
+ configs = set()
+ for qualified_target in target_list:
+ spec = target_dicts[qualified_target]
+- for config_name, config in spec['configurations'].iteritems():
++ for config_name, config in spec['configurations'].items():
+ configs.add(_ConfigFullName(config_name, config))
+ configs = list(configs)
+
+@@ -2072,7 +2065,7 @@
+ if generator_flags.get('msvs_error_on_missing_sources', False):
+ raise GypError(error_message)
+ else:
+- print >> sys.stdout, "Warning: " + error_message
++ print("Warning: " + error_message, file=sys.stdout)
+
+
+ def _GenerateMSBuildFiltersFile(filters_path, source_files,
+@@ -2669,7 +2662,7 @@
+
+ def _GetMSBuildProjectConfigurations(configurations):
+ group = ['ItemGroup', {'Label': 'ProjectConfigurations'}]
+- for (name, settings) in sorted(configurations.iteritems()):
++ for (name, settings) in sorted(configurations.items()):
+ configuration, platform = _GetConfigurationAndPlatform(name, settings)
+ designation = '%s|%s' % (configuration, platform)
+ group.append(
+@@ -2742,7 +2735,7 @@
+
+ def _GetMSBuildConfigurationDetails(spec, build_file):
+ properties = {}
+- for name, settings in spec['configurations'].iteritems():
++ for name, settings in spec['configurations'].items():
+ msbuild_attributes = _GetMSBuildAttributes(spec, settings, build_file)
+ condition = _GetConfigurationCondition(name, settings)
+ character_set = msbuild_attributes.get('CharacterSet')
+@@ -2776,9 +2769,9 @@
+ user_props = r'$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props'
+ additional_props = {}
+ props_specified = False
+- for name, settings in sorted(configurations.iteritems()):
++ for name, settings in sorted(configurations.items()):
+ configuration = _GetConfigurationCondition(name, settings)
+- if settings.has_key('msbuild_props'):
++ if 'msbuild_props' in settings:
+ additional_props[configuration] = _FixPaths(settings['msbuild_props'])
+ props_specified = True
+ else:
+@@ -2798,7 +2791,7 @@
+ ]
+ else:
+ sheets = []
+- for condition, props in additional_props.iteritems():
++ for condition, props in additional_props.items():
+ import_group = [
+ 'ImportGroup',
+ {'Label': 'PropertySheets',
+@@ -2831,7 +2824,7 @@
+ elif a == 'ConfigurationType':
+ msbuild_attributes[a] = _ConvertMSVSConfigurationType(msvs_attributes[a])
+ else:
+- print 'Warning: Do not know how to convert MSVS attribute ' + a
++ print('Warning: Do not know how to convert MSVS attribute ' + a)
+ return msbuild_attributes
+
+
+@@ -2927,7 +2920,7 @@
+ new_paths = '$(ExecutablePath);' + ';'.join(new_paths)
+
+ properties = {}
+- for (name, configuration) in sorted(configurations.iteritems()):
++ for (name, configuration) in sorted(configurations.items()):
+ condition = _GetConfigurationCondition(name, configuration)
+ attributes = _GetMSBuildAttributes(spec, configuration, build_file)
+ msbuild_settings = configuration['finalized_msbuild_settings']
+@@ -2952,7 +2945,7 @@
+ _AddConditionalProperty(properties, condition, 'ExecutablePath',
+ new_paths)
+ tool_settings = msbuild_settings.get('', {})
+- for name, value in sorted(tool_settings.iteritems()):
++ for name, value in sorted(tool_settings.items()):
+ formatted_value = _GetValueFormattedForMSBuild('', name, value)
+ _AddConditionalProperty(properties, condition, name, formatted_value)
+ return _GetMSBuildPropertyGroup(spec, None, properties)
+@@ -3021,7 +3014,7 @@
+ # NOTE: reverse(topsort(DAG)) = topsort(reverse_edges(DAG))
+ for name in reversed(properties_ordered):
+ values = properties[name]
+- for value, conditions in sorted(values.iteritems()):
++ for value, conditions in sorted(values.items()):
+ if len(conditions) == num_configurations:
+ # If the value is the same all configurations,
+ # just add one unconditional entry.
+@@ -3034,18 +3027,18 @@
+
+ def _GetMSBuildToolSettingsSections(spec, configurations):
+ groups = []
+- for (name, configuration) in sorted(configurations.iteritems()):
++ for (name, configuration) in sorted(configurations.items()):
+ msbuild_settings = configuration['finalized_msbuild_settings']
+ group = ['ItemDefinitionGroup',
+ {'Condition': _GetConfigurationCondition(name, configuration)}
+ ]
+- for tool_name, tool_settings in sorted(msbuild_settings.iteritems()):
++ for tool_name, tool_settings in sorted(msbuild_settings.items()):
+ # Skip the tool named '' which is a holder of global settings handled
+ # by _GetMSBuildConfigurationGlobalProperties.
+ if tool_name:
+ if tool_settings:
+ tool = [tool_name]
+- for name, value in sorted(tool_settings.iteritems()):
++ for name, value in sorted(tool_settings.items()):
+ formatted_value = _GetValueFormattedForMSBuild(tool_name, name,
+ value)
+ tool.append([name, formatted_value])
+@@ -3078,8 +3071,8 @@
+ for ignored_setting in ignored_settings:
+ value = configuration.get(ignored_setting)
+ if value:
+- print ('Warning: The automatic conversion to MSBuild does not handle '
+- '%s. Ignoring setting of %s' % (ignored_setting, str(value)))
++ print('Warning: The automatic conversion to MSBuild does not handle '
++ '%s. Ignoring setting of %s' % (ignored_setting, str(value)))
+
+ defines = [_EscapeCppDefineForMSBuild(d) for d in defines]
+ disabled_warnings = _GetDisabledWarnings(configuration)
+@@ -3245,7 +3238,7 @@
+ {'Condition': condition},
+ 'true'])
+ # Add precompile if needed
+- for config_name, configuration in spec['configurations'].iteritems():
++ for config_name, configuration in spec['configurations'].items():
+ precompiled_source = configuration.get('msvs_precompiled_source', '')
+ if precompiled_source != '':
+ precompiled_source = _FixPath(precompiled_source)
+@@ -3291,7 +3284,7 @@
+ ['Project', guid],
+ ['ReferenceOutputAssembly', 'false']
+ ]
+- for config in dependency.spec.get('configurations', {}).itervalues():
++ for config in dependency.spec.get('configurations', {}).values():
+ if config.get('msvs_use_library_dependency_inputs', 0):
+ project_ref.append(['UseLibraryDependencyInputs', 'true'])
+ break
+@@ -3360,7 +3353,7 @@
+ extension_to_rule_name)
+ missing_sources = _VerifySourcesExist(sources, project_dir)
+
+- for configuration in configurations.itervalues():
++ for configuration in configurations.values():
+ _FinalizeMSBuildSettings(spec, configuration)
+
+ # Add attributes to root element
+@@ -3486,7 +3479,7 @@
+ """
+ sources_handled_by_action = OrderedSet()
+ actions_spec = []
+- for primary_input, actions in actions_to_add.iteritems():
++ for primary_input, actions in actions_to_add.items():
+ inputs = OrderedSet()
+ outputs = OrderedSet()
+ descriptions = []
+diff --git a/tools/gyp/pylib/gyp/generator/msvs_test.py b/pylib/gyp/generator/msvs_test.py
+index c0b021d..838d236 100755
+--- a/tools/gyp/pylib/gyp/generator/msvs_test.py
++++ b/tools/gyp/pylib/gyp/generator/msvs_test.py
+@@ -7,13 +7,16 @@
+
+ import gyp.generator.msvs as msvs
+ import unittest
+-import StringIO
++try:
++ from StringIO import StringIO
++except ImportError:
++ from io import StringIO
+
+
+ class TestSequenceFunctions(unittest.TestCase):
+
+ def setUp(self):
+- self.stderr = StringIO.StringIO()
++ self.stderr = StringIO()
+
+ def test_GetLibraries(self):
+ self.assertEqual(
+diff --git a/tools/gyp/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py
+index 6de87b7..66faabc 100644
+--- a/tools/gyp/pylib/gyp/generator/ninja.py
++++ b/tools/gyp/pylib/gyp/generator/ninja.py
+@@ -2,6 +2,8 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
++from __future__ import print_function
++
+ import collections
+ import copy
+ import hashlib
+@@ -18,7 +20,10 @@
+ import gyp.msvs_emulation
+ import gyp.MSVSUtil as MSVSUtil
+ import gyp.xcode_emulation
+-from cStringIO import StringIO
++try:
++ from cStringIO import StringIO
++except ImportError:
++ from io import StringIO
+
+ from gyp.common import GetEnvironFallback
+ import gyp.ninja_syntax as ninja_syntax
+@@ -350,7 +355,7 @@
+
+ Uses a stamp file if necessary."""
+
+- assert targets == filter(None, targets), targets
++ assert targets == [t for t in targets if t], targets
+ if len(targets) == 0:
+ assert not order_only
+ return None
+@@ -427,8 +432,8 @@
+ compile_depends.append(target.PreCompileInput())
+ if target.uses_cpp:
+ self.target.uses_cpp = True
+- actions_depends = filter(None, actions_depends)
+- compile_depends = filter(None, compile_depends)
++ actions_depends = [d for d in actions_depends if d]
++ compile_depends = [d for d in compile_depends if d]
+ actions_depends = self.WriteCollapsedDependencies('actions_depends',
+ actions_depends)
+ compile_depends = self.WriteCollapsedDependencies('compile_depends',
+@@ -455,8 +460,8 @@
+ try:
+ sources = extra_sources + spec.get('sources', [])
+ except TypeError:
+- print 'extra_sources: ', str(extra_sources)
+- print 'spec.get("sources"): ', str(spec.get('sources'))
++ print('extra_sources: ', str(extra_sources))
++ print('spec.get("sources"): ', str(spec.get('sources')))
+ raise
+ if sources:
+ if self.flavor == 'mac' and len(self.archs) > 1:
+@@ -485,8 +490,9 @@
+ if self.flavor != 'mac' or len(self.archs) == 1:
+ link_deps += [self.GypPathToNinja(o) for o in obj_outputs]
+ else:
+- print "Warning: Actions/rules writing object files don't work with " \
+- "multiarch targets, dropping. (target %s)" % spec['target_name']
++ print("Warning: Actions/rules writing object files don't work with " \
++ "multiarch targets, dropping. (target %s)" %
++ spec['target_name'])
+ elif self.flavor == 'mac' and len(self.archs) > 1:
+ link_deps = collections.defaultdict(list)
+
+@@ -838,7 +844,7 @@
+ 'XCASSETS_LAUNCH_IMAGE': 'launch-image',
+ }
+ settings = self.xcode_settings.xcode_settings[self.config_name]
+- for settings_key, arg_name in settings_to_arg.iteritems():
++ for settings_key, arg_name in settings_to_arg.items():
+ value = settings.get(settings_key)
+ if value:
+ extra_arguments[arg_name] = value
+@@ -1772,7 +1778,7 @@
+
+ # VS 2015 uses 20% more working set than VS 2013 and can consume all RAM
+ # on a 64 GB machine.
+- mem_limit = max(1, stat.ullTotalPhys / (5 * (2 ** 30))) # total / 5GB
++ mem_limit = max(1, stat.ullTotalPhys // (5 * (2 ** 30))) # total / 5GB
+ hard_cap = max(1, int(os.environ.get('GYP_LINK_CONCURRENCY_MAX', 2**32)))
+ return min(mem_limit, hard_cap)
+ elif sys.platform.startswith('linux'):
+@@ -1784,14 +1790,14 @@
+ if not match:
+ continue
+ # Allow 8Gb per link on Linux because Gold is quite memory hungry
+- return max(1, int(match.group(1)) / (8 * (2 ** 20)))
++ return max(1, int(match.group(1)) // (8 * (2 ** 20)))
+ return 1
+ elif sys.platform == 'darwin':
+ try:
+ avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
+ # A static library debug build of Chromium's unit_tests takes ~2.7GB, so
+ # 4GB per ld process allows for some more bloat.
+- return max(1, avail_bytes / (4 * (2 ** 30))) # total / 4GB
++ return max(1, avail_bytes // (4 * (2 ** 30))) # total / 4GB
+ except:
+ return 1
+ else:
+@@ -1946,7 +1952,7 @@
+ wrappers[key[:-len('_wrapper')]] = os.path.join(build_to_root, value)
+
+ # Support wrappers from environment variables too.
+- for key, value in os.environ.iteritems():
++ for key, value in os.environ.items():
+ if key.lower().endswith('_wrapper'):
+ key_prefix = key[:-len('_wrapper')]
+ key_prefix = re.sub(r'\.HOST$', '.host', key_prefix)
+@@ -1966,7 +1972,7 @@
+ configs, generator_flags)
+ cl_paths = gyp.msvs_emulation.GenerateEnvironmentFiles(
+ toplevel_build, generator_flags, shared_system_includes, OpenOutput)
+- for arch, path in sorted(cl_paths.iteritems()):
++ for arch, path in sorted(cl_paths.items()):
+ if clang_cl:
+ # If we have selected clang-cl, use that instead.
+ path = clang_cl
+@@ -2381,6 +2387,7 @@
+
+ qualified_target_for_hash = gyp.common.QualifiedTarget(build_file, name,
+ toolset)
++ qualified_target_for_hash = qualified_target_for_hash.encode('utf-8')
+ hash_for_rules = hashlib.md5(qualified_target_for_hash).hexdigest()
+
+ base_path = os.path.dirname(build_file)
+@@ -2447,7 +2454,7 @@
+ for config in configurations:
+ builddir = os.path.join(options.toplevel_dir, 'out', config)
+ arguments = ['ninja', '-C', builddir]
+- print 'Building [%s]: %s' % (config, arguments)
++ print('Building [%s]: %s' % (config, arguments))
+ subprocess.check_call(arguments)
+
+
+@@ -2475,7 +2482,7 @@
+ GenerateOutputForConfig(target_list, target_dicts, data, params,
+ user_config)
+ else:
+- config_names = target_dicts[target_list[0]]['configurations'].keys()
++ config_names = target_dicts[target_list[0]]['configurations']
+ if params['parallel']:
+ try:
+ pool = multiprocessing.Pool(len(config_names))
+@@ -2484,7 +2491,7 @@
+ arglists.append(
+ (target_list, target_dicts, data, params, config_name))
+ pool.map(CallGenerateOutputForConfig, arglists)
+- except KeyboardInterrupt, e:
++ except KeyboardInterrupt as e:
+ pool.terminate()
+ raise e
+ else:
+diff --git a/tools/gyp/pylib/gyp/generator/ninja_test.py b/pylib/gyp/generator/ninja_test.py
+index 1767b2f..1ad68e4 100644
+--- a/tools/gyp/pylib/gyp/generator/ninja_test.py
++++ b/tools/gyp/pylib/gyp/generator/ninja_test.py
+@@ -8,7 +8,6 @@
+
+ import gyp.generator.ninja as ninja
+ import unittest
+-import StringIO
+ import sys
+ import TestCommon
+
+diff --git a/tools/gyp/pylib/gyp/generator/xcode.py b/pylib/gyp/generator/xcode.py
+index b35372a..8bc22be 100644
+--- a/tools/gyp/pylib/gyp/generator/xcode.py
++++ b/tools/gyp/pylib/gyp/generator/xcode.py
+@@ -2,6 +2,8 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
++from __future__ import print_function
++
+ import filecmp
+ import gyp.common
+ import gyp.xcodeproj_file
+@@ -129,7 +131,7 @@
+ try:
+ os.makedirs(self.path)
+ self.created_dir = True
+- except OSError, e:
++ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+
+@@ -183,7 +185,7 @@
+ # the tree tree view for UI display.
+ # Any values set globally are applied to all configurations, then any
+ # per-configuration values are applied.
+- for xck, xcv in self.build_file_dict.get('xcode_settings', {}).iteritems():
++ for xck, xcv in self.build_file_dict.get('xcode_settings', {}).items():
+ xccl.SetBuildSetting(xck, xcv)
+ if 'xcode_config_file' in self.build_file_dict:
+ config_ref = self.project.AddOrGetFileInRootGroup(
+@@ -197,7 +199,7 @@
+ if build_file_configuration_named:
+ xcc = xccl.ConfigurationNamed(config_name)
+ for xck, xcv in build_file_configuration_named.get('xcode_settings',
+- {}).iteritems():
++ {}).items():
+ xcc.SetBuildSetting(xck, xcv)
+ if 'xcode_config_file' in build_file_configuration_named:
+ config_ref = self.project.AddOrGetFileInRootGroup(
+@@ -273,7 +275,7 @@
+ script = script + "\n".join(
+ ['export %s="%s"' %
+ (key, gyp.xcodeproj_file.ConvertVariablesToShellSyntax(val))
+- for (key, val) in command.get('environment').iteritems()]) + "\n"
++ for (key, val) in command.get('environment').items()]) + "\n"
+
+ # Some test end up using sockets, files on disk, etc. and can get
+ # confused if more then one test runs at a time. The generator
+@@ -444,7 +446,7 @@
+ dir=self.path)
+
+ try:
+- output_file = os.fdopen(output_fd, 'wb')
++ output_file = os.fdopen(output_fd, 'w')
+
+ self.project_file.Print(output_file)
+ output_file.close()
+@@ -454,7 +456,7 @@
+ same = False
+ try:
+ same = filecmp.cmp(pbxproj_path, new_pbxproj_path, False)
+- except OSError, e:
++ except OSError as e:
+ if e.errno != errno.ENOENT:
+ raise
+
+@@ -473,10 +475,10 @@
+ #
+ # No way to get the umask without setting a new one? Set a safe one
+ # and then set it back to the old value.
+- umask = os.umask(077)
++ umask = os.umask(0o77)
+ os.umask(umask)
+
+- os.chmod(new_pbxproj_path, 0666 & ~umask)
++ os.chmod(new_pbxproj_path, 0o666 & ~umask)
+ os.rename(new_pbxproj_path, pbxproj_path)
+
+ except Exception:
+@@ -566,7 +568,7 @@
+ def PerformBuild(data, configurations, params):
+ options = params['options']
+
+- for build_file, build_file_dict in data.iteritems():
++ for build_file, build_file_dict in data.items():
+ (build_file_root, build_file_ext) = os.path.splitext(build_file)
+ if build_file_ext != '.gyp':
+ continue
+@@ -577,7 +579,7 @@
+ for config in configurations:
+ arguments = ['xcodebuild', '-project', xcodeproj_path]
+ arguments += ['-configuration', config]
+- print "Building [%s]: %s" % (config, arguments)
++ print("Building [%s]: %s" % (config, arguments))
+ subprocess.check_call(arguments)
+
+
+@@ -625,7 +627,7 @@
+ skip_excluded_files = \
+ not generator_flags.get('xcode_list_excluded_files', True)
+ xcode_projects = {}
+- for build_file, build_file_dict in data.iteritems():
++ for build_file, build_file_dict in data.items():
+ (build_file_root, build_file_ext) = os.path.splitext(build_file)
+ if build_file_ext != '.gyp':
+ continue
+@@ -744,7 +746,7 @@
+ xctarget_type = gyp.xcodeproj_file.PBXNativeTarget
+ try:
+ target_properties['productType'] = _types[type_bundle_key]
+- except KeyError, e:
++ except KeyError as e:
+ gyp.common.ExceptionAppend(e, "-- unknown product type while "
+ "writing target %s" % target_name)
+ raise
+@@ -1016,22 +1018,21 @@
+ makefile_name)
+ # TODO(mark): try/close? Write to a temporary file and swap it only
+ # if it's got changes?
+- makefile = open(makefile_path, 'wb')
++ makefile = open(makefile_path, 'w')
+
+ # make will build the first target in the makefile by default. By
+ # convention, it's called "all". List all (or at least one)
+ # concrete output for each rule source as a prerequisite of the "all"
+ # target.
+ makefile.write('all: \\\n')
+- for concrete_output_index in \
+- xrange(0, len(concrete_outputs_by_rule_source)):
++ for concrete_output_index, concrete_output_by_rule_source in \
++ enumerate(concrete_outputs_by_rule_source):
+ # Only list the first (index [0]) concrete output of each input
+ # in the "all" target. Otherwise, a parallel make (-j > 1) would
+ # attempt to process each input multiple times simultaneously.
+ # Otherwise, "all" could just contain the entire list of
+ # concrete_outputs_all.
+- concrete_output = \
+- concrete_outputs_by_rule_source[concrete_output_index][0]
++ concrete_output = concrete_output_by_rule_source[0]
+ if concrete_output_index == len(concrete_outputs_by_rule_source) - 1:
+ eol = ''
+ else:
+@@ -1047,8 +1048,8 @@
+ # rule source. Collect the names of the directories that are
+ # required.
+ concrete_output_dirs = []
+- for concrete_output_index in xrange(0, len(concrete_outputs)):
+- concrete_output = concrete_outputs[concrete_output_index]
++ for concrete_output_index, concrete_output in \
++ enumerate(concrete_outputs):
+ if concrete_output_index == 0:
+ bol = ''
+ else:
+@@ -1066,8 +1067,7 @@
+ # the set of additional rule inputs, if any.
+ prerequisites = [rule_source]
+ prerequisites.extend(rule.get('inputs', []))
+- for prerequisite_index in xrange(0, len(prerequisites)):
+- prerequisite = prerequisites[prerequisite_index]
++ for prerequisite_index, prerequisite in enumerate(prerequisites):
+ if prerequisite_index == len(prerequisites) - 1:
+ eol = ''
+ else:
+@@ -1279,7 +1279,7 @@
+ set_define = EscapeXcodeDefine(define)
+ xcbc.AppendBuildSetting('GCC_PREPROCESSOR_DEFINITIONS', set_define)
+ if 'xcode_settings' in configuration:
+- for xck, xcv in configuration['xcode_settings'].iteritems():
++ for xck, xcv in configuration['xcode_settings'].items():
+ xcbc.SetBuildSetting(xck, xcv)
+ if 'xcode_config_file' in configuration:
+ config_ref = pbxp.AddOrGetFileInRootGroup(
+@@ -1287,7 +1287,7 @@
+ xcbc.SetBaseConfiguration(config_ref)
+
+ build_files = []
+- for build_file, build_file_dict in data.iteritems():
++ for build_file, build_file_dict in data.items():
+ if build_file.endswith('.gyp'):
+ build_files.append(build_file)
+
+diff --git a/tools/gyp/pylib/gyp/input.py b/pylib/gyp/input.py
+index 21b4606..8ac47cb 100644
+--- a/tools/gyp/pylib/gyp/input.py
++++ b/tools/gyp/pylib/gyp/input.py
+@@ -2,8 +2,9 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-import ast
++from __future__ import print_function
+
++import ast
+ import gyp.common
+ import gyp.simple_copy
+ import multiprocessing
+@@ -231,10 +232,10 @@
+ else:
+ build_file_data = eval(build_file_contents, {'__builtins__': None},
+ None)
+- except SyntaxError, e:
++ except SyntaxError as e:
+ e.filename = build_file_path
+ raise
+- except Exception, e:
++ except Exception as e:
+ gyp.common.ExceptionAppend(e, 'while reading ' + build_file_path)
+ raise
+
+@@ -254,7 +255,7 @@
+ else:
+ LoadBuildFileIncludesIntoDict(build_file_data, build_file_path, data,
+ aux_data, None, check)
+- except Exception, e:
++ except Exception as e:
+ gyp.common.ExceptionAppend(e,
+ 'while reading includes of ' + build_file_path)
+ raise
+@@ -291,7 +292,7 @@
+ subdict_path, include)
+
+ # Recurse into subdictionaries.
+- for k, v in subdict.iteritems():
++ for k, v in subdict.items():
+ if type(v) is dict:
+ LoadBuildFileIncludesIntoDict(v, subdict_path, data, aux_data,
+ None, check)
+@@ -456,7 +457,7 @@
+ try:
+ LoadTargetBuildFile(dependency, data, aux_data, variables,
+ includes, depth, check, load_dependencies)
+- except Exception, e:
++ except Exception as e:
+ gyp.common.ExceptionAppend(
+ e, 'while loading dependencies of %s' % build_file_path)
+ raise
+@@ -477,7 +478,7 @@
+ signal.signal(signal.SIGINT, signal.SIG_IGN)
+
+ # Apply globals so that the worker process behaves the same.
+- for key, value in global_flags.iteritems():
++ for key, value in global_flags.items():
+ globals()[key] = value
+
+ SetGeneratorGlobals(generator_input_info)
+@@ -499,12 +500,12 @@
+ return (build_file_path,
+ build_file_data,
+ dependencies)
+- except GypError, e:
++ except GypError as e:
+ sys.stderr.write("gyp: %s\n" % e)
+ return None
+- except Exception, e:
+- print >>sys.stderr, 'Exception:', e
+- print >>sys.stderr, traceback.format_exc()
++ except Exception as e:
++ print('Exception:', e, file=sys.stderr)
++ print(traceback.format_exc(), file=sys.stderr)
+ return None
+
+
+@@ -594,7 +595,7 @@
+ args = (global_flags, dependency,
+ variables, includes, depth, check, generator_input_info),
+ callback = parallel_state.LoadTargetBuildFileCallback)
+- except KeyboardInterrupt, e:
++ except KeyboardInterrupt as e:
+ parallel_state.pool.terminate()
+ raise e
+
+@@ -894,7 +895,7 @@
+ stderr=subprocess.PIPE,
+ stdin=subprocess.PIPE,
+ cwd=build_file_dir)
+- except Exception, e:
++ except Exception as e:
+ raise GypError("%s while executing command '%s' in %s" %
+ (e, contents, build_file))
+
+@@ -1008,9 +1009,9 @@
+
+ # Convert all strings that are canonically-represented integers into integers.
+ if type(output) is list:
+- for index in xrange(0, len(output)):
+- if IsStrCanonicalInt(output[index]):
+- output[index] = int(output[index])
++ for index, outstr in enumerate(output):
++ if IsStrCanonicalInt(outstr):
++ output[index] = int(outstr)
+ elif IsStrCanonicalInt(output):
+ output = int(output)
+
+@@ -1079,13 +1080,13 @@
+ if eval(ast_code, {'__builtins__': None}, variables):
+ return true_dict
+ return false_dict
+- except SyntaxError, e:
++ except SyntaxError as e:
+ syntax_error = SyntaxError('%s while evaluating condition \'%s\' in %s '
+ 'at character %d.' %
+ (str(e.args[0]), e.text, build_file, e.offset),
+ e.filename, e.lineno, e.offset, e.text)
+ raise syntax_error
+- except NameError, e:
++ except NameError as e:
+ gyp.common.ExceptionAppend(e, 'while evaluating condition \'%s\' in %s' %
+ (cond_expr_expanded, build_file))
+ raise GypError(e)
+@@ -1140,7 +1141,7 @@
+ def LoadAutomaticVariablesFromDict(variables, the_dict):
+ # Any keys with plain string values in the_dict become automatic variables.
+ # The variable name is the key name with a "_" character prepended.
+- for key, value in the_dict.iteritems():
++ for key, value in the_dict.items():
+ if type(value) in (str, int, list):
+ variables['_' + key] = value
+
+@@ -1153,7 +1154,7 @@
+ # the_dict in the_dict's parent dict. If the_dict's parent is not a dict
+ # (it could be a list or it could be parentless because it is a root dict),
+ # the_dict_key will be None.
+- for key, value in the_dict.get('variables', {}).iteritems():
++ for key, value in the_dict.get('variables', {}).items():
+ if type(value) not in (str, int, list):
+ continue
+
+@@ -1192,7 +1193,7 @@
+ # list before we process them so that you can reference one
+ # variable from another. They will be fully expanded by recursion
+ # in ExpandVariables.
+- for key, value in the_dict['variables'].iteritems():
++ for key, value in the_dict['variables'].items():
+ variables[key] = value
+
+ # Handle the associated variables dict first, so that any variable
+@@ -1205,7 +1206,7 @@
+
+ LoadVariablesFromVariablesDict(variables, the_dict, the_dict_key)
+
+- for key, value in the_dict.iteritems():
++ for key, value in the_dict.items():
+ # Skip "variables", which was already processed if present.
+ if key != 'variables' and type(value) is str:
+ expanded = ExpandVariables(value, phase, variables, build_file)
+@@ -1263,7 +1264,7 @@
+
+ # Recurse into child dicts, or process child lists which may result in
+ # further recursion into descendant dicts.
+- for key, value in the_dict.iteritems():
++ for key, value in the_dict.items():
+ # Skip "variables" and string values, which were already processed if
+ # present.
+ if key == 'variables' or type(value) is str:
+@@ -1360,14 +1361,14 @@
+ for dep in dependency_sections
+ for op in ('', '!', '/')]
+
+- for target, target_dict in targets.iteritems():
++ for target, target_dict in targets.items():
+ target_build_file = gyp.common.BuildFile(target)
+ toolset = target_dict['toolset']
+ for dependency_key in all_dependency_sections:
+ dependencies = target_dict.get(dependency_key, [])
+- for index in xrange(0, len(dependencies)):
++ for index, dep in enumerate(dependencies):
+ dep_file, dep_target, dep_toolset = gyp.common.ResolveTarget(
+- target_build_file, dependencies[index], toolset)
++ target_build_file, dep, toolset)
+ if not multiple_toolsets:
+ # Ignore toolset specification in the dependency if it is specified.
+ dep_toolset = toolset
+@@ -1400,7 +1401,7 @@
+ dependency list, must be qualified when this function is called.
+ """
+
+- for target, target_dict in targets.iteritems():
++ for target, target_dict in targets.items():
+ toolset = target_dict['toolset']
+ target_build_file = gyp.common.BuildFile(target)
+ for dependency_key in dependency_sections:
+@@ -1462,7 +1463,7 @@
+ def RemoveDuplicateDependencies(targets):
+ """Makes sure every dependency appears only once in all targets's dependency
+ lists."""
+- for target_name, target_dict in targets.iteritems():
++ for target_name, target_dict in targets.items():
+ for dependency_key in dependency_sections:
+ dependencies = target_dict.get(dependency_key, [])
+ if dependencies:
+@@ -1478,7 +1479,7 @@
+ def RemoveSelfDependencies(targets):
+ """Remove self dependencies from targets that have the prune_self_dependency
+ variable set."""
+- for target_name, target_dict in targets.iteritems():
++ for target_name, target_dict in targets.items():
+ for dependency_key in dependency_sections:
+ dependencies = target_dict.get(dependency_key, [])
+ if dependencies:
+@@ -1491,7 +1492,7 @@
+ def RemoveLinkDependenciesFromNoneTargets(targets):
+ """Remove dependencies having the 'link_dependency' attribute from the 'none'
+ targets."""
+- for target_name, target_dict in targets.iteritems():
++ for target_name, target_dict in targets.items():
+ for dependency_key in dependency_sections:
+ dependencies = target_dict.get(dependency_key, [])
+ if dependencies:
+@@ -1783,14 +1784,14 @@
+ # Create a DependencyGraphNode for each target. Put it into a dict for easy
+ # access.
+ dependency_nodes = {}
+- for target, spec in targets.iteritems():
++ for target, spec in targets.items():
+ if target not in dependency_nodes:
+ dependency_nodes[target] = DependencyGraphNode(target)
+
+ # Set up the dependency links. Targets that have no dependencies are treated
+ # as dependent on root_node.
+ root_node = DependencyGraphNode(None)
+- for target, spec in targets.iteritems():
++ for target, spec in targets.items():
+ target_node = dependency_nodes[target]
+ target_build_file = gyp.common.BuildFile(target)
+ dependencies = spec.get('dependencies')
+@@ -1814,7 +1815,7 @@
+ if not root_node.dependents:
+ # If all targets have dependencies, add the first target as a dependent
+ # of root_node so that the cycle can be discovered from root_node.
+- target = targets.keys()[0]
++ target = next(iter(targets))
+ target_node = dependency_nodes[target]
+ target_node.dependencies.append(root_node)
+ root_node.dependents.append(target_node)
+@@ -1833,20 +1834,20 @@
+ # Create a DependencyGraphNode for each gyp file containing a target. Put
+ # it into a dict for easy access.
+ dependency_nodes = {}
+- for target in targets.iterkeys():
++ for target in targets.keys():
+ build_file = gyp.common.BuildFile(target)
+ if not build_file in dependency_nodes:
+ dependency_nodes[build_file] = DependencyGraphNode(build_file)
+
+ # Set up the dependency links.
+- for target, spec in targets.iteritems():
++ for target, spec in targets.items():
+ build_file = gyp.common.BuildFile(target)
+ build_file_node = dependency_nodes[build_file]
+ target_dependencies = spec.get('dependencies', [])
+ for dependency in target_dependencies:
+ try:
+ dependency_build_file = gyp.common.BuildFile(dependency)
+- except GypError, e:
++ except GypError as e:
+ gyp.common.ExceptionAppend(
+ e, 'while computing dependencies of .gyp file %s' % build_file)
+ raise
+@@ -1864,7 +1865,7 @@
+
+ # Files that have no dependencies are treated as dependent on root_node.
+ root_node = DependencyGraphNode(None)
+- for build_file_node in dependency_nodes.itervalues():
++ for build_file_node in dependency_nodes.values():
+ if len(build_file_node.dependencies) == 0:
+ build_file_node.dependencies.append(root_node)
+ root_node.dependents.append(build_file_node)
+@@ -1877,7 +1878,7 @@
+ if not root_node.dependents:
+ # If all files have dependencies, add the first file as a dependent
+ # of root_node so that the cycle can be discovered from root_node.
+- file_node = dependency_nodes.values()[0]
++ file_node = next(iter(dependency_nodes.values()))
+ file_node.dependencies.append(root_node)
+ root_node.dependents.append(file_node)
+ cycles = []
+@@ -2104,7 +2105,7 @@
+
+ def MergeDicts(to, fro, to_file, fro_file):
+ # I wanted to name the parameter "from" but it's a Python keyword...
+- for k, v in fro.iteritems():
++ for k, v in fro.items():
+ # It would be nice to do "if not k in to: to[k] = v" but that wouldn't give
+ # copy semantics. Something else may want to merge from the |fro| dict
+ # later, and having the same dict ref pointed to twice in the tree isn't
+@@ -2239,13 +2240,13 @@
+ if not 'configurations' in target_dict:
+ target_dict['configurations'] = {'Default': {}}
+ if not 'default_configuration' in target_dict:
+- concrete = [i for (i, config) in target_dict['configurations'].iteritems()
++ concrete = [i for (i, config) in target_dict['configurations'].items()
+ if not config.get('abstract')]
+ target_dict['default_configuration'] = sorted(concrete)[0]
+
+ merged_configurations = {}
+ configs = target_dict['configurations']
+- for (configuration, old_configuration_dict) in configs.iteritems():
++ for (configuration, old_configuration_dict) in configs.items():
+ # Skip abstract configurations (saves work only).
+ if old_configuration_dict.get('abstract'):
+ continue
+@@ -2253,7 +2254,7 @@
+ # Get the inheritance relationship right by making a copy of the target
+ # dict.
+ new_configuration_dict = {}
+- for (key, target_val) in target_dict.iteritems():
++ for (key, target_val) in target_dict.items():
+ key_ext = key[-1:]
+ if key_ext in key_suffixes:
+ key_base = key[:-1]
+@@ -2274,10 +2275,9 @@
+ merged_configurations[configuration])
+
+ # Now drop all the abstract ones.
+- for configuration in target_dict['configurations'].keys():
+- old_configuration_dict = target_dict['configurations'][configuration]
+- if old_configuration_dict.get('abstract'):
+- del target_dict['configurations'][configuration]
++ configs = target_dict['configurations']
++ target_dict['configurations'] = \
++ {k: v for k, v in configs.items() if not v.get('abstract')}
+
+ # Now that all of the target's configurations have been built, go through
+ # the target dict's keys and remove everything that's been moved into a
+@@ -2337,7 +2337,7 @@
+
+ lists = []
+ del_lists = []
+- for key, value in the_dict.iteritems():
++ for key, value in the_dict.items():
+ operation = key[-1]
+ if operation != '!' and operation != '/':
+ continue
+@@ -2385,8 +2385,8 @@
+ exclude_key = list_key + '!'
+ if exclude_key in the_dict:
+ for exclude_item in the_dict[exclude_key]:
+- for index in xrange(0, len(the_list)):
+- if exclude_item == the_list[index]:
++ for index, list_item in enumerate(the_list):
++ if exclude_item == list_item:
+ # This item matches the exclude_item, so set its action to 0
+ # (exclude).
+ list_actions[index] = 0
+@@ -2411,8 +2411,7 @@
+ raise ValueError('Unrecognized action ' + action + ' in ' + name + \
+ ' key ' + regex_key)
+
+- for index in xrange(0, len(the_list)):
+- list_item = the_list[index]
++ for index, list_item in enumerate(the_list):
+ if list_actions[index] == action_value:
+ # Even if the regex matches, nothing will change so continue (regex
+ # searches are expensive).
+@@ -2442,7 +2441,7 @@
+ # the indices of items that haven't been seen yet don't shift. That means
+ # that things need to be prepended to excluded_list to maintain them in the
+ # same order that they existed in the_list.
+- for index in xrange(len(list_actions) - 1, -1, -1):
++ for index in range(len(list_actions) - 1, -1, -1):
+ if list_actions[index] == 0:
+ # Dump anything with action 0 (exclude). Keep anything with action 1
+ # (include) or -1 (no include or exclude seen for the item).
+@@ -2455,7 +2454,7 @@
+ the_dict[excluded_key] = excluded_list
+
+ # Now recurse into subdicts and lists that may contain dicts.
+- for key, value in the_dict.iteritems():
++ for key, value in the_dict.items():
+ if type(value) is dict:
+ ProcessListFiltersInDict(key, value)
+ elif type(value) is list:
+@@ -2512,7 +2511,7 @@
+ basenames.setdefault(basename, []).append(source)
+
+ error = ''
+- for basename, files in basenames.iteritems():
++ for basename, files in basenames.items():
+ if len(files) > 1:
+ error += ' %s: %s\n' % (basename, ' '.join(files))
+
+@@ -2651,8 +2650,7 @@
+ def TurnIntIntoStrInList(the_list):
+ """Given list the_list, recursively converts all integers into strings.
+ """
+- for index in xrange(0, len(the_list)):
+- item = the_list[index]
++ for index, item in enumerate(the_list):
+ if type(item) is int:
+ the_list[index] = str(item)
+ elif type(item) is dict:
+@@ -2769,7 +2767,7 @@
+ try:
+ LoadTargetBuildFile(build_file, data, aux_data,
+ variables, includes, depth, check, True)
+- except Exception, e:
++ except Exception as e:
+ gyp.common.ExceptionAppend(e, 'while trying to load %s' % build_file)
+ raise
+
+@@ -2791,7 +2789,7 @@
+ RemoveLinkDependenciesFromNoneTargets(targets)
+
+ # Apply exclude (!) and regex (/) list filters only for dependency_sections.
+- for target_name, target_dict in targets.iteritems():
++ for target_name, target_dict in targets.items():
+ tmp_dict = {}
+ for key_base in dependency_sections:
+ for op in ('', '!', '/'):
+diff --git a/tools/gyp/pylib/gyp/input_test.py b/pylib/gyp/input_test.py
+index 4234fbb..6c4b1cc 100755
+--- a/tools/gyp/pylib/gyp/input_test.py
++++ b/tools/gyp/pylib/gyp/input_test.py
+@@ -22,7 +22,7 @@
+ dependency.dependents.append(dependent)
+
+ def test_no_cycle_empty_graph(self):
+- for label, node in self.nodes.iteritems():
++ for label, node in self.nodes.items():
+ self.assertEquals([], node.FindCycles())
+
+ def test_no_cycle_line(self):
+@@ -30,7 +30,7 @@
+ self._create_dependency(self.nodes['b'], self.nodes['c'])
+ self._create_dependency(self.nodes['c'], self.nodes['d'])
+
+- for label, node in self.nodes.iteritems():
++ for label, node in self.nodes.items():
+ self.assertEquals([], node.FindCycles())
+
+ def test_no_cycle_dag(self):
+@@ -38,7 +38,7 @@
+ self._create_dependency(self.nodes['a'], self.nodes['c'])
+ self._create_dependency(self.nodes['b'], self.nodes['c'])
+
+- for label, node in self.nodes.iteritems():
++ for label, node in self.nodes.items():
+ self.assertEquals([], node.FindCycles())
+
+ def test_cycle_self_reference(self):
+diff --git a/tools/gyp/pylib/gyp/mac_tool.py b/pylib/gyp/mac_tool.py
+index 0ad7e7a..7d3a8c2 100755
+--- a/tools/gyp/pylib/gyp/mac_tool.py
++++ b/tools/gyp/pylib/gyp/mac_tool.py
+@@ -8,6 +8,8 @@
+ These functions are executed via gyp-mac-tool when using the Makefile generator.
+ """
+
++from __future__ import print_function
++
+ import fcntl
+ import fnmatch
+ import glob
+@@ -16,7 +18,6 @@
+ import plistlib
+ import re
+ import shutil
+-import string
+ import struct
+ import subprocess
+ import sys
+@@ -155,11 +156,11 @@
+ fp.close()
+ return None
+ fp.close()
+- if header.startswith("\xFE\xFF"):
++ if header.startswith(b"\xFE\xFF"):
+ return "UTF-16"
+- elif header.startswith("\xFF\xFE"):
++ elif header.startswith(b"\xFF\xFE"):
+ return "UTF-16"
+- elif header.startswith("\xEF\xBB\xBF"):
++ elif header.startswith(b"\xEF\xBB\xBF"):
+ return "UTF-8"
+ else:
+ return None
+@@ -174,7 +175,7 @@
+ # Insert synthesized key/value pairs (e.g. BuildMachineOSBuild).
+ plist = plistlib.readPlistFromString(lines)
+ if keys:
+- plist = dict(plist.items() + json.loads(keys[0]).items())
++ plist.update(json.loads(keys[0]))
+ lines = plistlib.writePlistToString(plist)
+
+ # Go through all the environment variables and replace them as variables in
+@@ -185,7 +186,7 @@
+ continue
+ evar = '${%s}' % key
+ evalue = os.environ[key]
+- lines = string.replace(lines, evar, evalue)
++ lines = lines.replace(evar, evalue)
+
+ # Xcode supports various suffices on environment variables, which are
+ # all undocumented. :rfc1034identifier is used in the standard project
+@@ -195,11 +196,11 @@
+ # in a URL either -- oops, hence :rfc1034identifier was born.
+ evar = '${%s:identifier}' % key
+ evalue = IDENT_RE.sub('_', os.environ[key])
+- lines = string.replace(lines, evar, evalue)
++ lines = lines.replace(evar, evalue)
+
+ evar = '${%s:rfc1034identifier}' % key
+ evalue = IDENT_RE.sub('-', os.environ[key])
+- lines = string.replace(lines, evar, evalue)
++ lines = lines.replace(evar, evalue)
+
+ # Remove any keys with values that haven't been replaced.
+ lines = lines.split('\n')
+@@ -270,7 +271,7 @@
+ _, err = libtoolout.communicate()
+ for line in err.splitlines():
+ if not libtool_re.match(line) and not libtool_re5.match(line):
+- print >>sys.stderr, line
++ print(line, file=sys.stderr)
+ # Unconditionally touch the output .a file on the command line if present
+ # and the command succeeded. A bit hacky.
+ if not libtoolout.returncode:
+@@ -385,7 +386,7 @@
+ ])
+ if keys:
+ keys = json.loads(keys)
+- for key, value in keys.iteritems():
++ for key, value in keys.items():
+ arg_name = '--' + key
+ if isinstance(value, bool):
+ if value:
+@@ -480,8 +481,9 @@
+ profiles_dir = os.path.join(
+ os.environ['HOME'], 'Library', 'MobileDevice', 'Provisioning Profiles')
+ if not os.path.isdir(profiles_dir):
+- print >>sys.stderr, (
+- 'cannot find mobile provisioning for %s' % bundle_identifier)
++ print((
++ 'cannot find mobile provisioning for %s' % bundle_identifier),
++ file=sys.stderr)
+ sys.exit(1)
+ provisioning_profiles = None
+ if profile:
+@@ -502,8 +504,9 @@
+ valid_provisioning_profiles[app_id_pattern] = (
+ profile_path, profile_data, team_identifier)
+ if not valid_provisioning_profiles:
+- print >>sys.stderr, (
+- 'cannot find mobile provisioning for %s' % bundle_identifier)
++ print((
++ 'cannot find mobile provisioning for %s' % bundle_identifier),
++ file=sys.stderr)
+ sys.exit(1)
+ # If the user has multiple provisioning profiles installed that can be
+ # used for ${bundle_identifier}, pick the most specific one (ie. the
+@@ -527,7 +530,7 @@
+
+ def _MergePlist(self, merged_plist, plist):
+ """Merge |plist| into |merged_plist|."""
+- for key, value in plist.iteritems():
++ for key, value in plist.items():
+ if isinstance(value, dict):
+ merged_value = merged_plist.get(key, {})
+ if isinstance(merged_value, dict):
+@@ -637,7 +640,7 @@
+ the key was not found.
+ """
+ if isinstance(data, str):
+- for key, value in substitutions.iteritems():
++ for key, value in substitutions.items():
+ data = data.replace('$(%s)' % key, value)
+ return data
+ if isinstance(data, list):
+diff --git a/tools/gyp/pylib/gyp/msvs_emulation.py b/pylib/gyp/msvs_emulation.py
+index 6d5b5bd..63d40e6 100644
+--- a/tools/gyp/pylib/gyp/msvs_emulation.py
++++ b/tools/gyp/pylib/gyp/msvs_emulation.py
+@@ -7,6 +7,7 @@
+ build systems, primarily ninja.
+ """
+
++import collections
+ import os
+ import re
+ import subprocess
+@@ -16,6 +17,12 @@
+ import gyp.MSVSUtil
+ import gyp.MSVSVersion
+
++try:
++ # basestring was removed in python3.
++ basestring
++except NameError:
++ basestring = str
++
+
+ windows_quoter_regex = re.compile(r'(\\*)"')
+
+@@ -84,8 +91,8 @@
+ """Add |prefix| to |element| or each subelement if element is iterable."""
+ if element is None:
+ return element
+- # Note, not Iterable because we don't want to handle strings like that.
+- if isinstance(element, list) or isinstance(element, tuple):
++ if (isinstance(element, collections.Iterable) and
++ not isinstance(element, basestring)):
+ return [prefix + e for e in element]
+ else:
+ return prefix + element
+@@ -97,7 +104,8 @@
+ if map is not None and element is not None:
+ if not callable(map):
+ map = map.get # Assume it's a dict, otherwise a callable to do the remap.
+- if isinstance(element, list) or isinstance(element, tuple):
++ if (isinstance(element, collections.Iterable) and
++ not isinstance(element, basestring)):
+ element = filter(None, [map(elem) for elem in element])
+ else:
+ element = map(element)
+@@ -109,7 +117,8 @@
+ then add |element| to it, adding each item in |element| if it's a list or
+ tuple."""
+ if append is not None and element is not None:
+- if isinstance(element, list) or isinstance(element, tuple):
++ if (isinstance(element, collections.Iterable) and
++ not isinstance(element, basestring)):
+ append.extend(element)
+ else:
+ append.append(element)
+@@ -209,7 +218,7 @@
+ configs = spec['configurations']
+ for field, default in supported_fields:
+ setattr(self, field, {})
+- for configname, config in configs.iteritems():
++ for configname, config in configs.items():
+ getattr(self, field)[configname] = config.get(field, default())
+
+ self.msvs_cygwin_dirs = spec.get('msvs_cygwin_dirs', ['.'])
+@@ -482,7 +491,7 @@
+ # https://msdn.microsoft.com/en-us/library/dn502518.aspx
+ cflags.append('/FS')
+ # ninja handles parallelism by itself, don't have the compiler do it too.
+- cflags = filter(lambda x: not x.startswith('/MP'), cflags)
++ cflags = [x for x in cflags if not x.startswith('/MP')]
+ return cflags
+
+ def _GetPchFlags(self, config, extension):
+@@ -649,19 +658,17 @@
+
+ # If the base address is not specifically controlled, DYNAMICBASE should
+ # be on by default.
+- base_flags = filter(lambda x: 'DYNAMICBASE' in x or x == '/FIXED',
+- ldflags)
+- if not base_flags:
++ if not any('DYNAMICBASE' in flag or flag == '/FIXED' for flag in ldflags):
+ ldflags.append('/DYNAMICBASE')
+
+ # If the NXCOMPAT flag has not been specified, default to on. Despite the
+ # documentation that says this only defaults to on when the subsystem is
+ # Vista or greater (which applies to the linker), the IDE defaults it on
+ # unless it's explicitly off.
+- if not filter(lambda x: 'NXCOMPAT' in x, ldflags):
++ if not any('NXCOMPAT' in flag for flag in ldflags):
+ ldflags.append('/NXCOMPAT')
+
+- have_def_file = filter(lambda x: x.startswith('/DEF:'), ldflags)
++ have_def_file = any(flag.startswith('/DEF:') for flag in ldflags)
+ manifest_flags, intermediate_manifest, manifest_files = \
+ self._GetLdManifestFlags(config, manifest_base_name, gyp_to_build_path,
+ is_executable and not have_def_file, build_dir)
+@@ -953,7 +960,7 @@
+ """Expand $(Variable) per expansions dict. See MsvsSettings.GetVSMacroEnv
+ for the canonical way to retrieve a suitable dict."""
+ if '$' in string:
+- for old, new in expansions.iteritems():
++ for old, new in expansions.items():
+ assert '$(' not in new, new
+ string = string.replace(old, new)
+ return string
+@@ -1001,7 +1008,7 @@
+ CreateProcess documentation for more details."""
+ block = ''
+ nul = '\0'
+- for key, value in envvar_dict.iteritems():
++ for key, value in envvar_dict.items():
+ block += key + '=' + value + nul
+ block += nul
+ return block
+@@ -1056,7 +1063,7 @@
+ env['INCLUDE'] = ';'.join(system_includes)
+
+ env_block = _FormatAsEnvironmentBlock(env)
+- f = open_out(os.path.join(toplevel_build_dir, 'environment.' + arch), 'wb')
++ f = open_out(os.path.join(toplevel_build_dir, 'environment.' + arch), 'w')
+ f.write(env_block)
+ f.close()
+
+@@ -1078,7 +1085,7 @@
+ if int(generator_flags.get('msvs_error_on_missing_sources', 0)):
+ no_specials = filter(lambda x: '$' not in x, sources)
+ relative = [os.path.join(build_dir, gyp_to_ninja(s)) for s in no_specials]
+- missing = filter(lambda x: not os.path.exists(x), relative)
++ missing = [x for x in relative if not os.path.exists(x)]
+ if missing:
+ # They'll look like out\Release\..\..\stuff\things.cc, so normalize the
+ # path for a slightly less crazy looking output.
+diff --git a/tools/gyp/pylib/gyp/ordered_dict.py b/pylib/gyp/ordered_dict.py
+deleted file mode 100644
+index a1e89f9..0000000
+--- a/tools/gyp/pylib/gyp/ordered_dict.py
++++ /dev/null
+@@ -1,289 +0,0 @@
+-# Unmodified from http://code.activestate.com/recipes/576693/
+-# other than to add MIT license header (as specified on page, but not in code).
+-# Linked from Python documentation here:
+-# http://docs.python.org/2/library/collections.html#collections.OrderedDict
+-#
+-# This should be deleted once Py2.7 is available on all bots, see
+-# http://crbug.com/241769.
+-#
+-# Copyright (c) 2009 Raymond Hettinger.
+-#
+-# Permission is hereby granted, free of charge, to any person obtaining a copy
+-# of this software and associated documentation files (the "Software"), to deal
+-# in the Software without restriction, including without limitation the rights
+-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-# copies of the Software, and to permit persons to whom the Software is
+-# furnished to do so, subject to the following conditions:
+-#
+-# The above copyright notice and this permission notice shall be included in
+-# all copies or substantial portions of the Software.
+-#
+-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+-# THE SOFTWARE.
+-
+-# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy.
+-# Passes Python2.7's test suite and incorporates all the latest updates.
+-
+-try:
+- from thread import get_ident as _get_ident
+-except ImportError:
+- from dummy_thread import get_ident as _get_ident
+-
+-try:
+- from _abcoll import KeysView, ValuesView, ItemsView
+-except ImportError:
+- pass
+-
+-
+-class OrderedDict(dict):
+- 'Dictionary that remembers insertion order'
+- # An inherited dict maps keys to values.
+- # The inherited dict provides __getitem__, __len__, __contains__, and get.
+- # The remaining methods are order-aware.
+- # Big-O running times for all methods are the same as for regular dictionaries.
+-
+- # The internal self.__map dictionary maps keys to links in a doubly linked list.
+- # The circular doubly linked list starts and ends with a sentinel element.
+- # The sentinel element never gets deleted (this simplifies the algorithm).
+- # Each link is stored as a list of length three: [PREV, NEXT, KEY].
+-
+- def __init__(self, *args, **kwds):
+- '''Initialize an ordered dictionary. Signature is the same as for
+- regular dictionaries, but keyword arguments are not recommended
+- because their insertion order is arbitrary.
+-
+- '''
+- if len(args) > 1:
+- raise TypeError('expected at most 1 arguments, got %d' % len(args))
+- try:
+- self.__root
+- except AttributeError:
+- self.__root = root = [] # sentinel node
+- root[:] = [root, root, None]
+- self.__map = {}
+- self.__update(*args, **kwds)
+-
+- def __setitem__(self, key, value, dict_setitem=dict.__setitem__):
+- 'od.__setitem__(i, y) <==> od[i]=y'
+- # Setting a new item creates a new link which goes at the end of the linked
+- # list, and the inherited dictionary is updated with the new key/value pair.
+- if key not in self:
+- root = self.__root
+- last = root[0]
+- last[1] = root[0] = self.__map[key] = [last, root, key]
+- dict_setitem(self, key, value)
+-
+- def __delitem__(self, key, dict_delitem=dict.__delitem__):
+- 'od.__delitem__(y) <==> del od[y]'
+- # Deleting an existing item uses self.__map to find the link which is
+- # then removed by updating the links in the predecessor and successor nodes.
+- dict_delitem(self, key)
+- link_prev, link_next, key = self.__map.pop(key)
+- link_prev[1] = link_next
+- link_next[0] = link_prev
+-
+- def __iter__(self):
+- 'od.__iter__() <==> iter(od)'
+- root = self.__root
+- curr = root[1]
+- while curr is not root:
+- yield curr[2]
+- curr = curr[1]
+-
+- def __reversed__(self):
+- 'od.__reversed__() <==> reversed(od)'
+- root = self.__root
+- curr = root[0]
+- while curr is not root:
+- yield curr[2]
+- curr = curr[0]
+-
+- def clear(self):
+- 'od.clear() -> None. Remove all items from od.'
+- try:
+- for node in self.__map.itervalues():
+- del node[:]
+- root = self.__root
+- root[:] = [root, root, None]
+- self.__map.clear()
+- except AttributeError:
+- pass
+- dict.clear(self)
+-
+- def popitem(self, last=True):
+- '''od.popitem() -> (k, v), return and remove a (key, value) pair.
+- Pairs are returned in LIFO order if last is true or FIFO order if false.
+-
+- '''
+- if not self:
+- raise KeyError('dictionary is empty')
+- root = self.__root
+- if last:
+- link = root[0]
+- link_prev = link[0]
+- link_prev[1] = root
+- root[0] = link_prev
+- else:
+- link = root[1]
+- link_next = link[1]
+- root[1] = link_next
+- link_next[0] = root
+- key = link[2]
+- del self.__map[key]
+- value = dict.pop(self, key)
+- return key, value
+-
+- # -- the following methods do not depend on the internal structure --
+-
+- def keys(self):
+- 'od.keys() -> list of keys in od'
+- return list(self)
+-
+- def values(self):
+- 'od.values() -> list of values in od'
+- return [self[key] for key in self]
+-
+- def items(self):
+- 'od.items() -> list of (key, value) pairs in od'
+- return [(key, self[key]) for key in self]
+-
+- def iterkeys(self):
+- 'od.iterkeys() -> an iterator over the keys in od'
+- return iter(self)
+-
+- def itervalues(self):
+- 'od.itervalues -> an iterator over the values in od'
+- for k in self:
+- yield self[k]
+-
+- def iteritems(self):
+- 'od.iteritems -> an iterator over the (key, value) items in od'
+- for k in self:
+- yield (k, self[k])
+-
+- # Suppress 'OrderedDict.update: Method has no argument':
+- # pylint: disable=E0211
+- def update(*args, **kwds):
+- '''od.update(E, **F) -> None. Update od from dict/iterable E and F.
+-
+- If E is a dict instance, does: for k in E: od[k] = E[k]
+- If E has a .keys() method, does: for k in E.keys(): od[k] = E[k]
+- Or if E is an iterable of items, does: for k, v in E: od[k] = v
+- In either case, this is followed by: for k, v in F.items(): od[k] = v
+-
+- '''
+- if len(args) > 2:
+- raise TypeError('update() takes at most 2 positional '
+- 'arguments (%d given)' % (len(args),))
+- elif not args:
+- raise TypeError('update() takes at least 1 argument (0 given)')
+- self = args[0]
+- # Make progressively weaker assumptions about "other"
+- other = ()
+- if len(args) == 2:
+- other = args[1]
+- if isinstance(other, dict):
+- for key in other:
+- self[key] = other[key]
+- elif hasattr(other, 'keys'):
+- for key in other.keys():
+- self[key] = other[key]
+- else:
+- for key, value in other:
+- self[key] = value
+- for key, value in kwds.items():
+- self[key] = value
+-
+- __update = update # let subclasses override update without breaking __init__
+-
+- __marker = object()
+-
+- def pop(self, key, default=__marker):
+- '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value.
+- If key is not found, d is returned if given, otherwise KeyError is raised.
+-
+- '''
+- if key in self:
+- result = self[key]
+- del self[key]
+- return result
+- if default is self.__marker:
+- raise KeyError(key)
+- return default
+-
+- def setdefault(self, key, default=None):
+- 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od'
+- if key in self:
+- return self[key]
+- self[key] = default
+- return default
+-
+- def __repr__(self, _repr_running={}):
+- 'od.__repr__() <==> repr(od)'
+- call_key = id(self), _get_ident()
+- if call_key in _repr_running:
+- return '...'
+- _repr_running[call_key] = 1
+- try:
+- if not self:
+- return '%s()' % (self.__class__.__name__,)
+- return '%s(%r)' % (self.__class__.__name__, self.items())
+- finally:
+- del _repr_running[call_key]
+-
+- def __reduce__(self):
+- 'Return state information for pickling'
+- items = [[k, self[k]] for k in self]
+- inst_dict = vars(self).copy()
+- for k in vars(OrderedDict()):
+- inst_dict.pop(k, None)
+- if inst_dict:
+- return (self.__class__, (items,), inst_dict)
+- return self.__class__, (items,)
+-
+- def copy(self):
+- 'od.copy() -> a shallow copy of od'
+- return self.__class__(self)
+-
+- @classmethod
+- def fromkeys(cls, iterable, value=None):
+- '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S
+- and values equal to v (which defaults to None).
+-
+- '''
+- d = cls()
+- for key in iterable:
+- d[key] = value
+- return d
+-
+- def __eq__(self, other):
+- '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive
+- while comparison to a regular mapping is order-insensitive.
+-
+- '''
+- if isinstance(other, OrderedDict):
+- return len(self)==len(other) and self.items() == other.items()
+- return dict.__eq__(self, other)
+-
+- def __ne__(self, other):
+- return not self == other
+-
+- # -- the following methods are only used in Python 2.7 --
+-
+- def viewkeys(self):
+- "od.viewkeys() -> a set-like object providing a view on od's keys"
+- return KeysView(self)
+-
+- def viewvalues(self):
+- "od.viewvalues() -> an object providing a view on od's values"
+- return ValuesView(self)
+-
+- def viewitems(self):
+- "od.viewitems() -> a set-like object providing a view on od's items"
+- return ItemsView(self)
+-
+diff --git a/tools/gyp/pylib/gyp/simple_copy.py b/pylib/gyp/simple_copy.py
+index eaf5f8b..58a61c3 100644
+--- a/tools/gyp/pylib/gyp/simple_copy.py
++++ b/tools/gyp/pylib/gyp/simple_copy.py
+@@ -49,7 +49,7 @@
+
+ def _deepcopy_dict(x):
+ y = {}
+- for key, value in x.iteritems():
++ for key, value in x.items():
+ y[deepcopy(key)] = deepcopy(value)
+ return y
+ d[dict] = _deepcopy_dict
+diff --git a/tools/gyp/pylib/gyp/win_tool.py b/pylib/gyp/win_tool.py
+index 1c843a0..8973484 100755
+--- a/tools/gyp/pylib/gyp/win_tool.py
++++ b/tools/gyp/pylib/gyp/win_tool.py
+@@ -9,6 +9,8 @@
+ These functions are executed via gyp-win-tool when using the ninja generator.
+ """
+
++from __future__ import print_function
++
+ import os
+ import re
+ import shutil
+@@ -134,7 +136,7 @@
+ if (not line.startswith(' Creating library ') and
+ not line.startswith('Generating code') and
+ not line.startswith('Finished generating code')):
+- print line
++ print(line)
+ return link.returncode
+
+ def ExecLinkWithManifests(self, arch, embed_manifest, out, ldcmd, resname,
+@@ -193,16 +195,18 @@
+ our_manifest = '%(out)s.manifest' % variables
+ # Load and normalize the manifests. mt.exe sometimes removes whitespace,
+ # and sometimes doesn't unfortunately.
+- with open(our_manifest, 'rb') as our_f:
+- with open(assert_manifest, 'rb') as assert_f:
++ with open(our_manifest, 'r') as our_f:
++ with open(assert_manifest, 'r') as assert_f:
+ our_data = our_f.read().translate(None, string.whitespace)
+ assert_data = assert_f.read().translate(None, string.whitespace)
+ if our_data != assert_data:
+ os.unlink(out)
+ def dump(filename):
+- sys.stderr.write('%s\n-----\n' % filename)
+- with open(filename, 'rb') as f:
+- sys.stderr.write(f.read() + '\n-----\n')
++ print(filename, file=sys.stderr)
++ print('-----', file=sys.stderr)
++ with open(filename, 'r') as f:
++ print(f.read(), file=sys.stderr)
++ print('-----', file=sys.stderr)
+ dump(intermediate_manifest)
+ dump(our_manifest)
+ dump(assert_manifest)
+@@ -223,7 +227,7 @@
+ out, _ = popen.communicate()
+ for line in out.splitlines():
+ if line and 'manifest authoring warning 81010002' not in line:
+- print line
++ print(line)
+ return popen.returncode
+
+ def ExecManifestToRc(self, arch, *args):
+@@ -231,7 +235,7 @@
+ |args| is tuple containing path to resource file, path to manifest file
+ and resource name which can be "1" (for executables) or "2" (for DLLs)."""
+ manifest_path, resource_path, resource_name = args
+- with open(resource_path, 'wb') as output:
++ with open(resource_path, 'w') as output:
+ output.write('#include <windows.h>\n%s RT_MANIFEST "%s"' % (
+ resource_name,
+ os.path.abspath(manifest_path).replace('\\', '/')))
+@@ -263,7 +267,7 @@
+ for x in lines if x.startswith(prefixes))
+ for line in lines:
+ if not line.startswith(prefixes) and line not in processing:
+- print line
++ print(line)
+ return popen.returncode
+
+ def ExecAsmWrapper(self, arch, *args):
+@@ -277,7 +281,7 @@
+ not line.startswith('Microsoft (R) Macro Assembler') and
+ not line.startswith(' Assembling: ') and
+ line):
+- print line
++ print(line)
+ return popen.returncode
+
+ def ExecRcWrapper(self, arch, *args):
+@@ -291,7 +295,7 @@
+ if (not line.startswith('Microsoft (R) Windows (R) Resource Compiler') and
+ not line.startswith('Copyright (C) Microsoft Corporation') and
+ line):
+- print line
++ print(line)
+ return popen.returncode
+
+ def ExecActionWrapper(self, arch, rspfile, *dir):
+@@ -300,7 +304,7 @@
+ env = self._GetEnv(arch)
+ # TODO(scottmg): This is a temporary hack to get some specific variables
+ # through to actions that are set after gyp-time. http://crbug.com/333738.
+- for k, v in os.environ.iteritems():
++ for k, v in os.environ.items():
+ if k not in env:
+ env[k] = v
+ args = open(rspfile).read()
+diff --git a/tools/gyp/pylib/gyp/xcode_emulation.py b/pylib/gyp/xcode_emulation.py
+index dba8e76..4c875de 100644
+--- a/tools/gyp/pylib/gyp/xcode_emulation.py
++++ b/tools/gyp/pylib/gyp/xcode_emulation.py
+@@ -7,6 +7,8 @@
+ other build systems, such as make and ninja.
+ """
+
++from __future__ import print_function
++
+ import copy
+ import gyp.common
+ import os
+@@ -73,7 +75,7 @@
+ if arch not in expanded_archs:
+ expanded_archs.append(arch)
+ except KeyError as e:
+- print 'Warning: Ignoring unsupported variable "%s".' % variable
++ print('Warning: Ignoring unsupported variable "%s".' % variable)
+ elif arch not in expanded_archs:
+ expanded_archs.append(arch)
+ return expanded_archs
+@@ -171,7 +173,7 @@
+ # the same for all configs are implicitly per-target settings.
+ self.xcode_settings = {}
+ configs = spec['configurations']
+- for configname, config in configs.iteritems():
++ for configname, config in configs.items():
+ self.xcode_settings[configname] = config.get('xcode_settings', {})
+ self._ConvertConditionalKeys(configname)
+ if self.xcode_settings[configname].get('IPHONEOS_DEPLOYMENT_TARGET',
+@@ -197,8 +199,8 @@
+ new_key = key.split("[")[0]
+ settings[new_key] = settings[key]
+ else:
+- print 'Warning: Conditional keys not implemented, ignoring:', \
+- ' '.join(conditional_keys)
++ print('Warning: Conditional keys not implemented, ignoring:', \
++ ' '.join(conditional_keys))
+ del settings[key]
+
+ def _Settings(self):
+@@ -216,7 +218,7 @@
+
+ def _WarnUnimplemented(self, test_key):
+ if test_key in self._Settings():
+- print 'Warning: Ignoring not yet implemented key "%s".' % test_key
++ print('Warning: Ignoring not yet implemented key "%s".' % test_key)
+
+ def IsBinaryOutputFormat(self, configname):
+ default = "binary" if self.isIOS else "xml"
+@@ -963,7 +965,7 @@
+ result = dict(self.xcode_settings[configname])
+ first_pass = False
+ else:
+- for key, value in self.xcode_settings[configname].iteritems():
++ for key, value in self.xcode_settings[configname].items():
+ if key not in result:
+ continue
+ elif result[key] != value:
+@@ -1084,8 +1086,8 @@
+ unimpl = ['OTHER_CODE_SIGN_FLAGS']
+ unimpl = set(unimpl) & set(self.xcode_settings[configname].keys())
+ if unimpl:
+- print 'Warning: Some codesign keys not implemented, ignoring: %s' % (
+- ', '.join(sorted(unimpl)))
++ print('Warning: Some codesign keys not implemented, ignoring: %s' % (
++ ', '.join(sorted(unimpl))))
+
+ if self._IsXCTest():
+ # For device xctests, Xcode copies two extra frameworks into $TEST_HOST.
+@@ -1737,7 +1739,7 @@
+ order = gyp.common.TopologicallySorted(env.keys(), GetEdges)
+ order.reverse()
+ return order
+- except gyp.common.CycleError, e:
++ except gyp.common.CycleError as e:
+ raise GypError(
+ 'Xcode environment variables are cyclically dependent: ' + str(e.nodes))
+
+@@ -1774,10 +1776,11 @@
+ def _AddIOSDeviceConfigurations(targets):
+ """Clone all targets and append -iphoneos to the name. Configure these targets
+ to build for iOS devices and use correct architectures for those builds."""
+- for target_dict in targets.itervalues():
++ for target_dict in targets.values():
+ toolset = target_dict['toolset']
+ configs = target_dict['configurations']
+- for config_name, simulator_config_dict in dict(configs).iteritems():
++
++ for config_name, simulator_config_dict in dict(configs).items():
+ iphoneos_config_dict = copy.deepcopy(simulator_config_dict)
+ configs[config_name + '-iphoneos'] = iphoneos_config_dict
+ configs[config_name + '-iphonesimulator'] = simulator_config_dict
+diff --git a/tools/gyp/pylib/gyp/xcode_ninja.py b/pylib/gyp/xcode_ninja.py
+index bc76fff..1d71b8c 100644
+--- a/tools/gyp/pylib/gyp/xcode_ninja.py
++++ b/tools/gyp/pylib/gyp/xcode_ninja.py
+@@ -28,7 +28,7 @@
+ workspace_path = os.path.join(options.generator_output, workspace_path)
+ try:
+ os.makedirs(workspace_path)
+- except OSError, e:
++ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+ output_string = '<?xml version="1.0" encoding="UTF-8"?>\n' + \
+@@ -85,7 +85,7 @@
+ "%s/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" % ninja_toplevel
+
+ if 'configurations' in old_spec:
+- for config in old_spec['configurations'].iterkeys():
++ for config in old_spec['configurations'].keys():
+ old_xcode_settings = \
+ old_spec['configurations'][config].get('xcode_settings', {})
+ if 'IPHONEOS_DEPLOYMENT_TARGET' in old_xcode_settings:
+@@ -167,7 +167,7 @@
+ params: Dict of global options for gyp.
+ """
+ orig_gyp = params['build_files'][0]
+- for gyp_name, gyp_dict in data.iteritems():
++ for gyp_name, gyp_dict in data.items():
+ if gyp_name == orig_gyp:
+ depth = gyp_dict['_DEPTH']
+
+@@ -238,7 +238,7 @@
+ not generator_flags.get('xcode_ninja_list_excluded_files', True)
+
+ sources = []
+- for target, target_dict in target_dicts.iteritems():
++ for target, target_dict in target_dicts.items():
+ base = os.path.dirname(target)
+ files = target_dict.get('sources', []) + \
+ target_dict.get('mac_bundle_resources', [])
+diff --git a/tools/gyp/pylib/gyp/xcodeproj_file.py b/pylib/gyp/xcodeproj_file.py
+index e69235f..bd238f6 100644
+--- a/tools/gyp/pylib/gyp/xcodeproj_file.py
++++ b/tools/gyp/pylib/gyp/xcodeproj_file.py
+@@ -154,6 +154,11 @@
+ import sha
+ _new_sha1 = sha.new
+
++try:
++ # basestring was removed in python3.
++ basestring
++except NameError:
++ basestring = str
+
+ # See XCObject._EncodeString. This pattern is used to determine when a string
+ # can be printed unquoted. Strings that match this pattern may be printed
+@@ -314,7 +319,7 @@
+ """
+
+ that = self.__class__(id=self.id, parent=self.parent)
+- for key, value in self._properties.iteritems():
++ for key, value in self._properties.items():
+ is_strong = self._schema[key][2]
+
+ if isinstance(value, XCObject):
+@@ -324,8 +329,7 @@
+ that._properties[key] = new_value
+ else:
+ that._properties[key] = value
+- elif isinstance(value, str) or isinstance(value, unicode) or \
+- isinstance(value, int):
++ elif isinstance(value, basestring) or isinstance(value, int):
+ that._properties[key] = value
+ elif isinstance(value, list):
+ if is_strong:
+@@ -449,10 +453,10 @@
+ # is 160 bits. Instead of throwing out 64 bits of the digest, xor them
+ # into the portion that gets used.
+ assert hash.digest_size % 4 == 0
+- digest_int_count = hash.digest_size / 4
++ digest_int_count = hash.digest_size // 4
+ digest_ints = struct.unpack('>' + 'I' * digest_int_count, hash.digest())
+ id_ints = [0, 0, 0]
+- for index in xrange(0, digest_int_count):
++ for index in range(0, digest_int_count):
+ id_ints[index % 3] ^= digest_ints[index]
+ self.id = '%08X%08X%08X' % tuple(id_ints)
+
+@@ -475,7 +479,7 @@
+ """Returns a list of all of this object's owned (strong) children."""
+
+ children = []
+- for property, attributes in self._schema.iteritems():
++ for property, attributes in self._schema.items():
+ (is_list, property_type, is_strong) = attributes[0:3]
+ if is_strong and property in self._properties:
+ if not is_list:
+@@ -603,7 +607,12 @@
+ comment = value.Comment()
+ elif isinstance(value, str):
+ printable += self._EncodeString(value)
+- elif isinstance(value, unicode):
++ # A python3 compatible way of saying isinstance(value, unicode).
++ # basestring is str in python3 so this is equivalent to the above
++ # isinstance. Thus if it failed above it will fail here.
++ # In python2 we test against str and unicode at this point. str has already
++ # failed in the above isinstance so we test against unicode.
++ elif isinstance(value, basestring):
+ printable += self._EncodeString(value.encode('utf-8'))
+ elif isinstance(value, int):
+ printable += str(value)
+@@ -622,7 +631,7 @@
+ printable += end_tabs + ')'
+ elif isinstance(value, dict):
+ printable = '{' + sep
+- for item_key, item_value in sorted(value.iteritems()):
++ for item_key, item_value in sorted(value.items()):
+ printable += element_tabs + \
+ self._XCPrintableValue(tabs + 1, item_key, flatten_list) + ' = ' + \
+ self._XCPrintableValue(tabs + 1, item_value, flatten_list) + ';' + \
+@@ -691,7 +700,7 @@
+ printable_value[0] == '"' and printable_value[-1] == '"':
+ printable_value = printable_value[1:-1]
+ printable += printable_key + ' = ' + printable_value + ';' + after_kv
+- except TypeError, e:
++ except TypeError as e:
+ gyp.common.ExceptionAppend(e,
+ 'while printing key "%s"' % key)
+ raise
+@@ -730,7 +739,7 @@
+ self._XCKVPrint(file, 3, 'isa', self.__class__.__name__)
+
+ # The remaining elements of an object dictionary are sorted alphabetically.
+- for property, value in sorted(self._properties.iteritems()):
++ for property, value in sorted(self._properties.items()):
+ self._XCKVPrint(file, 3, property, value)
+
+ # End the object.
+@@ -752,7 +761,7 @@
+ if properties is None:
+ return
+
+- for property, value in properties.iteritems():
++ for property, value in properties.items():
+ # Make sure the property is in the schema.
+ if not property in self._schema:
+ raise KeyError(property + ' not in ' + self.__class__.__name__)
+@@ -766,7 +775,7 @@
+ ' must be list, not ' + value.__class__.__name__)
+ for item in value:
+ if not isinstance(item, property_type) and \
+- not (item.__class__ == unicode and property_type == str):
++ not (isinstance(item, basestring) and property_type == str):
+ # Accept unicode where str is specified. str is treated as
+ # UTF-8-encoded.
+ raise TypeError(
+@@ -774,7 +783,7 @@
+ ' must be ' + property_type.__name__ + ', not ' + \
+ item.__class__.__name__)
+ elif not isinstance(value, property_type) and \
+- not (value.__class__ == unicode and property_type == str):
++ not (isinstance(value, basestring) and property_type == str):
+ # Accept unicode where str is specified. str is treated as
+ # UTF-8-encoded.
+ raise TypeError(
+@@ -788,8 +797,7 @@
+ self._properties[property] = value.Copy()
+ else:
+ self._properties[property] = value
+- elif isinstance(value, str) or isinstance(value, unicode) or \
+- isinstance(value, int):
++ elif isinstance(value, basestring) or isinstance(value, int):
+ self._properties[property] = value
+ elif isinstance(value, list):
+ if is_strong:
+@@ -865,7 +873,7 @@
+
+ # TODO(mark): A stronger verification mechanism is needed. Some
+ # subclasses need to perform validation beyond what the schema can enforce.
+- for property, attributes in self._schema.iteritems():
++ for property, attributes in self._schema.items():
+ (is_list, property_type, is_strong, is_required) = attributes[0:4]
+ if is_required and not property in self._properties:
+ raise KeyError(self.__class__.__name__ + ' requires ' + property)
+@@ -875,7 +883,7 @@
+ overwrite properties that have already been set."""
+
+ defaults = {}
+- for property, attributes in self._schema.iteritems():
++ for property, attributes in self._schema.items():
+ (is_list, property_type, is_strong, is_required) = attributes[0:4]
+ if is_required and len(attributes) >= 5 and \
+ not property in self._properties:
+@@ -1426,8 +1434,8 @@
+ xche = self
+ while xche != None and isinstance(xche, XCHierarchicalElement):
+ xche_hashables = xche.Hashables()
+- for index in xrange(0, len(xche_hashables)):
+- hashables.insert(index, xche_hashables[index])
++ for index, xche_hashable in enumerate(xche_hashables):
++ hashables.insert(index, xche_hashable)
+ xche = xche.parent
+ return hashables
+
+@@ -2468,8 +2476,7 @@
+ # The headers phase should come before the resources, sources, and
+ # frameworks phases, if any.
+ insert_at = len(self._properties['buildPhases'])
+- for index in xrange(0, len(self._properties['buildPhases'])):
+- phase = self._properties['buildPhases'][index]
++ for index, phase in enumerate(self._properties['buildPhases']):
+ if isinstance(phase, PBXResourcesBuildPhase) or \
+ isinstance(phase, PBXSourcesBuildPhase) or \
+ isinstance(phase, PBXFrameworksBuildPhase):
+@@ -2489,8 +2496,7 @@
+ # The resources phase should come before the sources and frameworks
+ # phases, if any.
+ insert_at = len(self._properties['buildPhases'])
+- for index in xrange(0, len(self._properties['buildPhases'])):
+- phase = self._properties['buildPhases'][index]
++ for index, phase in enumerate(self._properties['buildPhases']):
+ if isinstance(phase, PBXSourcesBuildPhase) or \
+ isinstance(phase, PBXFrameworksBuildPhase):
+ insert_at = index
+@@ -2911,7 +2917,7 @@
+ # determine the sort order.
+ return cmp(x_index, y_index)
+
+- for other_pbxproject, ref_dict in self._other_pbxprojects.iteritems():
++ for other_pbxproject, ref_dict in self._other_pbxprojects.items():
+ # Build up a list of products in the remote project file, ordered the
+ # same as the targets that produce them.
+ remote_products = []
+diff --git a/tools/gyp/pylib/gyp/xml_fix.py b/pylib/gyp/xml_fix.py
+index 5de8481..4308d99 100644
+--- a/tools/gyp/pylib/gyp/xml_fix.py
++++ b/tools/gyp/pylib/gyp/xml_fix.py
+@@ -32,8 +32,7 @@
+ writer.write(indent+"<" + self.tagName)
+
+ attrs = self._get_attributes()
+- a_names = attrs.keys()
+- a_names.sort()
++ a_names = sorted(attrs.keys())
+
+ for a_name in a_names:
+ writer.write(" %s=\"" % a_name)
+diff --git a/tools/gyp/tools/graphviz.py b/tools/graphviz.py
+index 326ae22..538b059 100755
+--- a/tools/gyp/tools/graphviz.py
++++ b/tools/gyp/tools/graphviz.py
+@@ -8,6 +8,8 @@
+ generate input suitable for graphviz to render a dependency graph of
+ targets."""
+
++from __future__ import print_function
++
+ import collections
+ import json
+ import sys
+@@ -50,9 +52,9 @@
+ build_file, target_name, toolset = ParseTarget(src)
+ files[build_file].append(src)
+
+- print 'digraph D {'
+- print ' fontsize=8' # Used by subgraphs.
+- print ' node [fontsize=8]'
++ print('digraph D {')
++ print(' fontsize=8') # Used by subgraphs.
++ print(' node [fontsize=8]')
+
+ # Output nodes by file. We must first write out each node within
+ # its file grouping before writing out any edges that may refer
+@@ -63,31 +65,31 @@
+ # the display by making it a box without an internal node.
+ target = targets[0]
+ build_file, target_name, toolset = ParseTarget(target)
+- print ' "%s" [shape=box, label="%s\\n%s"]' % (target, filename,
+- target_name)
++ print(' "%s" [shape=box, label="%s\\n%s"]' % (target, filename,
++ target_name))
+ else:
+ # Group multiple nodes together in a subgraph.
+- print ' subgraph "cluster_%s" {' % filename
+- print ' label = "%s"' % filename
++ print(' subgraph "cluster_%s" {' % filename)
++ print(' label = "%s"' % filename)
+ for target in targets:
+ build_file, target_name, toolset = ParseTarget(target)
+- print ' "%s" [label="%s"]' % (target, target_name)
+- print ' }'
++ print(' "%s" [label="%s"]' % (target, target_name))
++ print(' }')
+
+ # Now that we've placed all the nodes within subgraphs, output all
+ # the edges between nodes.
+ for src, dsts in edges.items():
+ for dst in dsts:
+- print ' "%s" -> "%s"' % (src, dst)
++ print(' "%s" -> "%s"' % (src, dst))
+
+- print '}'
++ print('}')
+
+
+ def main():
+ if len(sys.argv) < 2:
+- print >>sys.stderr, __doc__
+- print >>sys.stderr
+- print >>sys.stderr, 'usage: %s target1 target2...' % (sys.argv[0])
++ print(__doc__, file=sys.stderr)
++ print(file=sys.stderr)
++ print('usage: %s target1 target2...' % (sys.argv[0]), file=sys.stderr)
+ return 1
+
+ edges = LoadEdges('dump.json', sys.argv[1:])
+diff --git a/tools/gyp/tools/pretty_gyp.py b/tools/pretty_gyp.py
+index d5736bb..5060d1d 100755
+--- a/tools/gyp/tools/pretty_gyp.py
++++ b/tools/gyp/tools/pretty_gyp.py
+@@ -6,6 +6,8 @@
+
+ """Pretty-prints the contents of a GYP file."""
+
++from __future__ import print_function
++
+ import sys
+ import re
+
+@@ -125,15 +127,15 @@
+ (brace_diff, after) = count_braces(line)
+ if brace_diff != 0:
+ if after:
+- print " " * (basic_offset * indent) + line
++ print(" " * (basic_offset * indent) + line)
+ indent += brace_diff
+ else:
+ indent += brace_diff
+- print " " * (basic_offset * indent) + line
++ print(" " * (basic_offset * indent) + line)
+ else:
+- print " " * (basic_offset * indent) + line
++ print(" " * (basic_offset * indent) + line)
+ else:
+- print ""
++ print("")
+ last_line = line
+
+
+diff --git a/tools/gyp/tools/pretty_sln.py b/tools/pretty_sln.py
+index ca8cf4a..12a6dad 100755
+--- a/tools/gyp/tools/pretty_sln.py
++++ b/tools/gyp/tools/pretty_sln.py
+@@ -12,6 +12,8 @@
+ Then it outputs a possible build order.
+ """
+
++from __future__ import print_function
++
+ __author__ = 'nsylvain (Nicolas Sylvain)'
+
+ import os
+@@ -26,7 +28,7 @@
+ for dep in deps[project]:
+ if dep not in built:
+ BuildProject(dep, built, projects, deps)
+- print project
++ print(project)
+ built.append(project)
+
+ def ParseSolution(solution_file):
+@@ -100,44 +102,44 @@
+ return (projects, dependencies)
+
+ def PrintDependencies(projects, deps):
+- print "---------------------------------------"
+- print "Dependencies for all projects"
+- print "---------------------------------------"
+- print "-- --"
++ print("---------------------------------------")
++ print("Dependencies for all projects")
++ print("---------------------------------------")
++ print("-- --")
+
+ for (project, dep_list) in sorted(deps.items()):
+- print "Project : %s" % project
+- print "Path : %s" % projects[project][0]
++ print("Project : %s" % project)
++ print("Path : %s" % projects[project][0])
+ if dep_list:
+ for dep in dep_list:
+- print " - %s" % dep
+- print ""
++ print(" - %s" % dep)
++ print("")
+
+- print "-- --"
++ print("-- --")
+
+ def PrintBuildOrder(projects, deps):
+- print "---------------------------------------"
+- print "Build order "
+- print "---------------------------------------"
+- print "-- --"
++ print("---------------------------------------")
++ print("Build order ")
++ print("---------------------------------------")
++ print("-- --")
+
+ built = []
+ for (project, _) in sorted(deps.items()):
+ if project not in built:
+ BuildProject(project, built, projects, deps)
+
+- print "-- --"
++ print("-- --")
+
+ def PrintVCProj(projects):
+
+ for project in projects:
+- print "-------------------------------------"
+- print "-------------------------------------"
+- print project
+- print project
+- print project
+- print "-------------------------------------"
+- print "-------------------------------------"
++ print("-------------------------------------")
++ print("-------------------------------------")
++ print(project)
++ print(project)
++ print(project)
++ print("-------------------------------------")
++ print("-------------------------------------")
+
+ project_path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[1]),
+ projects[project][2]))
+@@ -153,7 +155,7 @@
+ def main():
+ # check if we have exactly 1 parameter.
+ if len(sys.argv) < 2:
+- print 'Usage: %s "c:\\path\\to\\project.sln"' % sys.argv[0]
++ print('Usage: %s "c:\\path\\to\\project.sln"' % sys.argv[0])
+ return 1
+
+ (projects, deps) = ParseSolution(sys.argv[1])
+diff --git a/tools/gyp/tools/pretty_vcproj.py b/tools/pretty_vcproj.py
+index 6099bd7..f02e59e 100755
+--- a/tools/gyp/tools/pretty_vcproj.py
++++ b/tools/gyp/tools/pretty_vcproj.py
+@@ -12,6 +12,8 @@
+ It outputs the resulting xml to stdout.
+ """
+
++from __future__ import print_function
++
+ __author__ = 'nsylvain (Nicolas Sylvain)'
+
+ import os
+@@ -73,23 +75,23 @@
+
+ # Print the main tag
+ if attr_count == 0:
+- print '%s<%s>' % (' '*indent, node.nodeName)
++ print('%s<%s>' % (' '*indent, node.nodeName))
+ else:
+- print '%s<%s' % (' '*indent, node.nodeName)
++ print('%s<%s' % (' '*indent, node.nodeName))
+
+ all_attributes = []
+ for (name, value) in node.attributes.items():
+ all_attributes.append((name, value))
+- all_attributes.sort(CmpTuple())
++ all_attributes.sort(key=(lambda attr: attr[0]))
+ for (name, value) in all_attributes:
+- print '%s %s="%s"' % (' '*indent, name, value)
+- print '%s>' % (' '*indent)
++ print('%s %s="%s"' % (' '*indent, name, value))
++ print('%s>' % (' '*indent))
+ if node.nodeValue:
+- print '%s %s' % (' '*indent, node.nodeValue)
++ print('%s %s' % (' '*indent, node.nodeValue))
+
+ for sub_node in node.childNodes:
+ PrettyPrintNode(sub_node, indent=indent+2)
+- print '%s</%s>' % (' '*indent, node.nodeName)
++ print('%s</%s>' % (' '*indent, node.nodeName))
+
+
+ def FlattenFilter(node):
+@@ -283,8 +285,8 @@
+
+ # check if we have exactly 1 parameter.
+ if len(argv) < 2:
+- print ('Usage: %s "c:\\path\\to\\vcproj.vcproj" [key1=value1] '
+- '[key2=value2]' % argv[0])
++ print('Usage: %s "c:\\path\\to\\vcproj.vcproj" [key1=value1] '
++ '[key2=value2]' % argv[0])
+ return 1
+
+ # Parse the keys
+diff --git a/tools/gyp/gyptest.py b/gyptest.py
+index 9930e78..1a9ffca 100755
+--- a/tools/gyp/gyptest.py
++++ b/tools/gyp/gyptest.py
+@@ -58,7 +58,7 @@
+ os.chdir(args.chdir)
+
+ if args.path:
+- extra_path = [os.path.abspath(p) for p in opts.path]
++ extra_path = [os.path.abspath(p) for p in args.path]
+ extra_path = os.pathsep.join(extra_path)
+ os.environ['PATH'] = extra_path + os.pathsep + os.environ['PATH']
+
+diff --git a/tools/gyp/pylib/gyp/MSVSNew.py b/pylib/gyp/MSVSNew.py
+index 593f0e5..0445931 100644
+--- a/tools/gyp/pylib/gyp/MSVSNew.py
++++ b/tools/gyp/pylib/gyp/MSVSNew.py
+@@ -21,6 +21,13 @@
+ _new_md5 = md5.new
+
+
++try:
++ # cmp was removed in python3.
++ cmp
++except NameError:
++ def cmp(a, b):
++ return (a > b) - (a < b)
++
+ # Initialize random number generator
+ random.seed()
+
+diff --git a/tools/gyp/pylib/gyp/common.py b/pylib/gyp/common.py
+index 1823de8..b268d22 100644
+--- a/tools/gyp/pylib/gyp/common.py
++++ b/tools/gyp/pylib/gyp/common.py
+@@ -584,7 +584,7 @@
+ graph = {'a': '$(b) $(c)', 'b': 'hi', 'c': '$(b)'}
+ def GetEdges(node):
+ return re.findall(r'\$\(([^))]\)', graph[node])
+- print TopologicallySorted(graph.keys(), GetEdges)
++ print(TopologicallySorted(graph.keys(), GetEdges))
+ ==>
+ ['a', 'c', b']
+ """
+diff --git a/tools/gyp/pylib/gyp/generator/make.py b/pylib/gyp/generator/make.py
+index 2057e3a..8c2827e 100644
+--- a/tools/gyp/pylib/gyp/generator/make.py
++++ b/tools/gyp/pylib/gyp/generator/make.py
+@@ -1636,7 +1636,7 @@
+ self.WriteDoCmd([self.output_binary], deps, 'touch', part_of_all,
+ postbuilds=postbuilds)
+ else:
+- print("WARNING: no output for", self.type, target)
++ print("WARNING: no output for", self.type, self.target)
+
+ # Add an alias for each target (if there are any outputs).
+ # Installable target aliases are created below.
+diff --git a/tools/gyp/pylib/gyp/generator/msvs.py b/pylib/gyp/generator/msvs.py
+index e8a2b36..9eac028 100644
+--- a/tools/gyp/pylib/gyp/generator/msvs.py
++++ b/tools/gyp/pylib/gyp/generator/msvs.py
+@@ -308,10 +308,8 @@
+ if names:
+ return names[0]
+ else:
+- print >> sys.stdout, (
+- 'Warning: No include files found for '
+- 'detected Windows SDK version %s' % (version)
+- )
++ print('Warning: No include files found for '
++ 'detected Windows SDK version %s' % (version))
+
+
+ def _BuildCommandLineForRuleRaw(spec, cmd, cygwin_shell, has_input_path,
+@@ -2065,7 +2063,7 @@
+ if generator_flags.get('msvs_error_on_missing_sources', False):
+ raise GypError(error_message)
+ else:
+- print("Warning: " + error_message, file=sys.stdout)
++ print("Warning: " + error_message)
+
+
+ def _GenerateMSBuildFiltersFile(filters_path, source_files,
+diff --git a/tools/gyp/pylib/gyp/mac_tool.py b/pylib/gyp/mac_tool.py
+index 7d3a8c2..84f8863 100755
+--- a/tools/gyp/pylib/gyp/mac_tool.py
++++ b/tools/gyp/pylib/gyp/mac_tool.py
+@@ -670,7 +670,7 @@
+ count = len(filelist)
+ capacity = NextGreaterPowerOf2(count)
+ strings_offset = 24 + (12 * capacity)
+- max_value_length = len(max(filelist.items(), key=lambda (k,v):len(v))[1])
++ max_value_length = len(max(filelist.items(), key=lambda t: len(t[1]))[1])
+
+ out = open(output_name, "wb")
+ out.write(struct.pack('<LHHLLLL', magic, version, _reserved, strings_offset,
+diff --git a/tools/gyp/pylib/gyp/xcodeproj_file.py b/pylib/gyp/xcodeproj_file.py
+index bd238f6..bc9814d 100644
+--- a/tools/gyp/pylib/gyp/xcodeproj_file.py
++++ b/tools/gyp/pylib/gyp/xcodeproj_file.py
+@@ -160,6 +160,13 @@
+ except NameError:
+ basestring = str
+
++try:
++ # cmp was removed in python3.
++ cmp
++except NameError:
++ def cmp(a, b):
++ return (a > b) - (a < b)
++
+ # See XCObject._EncodeString. This pattern is used to determine when a string
+ # can be printed unquoted. Strings that match this pattern may be printed
+ # unquoted. Strings that do not match must be quoted and may be further
+diff --git a/tools/gyp/samples/samples b/samples/samples
+index 804b618..ff26de3 100755
+--- a/tools/gyp/samples/samples
++++ b/tools/gyp/samples/samples
+@@ -4,6 +4,8 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
++from __future__ import print_function
++
+ import os.path
+ import shutil
+ import sys
+@@ -57,7 +59,7 @@
+
+ def Main(argv):
+ if len(argv) != 3 or argv[1] not in ['push', 'pull']:
+- print 'Usage: %s push/pull PATH_TO_CHROME' % argv[0]
++ print('Usage: %s push/pull PATH_TO_CHROME' % argv[0])
+ return 1
+
+ path_to_chrome = argv[2]
+@@ -66,10 +68,10 @@
+ chrome_file = os.path.join(path_to_chrome, g)
+ local_file = os.path.join(os.path.dirname(argv[0]), os.path.split(g)[1])
+ if argv[1] == 'push':
+- print 'Copying %s to %s' % (local_file, chrome_file)
++ print('Copying %s to %s' % (local_file, chrome_file))
+ shutil.copyfile(local_file, chrome_file)
+ elif argv[1] == 'pull':
+- print 'Copying %s to %s' % (chrome_file, local_file)
++ print('Copying %s to %s' % (chrome_file, local_file))
+ shutil.copyfile(chrome_file, local_file)
+ else:
+ assert False
+diff --git a/tools/gyp/tools/pretty_vcproj.py b/tools/pretty_vcproj.py
+index f02e59e..4454d9b 100755
+--- a/tools/gyp/tools/pretty_vcproj.py
++++ b/tools/gyp/tools/pretty_vcproj.py
+@@ -22,6 +22,13 @@
+ from xml.dom.minidom import parse
+ from xml.dom.minidom import Node
+
++try:
++ # cmp was removed in python3.
++ cmp
++except NameError:
++ def cmp(a, b):
++ return (a > b) - (a < b)
++
+ REPLACEMENTS = dict()
+ ARGUMENTS = None
+
+@@ -63,7 +70,7 @@
+ def PrettyPrintNode(node, indent=0):
+ if node.nodeType == Node.TEXT_NODE:
+ if node.data.strip():
+- print '%s%s' % (' '*indent, node.data.strip())
++ print('%s%s' % (' '*indent, node.data.strip()))
+ return
+
+ if node.childNodes:
+@@ -322,7 +329,6 @@
+
+ # Finally, we use the prett xml function to print the vcproj back to the
+ # user.
+- #print dom.toprettyxml(newl="\n")
+ PrettyPrintNode(dom.documentElement)
+ return 0
+
+--- node-v10.15.3/tools/gyp/pylib/gyp/input.py.old 2019-04-02 06:44:13.086310973 +0000
++++ node-v10.15.3/tools/gyp/pylib/gyp/input.py 2019-04-02 06:45:35.987250735 +0000
+@@ -900,6 +900,9 @@
+ (e, contents, build_file))
+
+ p_stdout, p_stderr = p.communicate('')
++ if getattr(p_stdout, 'decode'):
++ p_stdout = p_stdout.decode('utf-8')
++ p_stderr = p_stderr.decode('utf-8')
+
+ if p.wait() != 0 or p_stderr:
+ sys.stderr.write(p_stderr)
diff --git a/user/node/libatomic.patch b/user/node/libatomic.patch
new file mode 100644
index 000000000..fc2e4ffd2
--- /dev/null
+++ b/user/node/libatomic.patch
@@ -0,0 +1,14 @@
+--- node-v10.15.3/node.gyp.old 2019-03-05 15:16:32.000000000 +0000
++++ node-v10.15.3/node.gyp 2019-04-06 13:54:51.204939193 +0000
+@@ -479,6 +479,11 @@
+ 'msvs_disabled_warnings!': [4244],
+
+ 'conditions': [
++ [ 'host_arch=="mips" or host_arch=="mipsel" or host_arch=="ppc"', {
++ 'link_settings': {
++ 'libraries': [ '-latomic' ],
++ },
++ }],
+ [ 'node_code_cache_path!=""', {
+ 'sources': [ '<(node_code_cache_path)' ]
+ }, {
diff --git a/user/node/ppc32.patch b/user/node/ppc32.patch
new file mode 100644
index 000000000..80b97993c
--- /dev/null
+++ b/user/node/ppc32.patch
@@ -0,0 +1,18 @@
+--- node-v10.15.3/deps/v8/src/libsampler/sampler.cc.old 2019-03-05 15:16:28.000000000 +0000
++++ node-v10.15.3/deps/v8/src/libsampler/sampler.cc 2019-04-06 13:44:07.224653262 +0000
+@@ -502,9 +502,15 @@
+ reinterpret_cast<void*>(ucontext->uc_mcontext.regs->gpr[PT_R31]);
+ #else
+ // Some C libraries, notably Musl, define the regs member as a void pointer
++ #if !V8_TARGET_ARCH_32_BIT
+ state->pc = reinterpret_cast<void*>(ucontext->uc_mcontext.gp_regs[32]);
+ state->sp = reinterpret_cast<void*>(ucontext->uc_mcontext.gp_regs[1]);
+ state->fp = reinterpret_cast<void*>(ucontext->uc_mcontext.gp_regs[31]);
++ #else
++ state->pc = reinterpret_cast<void*>(ucontext->uc_mcontext.gregs[32]);
++ state->sp = reinterpret_cast<void*>(ucontext->uc_mcontext.gregs[1]);
++ state->fp = reinterpret_cast<void*>(ucontext->uc_mcontext.gregs[31]);
++ #endif
+ #endif
+ #elif V8_HOST_ARCH_S390
+ #if V8_TARGET_ARCH_32_BIT
diff --git a/user/node/ppc64.patch b/user/node/ppc64.patch
new file mode 100644
index 000000000..f76618562
--- /dev/null
+++ b/user/node/ppc64.patch
@@ -0,0 +1,40 @@
+--- a/deps/v8/src/ppc/assembler-ppc.h.old 2019-03-05 15:16:29.000000000 +0000
++++ b/deps/v8/src/ppc/assembler-ppc.h 2019-04-02 07:05:25.977213735 +0000
+@@ -48,7 +48,8 @@
+ #include "src/ppc/constants-ppc.h"
+
+ #if V8_HOST_ARCH_PPC && \
+- (V8_OS_AIX || (V8_TARGET_ARCH_PPC64 && V8_TARGET_BIG_ENDIAN))
++ (V8_OS_AIX || (V8_TARGET_ARCH_PPC64 && \
++ (V8_TARGET_BIG_ENDIAN && (!defined(_CALL_ELF) || _CALL_ELF == 1))))
+ #define ABI_USES_FUNCTION_DESCRIPTORS 1
+ #else
+ #define ABI_USES_FUNCTION_DESCRIPTORS 0
+@@ -60,13 +61,15 @@
+ #define ABI_PASSES_HANDLES_IN_REGS 0
+ #endif
+
+-#if !V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || V8_TARGET_LITTLE_ENDIAN
++#if !V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || \
++ (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2))
+ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1
+ #else
+ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0
+ #endif
+
+-#if !V8_HOST_ARCH_PPC || (V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN)
++#if !V8_HOST_ARCH_PPC || (V8_TARGET_ARCH_PPC64 && \
++ (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)))
+ #define ABI_CALL_VIA_IP 1
+ #else
+ #define ABI_CALL_VIA_IP 0
+@@ -220,7 +220,8 @@
+ // The following constants describe the stack frame linkage area as
+ // defined by the ABI. Note that kNumRequiredStackFrameSlots must
+ // satisfy alignment requirements (rounding up if required).
+-#if V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN
++#if V8_TARGET_ARCH_PPC64 && (V8_TARGET_LITTLE_ENDIAN || \
++ defined(_CALL_ELF) && _CALL_ELF == 2)
+ // [0] back chain
+ // [1] condition register save area
+ // [2] link register save area
diff --git a/user/node/python3.patch b/user/node/python3.patch
new file mode 100644
index 000000000..dca32c7e4
--- /dev/null
+++ b/user/node/python3.patch
@@ -0,0 +1,163 @@
+--- node-v10.15.3/tools/configure.d/nodedownload.py (original)
++++ node-v10.15.3/tools/configure.d/nodedownload.py (refactored)
+@@ -1,7 +1,10 @@
+ #!/usr/bin/env python
+ # Moved some utilities here from ../../configure
+
++try:
+-import urllib
++ import urllib
++except ImportError:
++ import urllib.request, urllib.parse, urllib.error
+ import hashlib
+ import sys
+ import zipfile
+@@ -18,10 +18,10 @@
+ spin = ".:|'"
+ return (spin[c % len(spin)])
+
+-class ConfigOpener(urllib.FancyURLopener):
++class ConfigOpener(urllib.request.FancyURLopener):
+ """fancy opener used by retrievefile. Set a UA"""
+ # append to existing version (UA)
+- version = '%s node.js/configure' % urllib.URLopener.version
++ version = '%s node.js/configure' % urllib.request.URLopener.version
+
+ def reporthook(count, size, total):
+ """internal hook used by retrievefile"""
+@@ -36,10 +36,10 @@
+ sys.stdout.write(' <%s>\nConnecting...\r' % url)
+ sys.stdout.flush()
+ ConfigOpener().retrieve(url, targetfile, reporthook=reporthook)
+- print '' # clear the line
++ print('') # clear the line
+ return targetfile
+ except:
+- print ' ** Error occurred while downloading\n <%s>' % url
++ print(' ** Error occurred while downloading\n <%s>' % url)
+ raise
+
+ def md5sum(targetfile):
+@@ -56,12 +56,12 @@
+ """Unpacks packedfile into parent_path. Assumes .zip. Returns parent_path"""
+ if zipfile.is_zipfile(packedfile):
+ with contextlib.closing(zipfile.ZipFile(packedfile, 'r')) as icuzip:
+- print ' Extracting zipfile: %s' % packedfile
++ print(' Extracting zipfile: %s' % packedfile)
+ icuzip.extractall(parent_path)
+ return parent_path
+ elif tarfile.is_tarfile(packedfile):
+ with contextlib.closing(tarfile.TarFile.open(packedfile, 'r')) as icuzip:
+- print ' Extracting tarfile: %s' % packedfile
++ print(' Extracting tarfile: %s' % packedfile)
+ icuzip.extractall(parent_path)
+ return parent_path
+ else:
+@@ -112,16 +112,16 @@
+ theRet[anOpt] = True
+ else:
+ # future proof: ignore unknown types
+- print 'Warning: ignoring unknown --download= type "%s"' % anOpt
++ print('Warning: ignoring unknown --download= type "%s"' % anOpt)
+ # all done
+ return theRet
+
+ def candownload(auto_downloads, package):
+- if not (package in auto_downloads.keys()):
++ if not (package in list(auto_downloads.keys())):
+ raise Exception('Internal error: "%s" is not in the --downloads list. Check nodedownload.py' % package)
+ if auto_downloads[package]:
+ return True
+ else:
+- print """Warning: Not downloading package "%s". You could pass "--download=all"
+- (Windows: "download-all") to try auto-downloading it.""" % package
++ print("""Warning: Not downloading package "%s". You could pass "--download=all"
++ (Windows: "download-all") to try auto-downloading it.""" % package)
+ return False
+--- node-v10.15.3/tools/configure.d/nodedownload.py.old 2019-04-02 00:56:07.533200475 +0000
++++ node-v10.15.3/tools/configure.d/nodedownload.py 2019-04-02 00:58:09.019947842 +0000
+@@ -6,12 +6,11 @@
+ import sys
+ import zipfile
+ import tarfile
+-import fpformat
+ import contextlib
+
+ def formatSize(amt):
+ """Format a size as a string in MB"""
+- return fpformat.fix(amt / 1024000., 1)
++ return "%{size}.1f" % (amt / 1024000.)
+
+ def spin(c):
+ """print out an ASCII 'spinner' based on the value of counter 'c'"""
+--- node-v10.15.3/configure.py.old 2019-03-05 15:16:24.000000000 +0000
++++ node-v10.15.3/configure.py 2019-04-02 01:09:04.948394534 +0000
+@@ -649,8 +649,8 @@
+ except OSError:
+ return (False, False, '', '')
+
+- proc.stdin.write('__clang__ __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ '
+- '__clang_major__ __clang_minor__ __clang_patchlevel__')
++ proc.stdin.write(b'__clang__ __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ '
++ b'__clang_major__ __clang_minor__ __clang_patchlevel__')
+
+ values = (proc.communicate()[0].split() + ['0'] * 7)[0:7]
+ is_clang = values[0] == '1'
+@@ -727,7 +727,7 @@
+ consider adjusting the CC environment variable if you installed
+ it in a non-standard prefix.''')
+
+- gas_ret = proc.communicate()[1]
++ gas_ret = proc.communicate()[1].decode('utf-8')
+ match = re.match(r"GNU assembler version ([2-9]\.[0-9]+)", gas_ret)
+
+ if match:
+@@ -794,7 +794,7 @@
+ consider adjusting the CC environment variable if you installed
+ it in a non-standard prefix.''')
+
+- p.stdin.write('\n')
++ p.stdin.write(b'\n')
+ out = p.communicate()[0]
+
+ out = str(out).split('\n')
+@@ -1351,7 +1351,7 @@
+ o['variables']['icu_small'] = b(True)
+ locs = set(options.with_icu_locales.split(','))
+ locs.add('root') # must have root
+- o['variables']['icu_locales'] = string.join(locs,',')
++ o['variables']['icu_locales'] = ','.join(locs)
+ # We will check a bit later if we can use the canned deps/icu-small
+ elif with_intl == 'full-icu':
+ # full ICU
+@@ -1655,7 +1655,7 @@
+ if options.prefix:
+ config['PREFIX'] = options.prefix
+
+-config = '\n'.join(map('='.join, config.iteritems())) + '\n'
++config = '\n'.join(map('='.join, config.items())) + '\n'
+
+ # On Windows there's no reason to search for a different python binary.
+ bin_override = None if sys.platform == 'win32' else make_bin_override()
+--- node-v10.15.3/configure.py.old 2019-04-02 01:12:29.786049396 +0000
++++ node-v10.15.3/configure.py 2019-04-02 01:21:08.499637208 +0000
+@@ -634,7 +634,7 @@
+ proc = subprocess.Popen(
+ shlex.split(pkg_config) + ['--silence-errors', flag, pkg],
+ stdout=subprocess.PIPE)
+- val = proc.communicate()[0].strip()
++ val = proc.communicate()[0].strip().decode('utf-8')
+ except OSError as e:
+ if e.errno != errno.ENOENT: raise e # Unexpected error.
+ return (None, None, None, None) # No pkg-config/pkgconf installed.
+--- node-v10.15.3/configure.py.old 2019-04-02 01:27:36.437454388 +0000
++++ node-v10.15.3/configure.py 2019-04-02 01:28:06.954136125 +0000
+@@ -795,7 +795,7 @@
+ it in a non-standard prefix.''')
+
+ p.stdin.write(b'\n')
+- out = p.communicate()[0]
++ out = p.communicate()[0].decode('utf-8')
+
+ out = str(out).split('\n')
+
diff --git a/user/node/stack-silliness.patch b/user/node/stack-silliness.patch
new file mode 100644
index 000000000..e8d775b73
--- /dev/null
+++ b/user/node/stack-silliness.patch
@@ -0,0 +1,14 @@
+--- node-v10.15.3/src/inspector_agent.cc.old 2019-03-05 15:16:32.000000000 +0000
++++ node-v10.15.3/src/inspector_agent.cc 2019-04-06 02:03:11.082016553 +0000
+@@ -104,9 +104,9 @@
+ // Don't shrink the thread's stack on FreeBSD. Said platform decided to
+ // follow the pthreads specification to the letter rather than in spirit:
+ // https://lists.freebsd.org/pipermail/freebsd-current/2014-March/048885.html
+-#ifndef __FreeBSD__
++#ifdef __GLIBC__
+ CHECK_EQ(0, pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN));
+-#endif // __FreeBSD__
++#endif // __GLIBC__
+ CHECK_EQ(0, pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED));
+ sigset_t sigmask;
+ // Mask all signals.
diff --git a/user/node/v8-python3.patch b/user/node/v8-python3.patch
new file mode 100644
index 000000000..64151be4f
--- /dev/null
+++ b/user/node/v8-python3.patch
@@ -0,0 +1,169 @@
+--- node-v10.15.3/deps/v8/tools/node/fetch_deps.py.old 2019-03-05 15:16:31.000000000 +0000
++++ node-v10.15.3/deps/v8/tools/node/fetch_deps.py 2019-04-02 01:01:00.421250178 +0000
+@@ -9,6 +9,9 @@
+ Usage: fetch_deps.py <v8-path>
+ """
+
++# for py2/py3 compatibility
++from __future__ import print_function
++
+ import os
+ import subprocess
+ import sys
+@@ -51,9 +55,9 @@
+ expected_git_dir = os.path.join(v8_path, ".git")
+ actual_git_dir = git("rev-parse --absolute-git-dir")
+ if expected_git_dir == actual_git_dir:
+- print "V8 is tracked stand-alone by git."
++ print("V8 is tracked stand-alone by git.")
+ return False
+- print "Initializing temporary git repository in v8."
++ print("Initializing temporary git repository in v8.")
+ git("init")
+ git("config user.name \"Ada Lovelace\"")
+ git("config user.email ada@lovela.ce")
+@@ -70,7 +74,7 @@
+
+ temporary_git = EnsureGit(v8_path)
+ try:
+- print "Fetching dependencies."
++ print("Fetching dependencies.")
+ env = os.environ.copy()
+ # gclient needs to have depot_tools in the PATH.
+ env["PATH"] = depot_tools + os.pathsep + env["PATH"]
+--- node-v10.15.3/deps/v8/tools/node/node_common.py.old 2019-03-05 15:16:31.000000000 +0000
++++ node-v10.15.3/deps/v8/tools/node/node_common.py 2019-04-02 01:00:45.522875398 +0000
+@@ -3,11 +3,15 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
++# for py2/py3 compatibility
++from __future__ import print_function
++
+ import os
+ import pipes
+ import shutil
+ import stat
+ import subprocess
++import sys
+
+ DEPOT_TOOLS_URL = \
+ "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
+@@ -22,23 +26,27 @@
+ except:
+ pass
+ if fetch_if_not_exist:
+- print "Checking out depot_tools."
++ print("Checking out depot_tools.")
+ # shell=True needed on Windows to resolve git.bat.
+ subprocess.check_call("git clone {} {}".format(
+ pipes.quote(DEPOT_TOOLS_URL),
+ pipes.quote(depot_tools)), shell=True)
++ # Using check_output to hide warning messages.
++ subprocess.check_output(
++ [sys.executable, gclient_path, "metrics", "--opt-out"],
++ cwd=depot_tools)
+ return depot_tools
+ return None
+ depot_tools = _Get(v8_path)
+ assert depot_tools is not None
+- print "Using depot tools in %s" % depot_tools
++ print("Using depot tools in %s" % depot_tools)
+ return depot_tools
+
+ def UninitGit(v8_path):
+- print "Uninitializing temporary git repository"
++ print("Uninitializing temporary git repository")
+ target = os.path.join(v8_path, ".git")
+ if os.path.isdir(target):
+- print ">> Cleaning up %s" % target
++ print(">> Cleaning up %s" % target)
+ def OnRmError(func, path, exec_info):
+ # This might happen on Windows
+ os.chmod(path, stat.S_IWRITE)
+--- node-v10.15.3/deps/v8/tools/node/update_node.py.old 2019-03-05 15:16:31.000000000 +0000
++++ node-v10.15.3/deps/v8/tools/node/update_node.py 2019-04-02 01:00:27.184875836 +0000
+@@ -23,6 +23,9 @@
+ --with-patch Also include currently staged files in the V8 checkout.
+ """
+
++# for py2/py3 compatibility
++from __future__ import print_function
++
+ import argparse
+ import os
+ import shutil
+@@ -61,9 +64,9 @@
+ # Node.js owns deps/v8/gypfiles in their downstream repository.
+ FILES_TO_KEEP = [ "gypfiles" ]
+
+ def RunGclient(path):
+ assert os.path.isdir(path)
+- print ">> Running gclient sync"
++ print(">> Running gclient sync")
+ subprocess.check_call(["gclient", "sync", "--nohooks"], cwd=path)
+
+ def CommitPatch(options):
+@@ -74,7 +77,7 @@
+ the fake git clone fetch it into node.js. We can leave the commit, as
+ bot_update will ensure a clean state on each run.
+ """
+- print ">> Committing patch"
++ print(">> Committing patch")
+ subprocess.check_call(
+ ["git", "-c", "user.name=fake", "-c", "user.email=fake@chromium.org",
+ "commit", "--allow-empty", "-m", "placeholder-commit"],
+@@ -84,8 +87,8 @@
+ def UpdateTarget(repository, options, files_to_keep):
+ source = os.path.join(options.v8_path, *repository)
+ target = os.path.join(options.node_path, TARGET_SUBDIR, *repository)
+- print ">> Updating target directory %s" % target
+- print ">> from active branch at %s" % source
++ print(">> Updating target directory %s" % target)
++ print(">> from active branch at %s" % source)
+ if not os.path.exists(target):
+ os.makedirs(target)
+ # Remove possible remnants of previous incomplete runs.
+@@ -98,10 +101,11 @@
+ git_args.append(["add"] + files_to_keep) # add and commit
+ git_args.append(["commit", "-m", "keep files"]) # files we want to keep
+
++ git_args.append(["clean", "-fxd"]) # nuke everything else
+ git_args.append(["remote", "add", "source", source]) # point to source repo
+ git_args.append(["fetch", "source", "HEAD"]) # sync to current branch
+ git_args.append(["checkout", "-f", "FETCH_HEAD"]) # switch to that branch
+- git_args.append(["clean", "-fd"]) # delete removed files
++ git_args.append(["clean", "-fxd"]) # delete removed files
+
+ if files_to_keep:
+ git_args.append(["cherry-pick", "master"]) # restore kept files
+@@ -117,17 +120,17 @@
+ def UpdateGitIgnore(options):
+ file_name = os.path.join(options.node_path, TARGET_SUBDIR, ".gitignore")
+ assert os.path.isfile(file_name)
+- print ">> Updating .gitignore with lines"
++ print(">> Updating .gitignore with lines")
+ with open(file_name) as gitignore:
+ content = gitignore.readlines()
+ content = [x.strip() for x in content]
+ for x in DELETE_FROM_GITIGNORE:
+ if x in content:
+- print "- %s" % x
++ print("- %s" % x)
+ content.remove(x)
+ for x in ADD_TO_GITIGNORE:
+ if x not in content:
+- print "+ %s" % x
++ print("+ %s" % x)
+ content.append(x)
+ content.sort(key=lambda x: x[1:] if x.startswith("!") else x)
+ with open(file_name, "w") as gitignore:
+@@ -135,7 +138,7 @@
+ gitignore.write("%s\n" % x)
+
+ def CreateCommit(options):
+- print ">> Creating commit."
++ print(">> Creating commit.")
+ # Find git hash from source.
+ githash = subprocess.check_output(["git", "rev-parse", "--short", "HEAD"],
+ cwd=options.v8_path).strip()
diff --git a/user/nsd/APKBUILD b/user/nsd/APKBUILD
index 388c902a1..f99b4514e 100644
--- a/user/nsd/APKBUILD
+++ b/user/nsd/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Luis Ressel <aranea@aixah.de>
# Maintainer: Luis Ressel <aranea@aixah.de>
pkgname=nsd
-pkgver=4.1.26
+pkgver=4.1.27
pkgrel=0
pkgdesc="An authoritative only name server"
url="https://www.nlnetlabs.nl/projects/nsd/about/"
@@ -50,6 +50,6 @@ openrc() {
install -Dm644 "$srcdir/nsd.confd" "$subpkgdir/etc/conf.d/nsd"
}
-sha512sums="49c07ad79e4e056bd519dad157a44d5cc55cd9a28723fd910159dc761d4ba56ef86cb7bf289dc5d1b363a49b999232bb7ec1afa737ca5c2659c4c9893e93494b nsd-4.1.26.tar.gz
+sha512sums="9c75041f5a6213cdba7238c2e51fc73031f6f073e06587659f93992fed49418ee789642b25b5522d48642507050ac15021f385927eed81ce5ea649f974e66402 nsd-4.1.27.tar.gz
f0ef1d3427e92650239d9d91402810c045fc9223e3f42ce86986422bf2039a0bcc02dffdfe1153d54de5c76c8f2bdc3e34fe341c65b41f2d333b02c00b5b0eae nsd.confd
139e52dec98792173f06d298574db0d0e6966a06af8a0a3069487beb01fd570c09d22322569b54bacdc43232dbfb99a8c497d4417d2bbfee88bcdd9d1b4d22f7 nsd.initd"
diff --git a/user/openjdk8/APKBUILD b/user/openjdk8/APKBUILD
new file mode 100644
index 000000000..24dd5e28a
--- /dev/null
+++ b/user/openjdk8/APKBUILD
@@ -0,0 +1,309 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=openjdk8
+_icedteaver=3.11.0
+# pkgver is <JDK version>.<JDK update>.<JDK build>
+# Check https://icedtea.classpath.org/wiki/Main_Page when updating
+pkgver=8.201.08
+pkgrel=0
+pkgdesc="Libre Java development kit for Java 8"
+url="https://icedtea.classpath.org/"
+arch="all"
+license="GPL-2.0-only"
+depends="$pkgname-jre java-cacerts"
+options="sover-namecheck"
+makedepends="bash findutils libarchive-tools zip file util-linux libxslt
+ autoconf automake linux-headers sed xz coreutils
+ openjdk7 ca-certificates libjpeg-turbo-dev cmd:which
+ nss-dev nss-static cups-dev giflib-dev libpng-dev libxt-dev
+ lcms2-dev libxp-dev libxtst-dev libxinerama-dev zlib-dev
+ libxrender-dev alsa-lib-dev freetype-dev fontconfig-dev
+ gtk+2.0-dev krb5-dev attr-dev pcsc-lite-dev lksctp-tools-dev
+ libxcomposite-dev"
+
+case $CARCH in
+x86|pmmx) _jarch=i386;;
+x86_64) _jarch=amd64;;
+arm*) _jarch=aarch32;;
+ppc64) _jarch=ppc64
+ export CFLAGS="$CFLAGS -DABI_ELFv2";;
+*) _jarch="$CARCH";;
+esac
+
+_bootstrap_java_home="/usr/lib/jvm/java-1.7-openjdk"
+_java_home="/usr/lib/jvm/java-1.8-openjdk"
+_jrelib="$_java_home/jre/lib/$_jarch"
+
+# Exclude xawt from ldpath to avoid duplicate provides for libmawt.so
+# (also in headless). in future this should be a virtual provides.
+ldpath="$_jrelib:$_jrelib/native_threads:$_jrelib/headless:$_jrelib/server:$_jrelib/jli"
+sonameprefix="$pkgname:"
+
+subpackages="$pkgname-dbg $pkgname-jre-lib:jrelib:noarch $pkgname-jre $pkgname-jre-base:jrebase
+ $pkgname-doc $pkgname-demos"
+
+_dropsver=$_icedteaver
+_dropsurl="https://icedtea.classpath.org/download/drops/icedtea8/$_dropsver"
+
+source="https://icedtea.classpath.org/download/source/icedtea-$_icedteaver.tar.xz
+ openjdk-$_dropsver.tar.xz::$_dropsurl/openjdk.tar.xz
+ corba-$_dropsver.tar.xz::$_dropsurl/corba.tar.xz
+ jaxp-$_dropsver.tar.xz::$_dropsurl/jaxp.tar.xz
+ jaxws-$_dropsver.tar.xz::$_dropsurl/jaxws.tar.xz
+ jdk-$_dropsver.tar.xz::$_dropsurl/jdk.tar.xz
+ langtools-$_dropsver.tar.xz::$_dropsurl/langtools.tar.xz
+ hotspot-$_dropsver.tar.xz::$_dropsurl/hotspot.tar.xz
+ nashorn-$_dropsver.tar.xz::$_dropsurl/nashorn.tar.xz
+
+ icedtea-hotspot-musl.patch
+ icedtea-hotspot-musl-ppc.patch
+ icedtea-hotspot-noagent-musl.patch
+ icedtea-jdk-execinfo.patch
+ icedtea-jdk-fix-ipv6-init.patch
+ icedtea-jdk-fix-libjvm-load.patch
+ icedtea-jdk-musl.patch
+ icedtea-jdk-includes.patch
+ icedtea-jdk-getmntent-buffer.patch
+ icedtea-autoconf-config.patch
+ icedtea-jdk-tls-nist-curves.patch
+ remove-gawk.patch
+ "
+builddir="$srcdir/icedtea-$_icedteaver"
+
+# secfixes:
+# 8.201.08-r0:
+# - CVE-2019-2422
+# - CVE-2019-2426
+# - CVE-2018-11212
+# 8.191.12-r0:
+# - CVE-2018-3136
+# - CVE-2018-3139
+# - CVE-2018-3149
+# - CVE-2018-3169
+# - CVE-2018-3180
+# - CVE-2018-3183
+# - CVE-2018-3214
+# - CVE-2018-13785
+# - CVE-2018-16435
+# 8.181.13-r0:
+# - CVE-2018-2938
+# - CVE-2018-2940
+# - CVE-2018-2952
+# - CVE-2018-2973
+# - CVE-2018-3639
+
+unpack() {
+ if [ -z "$force" ]; then
+ verify
+ initdcheck
+ fi
+ mkdir -p "$srcdir"
+ msg "Unpacking sources..."
+ tar -C "$srcdir" -Jxf icedtea-$_icedteaver.tar.xz
+}
+
+prepare() {
+ cd "$builddir"
+
+ local ver_u=$(sed -En 's/^\s*JDK_UPDATE_VERSION\s*=\s*(\S+).*/\1/p' acinclude.m4)
+ local ver_b=$(sed -En 's/^\s*BUILD_VERSION\s*=\s*b(\S+).*/\1/p' acinclude.m4)
+ [ "${pkgver#*.}" = "$ver_u.$ver_b" ] \
+ || die "Version mismatch, source is 8.$ver_u.$ver_b, but abuild defines $pkgver!"
+
+ # Busybox sha256 does not support longopts.
+ sed -e "s/--check/-c/g" -i Makefile.am
+
+ local patch; for patch in $source; do
+ case $patch in
+ icedtea-*.patch)
+ cp ../$patch patches
+ ;;
+ *.patch)
+ msg "Applying patch $patch"
+ patch -p1 -i "$srcdir"/$patch
+ ;;
+ esac
+ done
+
+ ./autogen.sh
+}
+
+build() {
+ export JAVA_HOME="$_bootstrap_java_home"
+ export PATH="$JAVA_HOME/bin:$PATH"
+
+ if [ -z "$JOBS" ]; then
+ export JOBS=$(printf '%s\n' "$MAKEFLAGS" | sed -n -e 's/.*-j\([0-9]\+\).*/\1/p')
+ fi
+
+ DISTRIBUTION_PATCHES=""
+ local patch; for patch in $source; do
+ case $patch in
+ icedtea-*.patch)
+ DISTRIBUTION_PATCHES="$DISTRIBUTION_PATCHES patches/$patch"
+ ;;
+ esac
+ done
+ export DISTRIBUTION_PATCHES
+ echo "icedtea patches: $DISTRIBUTION_PATCHES"
+
+ cd "$builddir"
+ bash ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix="$_java_home" \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-dependency-tracking \
+ --disable-downloading \
+ --disable-precompiled-headers \
+ --with-parallel-jobs=${JOBS:-2} \
+ --with-hotspot-build=default \
+ --with-openjdk-src-zip="$srcdir/openjdk-$_dropsver.tar.xz" \
+ --with-hotspot-src-zip="$srcdir/hotspot-$_dropsver.tar.xz" \
+ --with-corba-src-zip="$srcdir/corba-$_dropsver.tar.xz" \
+ --with-jaxp-src-zip="$srcdir/jaxp-$_dropsver.tar.xz" \
+ --with-jaxws-src-zip="$srcdir/jaxws-$_dropsver.tar.xz" \
+ --with-jdk-src-zip="$srcdir/jdk-$_dropsver.tar.xz" \
+ --with-langtools-src-zip="$srcdir/langtools-$_dropsver.tar.xz" \
+ --with-nashorn-src-zip="$srcdir/nashorn-$_dropsver.tar.xz" \
+ --with-pax=paxmark \
+ --with-jdk-home="$_bootstrap_java_home" \
+ --with-pkgversion="Adelie ${pkgver}-r${pkgrel}" \
+ --enable-nss \
+ --enable-non-nss-curves
+ make
+}
+
+# TODO: Run tests or at least try to compile and run hello world.
+check() {
+ cd "$builddir"/openjdk.build/images/j2sdk-image
+
+ ./bin/java -version
+}
+
+package() {
+ cd "$builddir"
+
+ mkdir -p "$pkgdir"/$_java_home
+
+ cp -a openjdk.build/images/j2sdk-image/* "$pkgdir"/$_java_home/
+ rm "$pkgdir"/$_java_home/src.zip
+
+ # This archive contains absolute paths from the build environment,
+ # so it does not work on the target system. User can generate it
+ # running `java -Xshare:dump`.
+ rm -f "$pkgdir"/$_jrelib/server/classes.jsa
+
+ # pax mark again (due to fakeroot xattr handling bug)
+ ./pax-mark-vm "$pkgdir"/$_java_home true
+
+ # symlink to shared java cacerts store
+ rm -f "$pkgdir"/$_java_home/jre/lib/security/cacerts
+ ln -sf /etc/ssl/certs/java/cacerts \
+ "$pkgdir"/$_java_home/jre/lib/security/cacerts
+}
+
+jrelib() {
+ pkgdesc="OpenJDK 8 Java Runtime (class libraries)"
+ depends=""
+
+ local file dir
+ for file in jre/lib/images \
+ jre/lib/*.jar \
+ jre/lib/security \
+ jre/lib/ext/*.jar \
+ jre/lib/cmm \
+ jre/ASSEMBLY_EXCEPTION \
+ jre/THIRD_PARTY_README \
+ jre/LICENSE; do
+
+ dir=${file%/*}
+ mkdir -p "$subpkgdir"/$_java_home/$dir
+ mv "$pkgdir"/$_java_home/$file "$subpkgdir"/$_java_home/$dir
+ done
+}
+
+jre() {
+ pkgdesc="OpenJDK 8 Java Runtime"
+ local file dir
+
+ mkdir -p "$subpkgdir"
+ for file in jre/bin/policytool \
+ bin/appletviewer \
+ bin/policytool \
+ jre/lib/$_jarch/libawt_xawt.so \
+ jre/lib/$_jarch/libfontmanager.so \
+ jre/lib/$_jarch/libjawt.so \
+ jre/lib/$_jarch/libjsoundalsa.so \
+ jre/lib/$_jarch/libsplashscreen.so; do
+
+ dir=${file%/*}
+ mkdir -p "$subpkgdir"/$_java_home/$dir
+ mv "$pkgdir"/$_java_home/$file "$subpkgdir"/$_java_home/$dir
+ done
+
+ # Pax mark again (due to fakeroot xattr handling bug).
+ "$builddir"/pax-mark-vm "$subpkgdir"/$_java_home true
+}
+
+jrebase() {
+ pkgdesc="OpenJDK 8 Java Runtime (no GUI support)"
+ depends="$pkgname-jre-lib java-common java-cacerts"
+
+ mkdir -p "$subpkgdir"/$_java_home/bin \
+ "$subpkgdir"/$_java_home/lib/$_jarch
+
+ mv "$pkgdir"/$_java_home/lib/$_jarch/jli \
+ "$subpkgdir"/$_java_home/lib/$_jarch/
+
+ local file; for file in java orbd rmid servertool unpack200 keytool \
+ pack200 rmiregistry tnameserv; do
+ mv "$pkgdir"/$_java_home/bin/$file "$subpkgdir"/$_java_home/bin/
+ done
+
+ # Rest of the jre subdir (which were not taken by -jre subpkg).
+ mv "$pkgdir"/$_java_home/jre "$subpkgdir"/$_java_home/
+
+ # Pax mark again (due to fakeroot xattr handling bug).
+ "$builddir"/pax-mark-vm "$subpkgdir"/$_java_home true
+}
+
+doc() {
+ default_doc
+
+ mkdir -p "$subpkgdir"/$_java_home/
+ mv "$pkgdir"/$_java_home/man "$subpkgdir"/$_java_home/
+}
+
+demos() {
+ pkgdesc="OpenJDK 8 Java Demos and Samples"
+ depends="$pkgname"
+
+ mkdir -p "$subpkgdir"/$_java_home/
+ mv "$pkgdir"/$_java_home/demo "$pkgdir"/$_java_home/sample \
+ "$subpkgdir"/$_java_home/
+}
+
+sha512sums="a71c9318d49077f8ae27f5c3e0b61df0709eded241f557c886f6b93aa98c13ad78f713d1286da286989bf62866dfff7538ad783eb804a705a160cbc096dea851 icedtea-3.11.0.tar.xz
+fc3faa7d7b9531f10c40241d89c36854043921f6f1a0851f284bcab36fc54fb0bb8cf8365dd4b2fb22b3ee8ddb8ed4a79e0807f79cb95b4b00f164993f1acc0b openjdk-3.11.0.tar.xz
+9b8a44dda0bbfba8dc0d659e0fabf22e84b9931518e4b199a238faa103cbc4ed814c97f0f38f0aed263846b46fc7eab4500ba9759503373083e12cb8b5b364b5 corba-3.11.0.tar.xz
+9eba0f6ada2ae8adc1791a91ceb4fba9bd06aee0626cd1b4310ff16c7c8006045fed5fb7f109e490395b70695be4e6bfd6f1f5cbcdb095fb17abf123012a03de jaxp-3.11.0.tar.xz
+ce5f0c2aced1af59f002dc9dc6cba4b9332167e9e019a3040267901ef7f325e05b8c99ed1f276b88ddb4e43cdd1b0c456e0c4dc2222ae6b3800c0502ffa840de jaxws-3.11.0.tar.xz
+411508ed91f14ae1c51ea54de72a943db222ff572f3991631fe1a1fa97f9bb42da1e01ca98893f7236b4b44bae2917fc3f8622d7f94a085be30d437451acd272 jdk-3.11.0.tar.xz
+363c376848870c6c28415967561c4b151f1256c38a315fabc69c90425f5255224182045349a00c9433db52c416b7ebffedaa4825c980460541a3f9338adbaa5e langtools-3.11.0.tar.xz
+13fa35f4a4fe01b3da4efb8476c0cb3482a36596eb422f2ad958a4c51efc286962ac3123a75853e84c4db477ac064a0fd3ee5e03f1ea0ec4f7e2c8ac07aa2d0e hotspot-3.11.0.tar.xz
+2b46a8599d530a351522420cae8ac780cd2e64a6d7adbff87397a178f12f0a992bccd0f56435582dbd10be2157d4a4540c41b3dca488566162eed680102e58a9 nashorn-3.11.0.tar.xz
+c0776ff52e11a353fee29419319cd9e1fc4e5bb922832547616e8499fd52852a935a6a6fb93b49a67ab7b3fd2f7a63320f917e354cc7123220139e80694a7b5a icedtea-hotspot-musl.patch
+e5cf4d70f96fc1e72ae8b97a887adb96092ff36584711cbb8de9d9fa9e859cb8731d638838de0d9591239fc44ffe5c74422d1842bd9f10a0c00dff1627bdeeef icedtea-hotspot-musl-ppc.patch
+19459dbb922f5a71cd15b53199481498626a783c24f91d2544d55b7dddd2cdb34a64bbf0226b99548612dd1743af01b3f9ff32c30abbbc90ce727ca2dbbbd1f9 icedtea-hotspot-noagent-musl.patch
+f6365cfafafa008bd6c1bf0ccec01a63f8a39bd1a8bc87baa492a27234d47793ba02d455e5667a873ef50148df3baaf6a8421e2da0b15faac675867da714dd5f icedtea-jdk-execinfo.patch
+48533f87fc2cf29d26b259be0df51087d2fe5b252e72d00c6ea2f4add7b0fb113141718c116279c5905e03f64a1118082e719393786811367cf4d472b5d36774 icedtea-jdk-fix-ipv6-init.patch
+b135991c76b0db8fa7c363e0903624668e11eda7b54a943035c214aa4d7fc8c3e8110ed200edcec82792f3c9393150a9bd628625ddf7f3e55720ff163fbbb471 icedtea-jdk-fix-libjvm-load.patch
+1fbc32ddc528c7c0099dbc1e48f88d29dccf55e7b8997793aa1d3d8408003a1223d898cca4248e1a12d343d3feec5144f875e6cdac8460d763c73ab3ad7e49f9 icedtea-jdk-musl.patch
+e8d9f1b867bf4fc84aa00d1237b264bcf503b1ed5f34735e14b0b747a728953fe0051a5af69ed058d377fbf65d8be1ed9e38fe5fc6edb2d50b31f34bf3ba91dc icedtea-jdk-includes.patch
+7e6fa46b10c630517bfa46943858aea1d032c12d32ba3fcb7a2143ae1e896c34fa4cb8f925af80cb19f8e29149b835aa054adfd30ebb00539f6c78588d6f5211 icedtea-jdk-getmntent-buffer.patch
+662d662d0a7a84be2978e921317589f212f3ba3b7629527ba0f1140b5ac4c1024893e0ed176211688ed1a4505968c4befc841ed57ffcdbb9d355c2cb0571b167 icedtea-autoconf-config.patch
+9ea7ac942baf29cc619bc2e1acd59201b9f6d38f39a517b495d7613aec746459200c81afb57c5fcdcb856f6bc8b33f7566c8593fed07e5c73f43e08f1072d458 icedtea-jdk-tls-nist-curves.patch
+b0f6d07c6a949acdc8b4a25bf924f134f468e162f01dd440fd4ca80769fb84a0a54210f93efbe88012404fe3db6701aad31cdbc772bc054ad69021c37db5538c remove-gawk.patch"
diff --git a/user/openjdk8/icedtea-autoconf-config.patch b/user/openjdk8/icedtea-autoconf-config.patch
new file mode 100644
index 000000000..9b75def87
--- /dev/null
+++ b/user/openjdk8/icedtea-autoconf-config.patch
@@ -0,0 +1,114 @@
+OpenJDK contains very outdated autoconf-config.guess and autoconf-config.sub
+that don't handle triplet with -musl. It also contains wrapper scripts
+config.guess and config.sub that we don't need at all.
+
+This patch modifies these wrapper scripts to just include up-to-date
+config.guess and config.sub from the icedtea tarball.
+
+--- openjdk.orig/common/autoconf/build-aux/config.guess
++++ openjdk/common/autoconf/build-aux/config.guess
+@@ -28,62 +28,4 @@
+ # and fix the broken property, if needed.
+
+ DIR=`dirname $0`
+-OUT=`. $DIR/autoconf-config.guess`
+-
+-# Test and fix solaris on x86_64
+-echo $OUT | grep i386-pc-solaris > /dev/null 2> /dev/null
+-if test $? = 0; then
+- # isainfo -n returns either i386 or amd64
+- REAL_CPU=`isainfo -n`
+- OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
+-fi
+-
+-# Test and fix solaris on sparcv9
+-echo $OUT | grep sparc-sun-solaris > /dev/null 2> /dev/null
+-if test $? = 0; then
+- # isainfo -n returns either sparc or sparcv9
+- REAL_CPU=`isainfo -n`
+- OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
+-fi
+-
+-# Test and fix cygwin on x86_64
+-echo $OUT | grep 86-pc-cygwin > /dev/null 2> /dev/null
+-if test $? != 0; then
+- echo $OUT | grep 86-pc-mingw > /dev/null 2> /dev/null
+-fi
+-if test $? = 0; then
+- case `echo $PROCESSOR_IDENTIFIER | cut -f1 -d' '` in
+- intel64|Intel64|INTEL64|em64t|EM64T|amd64|AMD64|8664|x86_64)
+- REAL_CPU=x86_64
+- OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
+- ;;
+- esac
+-fi
+-
+-# Test and fix architecture string on AIX
+-# On AIX 'config.guess' returns 'powerpc' as architecture but 'powerpc' is
+-# implicitely handled as 32-bit architecture in 'platform.m4' so we check
+-# for the kernel mode rewrite it to 'powerpc64' if we'Re running in 64-bit mode.
+-# The check could also be done with `/usr/sbin/prtconf | grep "Kernel Type" | grep "64-bit"`
+-echo $OUT | grep powerpc-ibm-aix > /dev/null 2> /dev/null
+-if test $? = 0; then
+- if [ -x /bin/getconf ] ; then
+- KERNEL_BITMODE=`getconf KERNEL_BITMODE`
+- if [ "$KERNEL_BITMODE" = "32" ]; then
+- KERNEL_BITMODE=""
+- fi
+- fi
+- OUT=powerpc$KERNEL_BITMODE`echo $OUT | sed -e 's/[^-]*//'`
+-fi
+-
+-# Test and fix little endian PowerPC64.
+-# TODO: should be handled by autoconf-config.guess.
+-if [ "x$OUT" = x ]; then
+- if [ `uname -m` = ppc64le ]; then
+- if [ `uname -s` = Linux ]; then
+- OUT=powerpc64le-unknown-linux-gnu
+- fi
+- fi
+-fi
+-
+-echo $OUT
++. $DIR/../../../../config.guess
+--- openjdk.orig/common/autoconf/build-aux/config.sub
++++ openjdk/common/autoconf/build-aux/config.sub
+@@ -28,37 +28,4 @@
+ # wrap it and fix the broken property, if needed.
+
+ DIR=`dirname $0`
+-
+-# First, filter out everything that doesn't begin with "aarch64-"
+-if ! echo $* | grep '^aarch64-' >/dev/null ; then
+- . $DIR/autoconf-config.sub "$@"
+- # autoconf-config.sub exits, so we never reach here, but just in
+- # case we do:
+- exit
+-fi
+-
+-while test $# -gt 0 ; do
+- case $1 in
+- -- ) # Stop option processing
+- shift; break ;;
+- aarch64-* )
+- config=`echo $1 | sed 's/^aarch64-/arm-/'`
+- sub_args="$sub_args $config"
+- shift; ;;
+- - ) # Use stdin as input.
+- sub_args="$sub_args $1"
+- shift; break ;;
+- * )
+- sub_args="$sub_args $1"
+- shift; ;;
+- esac
+-done
+-
+-result=`. $DIR/autoconf-config.sub $sub_args "$@"`
+-exitcode=$?
+-
+-result=`echo $result | sed "s/^arm-/aarch64-/"`
+-
+-echo $result
+-exit $exitcode
+-
++. $DIR/../../../../config.sub "$@"
diff --git a/user/openjdk8/icedtea-hotspot-musl-ppc.patch b/user/openjdk8/icedtea-hotspot-musl-ppc.patch
new file mode 100644
index 000000000..eca684884
--- /dev/null
+++ b/user/openjdk8/icedtea-hotspot-musl-ppc.patch
@@ -0,0 +1,169 @@
+--- openjdk.orig/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
++++ openjdk/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
+@@ -110,11 +110,19 @@
+ // it because the volatile registers are not needed to make setcontext() work.
+ // Hopefully it was zero'd out beforehand.
+ guarantee(uc->uc_mcontext.regs != NULL, "only use ucontext_get_pc in sigaction context");
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ return (address)uc->uc_mcontext.regs->nip;
++#else // Musl
++ return (address)uc->uc_mcontext.gp_regs[32];
++#endif
+ }
+
+ intptr_t* os::Linux::ucontext_get_sp(ucontext_t * uc) {
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ return (intptr_t*)uc->uc_mcontext.regs->gpr[1/*REG_SP*/];
++#else // Musl
++ return (intptr_t*)uc->uc_mcontext.gp_regs[1/*REG_SP*/];
++#endif
+ }
+
+ intptr_t* os::Linux::ucontext_get_fp(ucontext_t * uc) {
+@@ -213,7 +221,11 @@
+ if (uc) {
+ address const pc = os::Linux::ucontext_get_pc(uc);
+ if (pc && StubRoutines::is_safefetch_fault(pc)) {
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ uc->uc_mcontext.regs->nip = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc);
++#else // Musl
++ uc->uc_mcontext.gp_regs[32] = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc);
++#endif
+ return true;
+ }
+ }
+@@ -364,7 +376,11 @@
+ // continue at the next instruction after the faulting read. Returning
+ // garbage from this read is ok.
+ thread->set_pending_unsafe_access_error();
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ uc->uc_mcontext.regs->nip = ((unsigned long)pc) + 4;
++#else // Musl
++ uc->uc_mcontext.gp_regs[32] = ((unsigned long)pc) + 4;
++#endif
+ return true;
+ }
+ }
+@@ -383,7 +399,11 @@
+ // continue at the next instruction after the faulting read. Returning
+ // garbage from this read is ok.
+ thread->set_pending_unsafe_access_error();
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ uc->uc_mcontext.regs->nip = ((unsigned long)pc) + 4;
++#else // Musl
++ uc->uc_mcontext.gp_regs[32] = ((unsigned long)pc) + 4;
++#endif
+ return true;
+ }
+ }
+@@ -406,7 +426,11 @@
+ if (stub != NULL) {
+ // Save all thread context in case we need to restore it.
+ if (thread != NULL) thread->set_saved_exception_pc(pc);
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ uc->uc_mcontext.regs->nip = (unsigned long)stub;
++#else
++ uc->uc_mcontext.gp_regs[32] = (unsigned long)stub;
++#endif
+ return true;
+ }
+
+@@ -564,6 +588,7 @@
+ ucontext_t* uc = (ucontext_t*)context;
+
+ st->print_cr("Registers:");
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->nip);
+ st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->link);
+ st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.regs->ctr);
+@@ -572,8 +597,18 @@
+ st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.regs->gpr[i]);
+ if (i % 3 == 2) st->cr();
+ }
++#else // Musl
++ st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[32]);
++ st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[36]);
++ st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[35]);
+ st->cr();
++ for (int i = 0; i < 32; i++) {
++ st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.gp_regs[i]);
++ if (i % 3 == 2) st->cr();
++ }
++#endif
+ st->cr();
++ st->cr();
+
+ intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
+ st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", p2i(sp));
+@@ -600,7 +635,11 @@
+ // this is only for the "general purpose" registers
+ for (int i = 0; i < 32; i++) {
+ st->print("r%-2d=", i);
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ print_location(st, uc->uc_mcontext.regs->gpr[i]);
++#else // Musl
++ print_location(st, uc->uc_mcontext.gp_regs[i]);
++#endif
+ }
+ st->cr();
+ }
+--- openjdk.orig/hotspot.orig/src/cpu/ppc/vm/macroAssembler_ppc.cpp
++++ openjdk/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
+@@ -1242,7 +1242,11 @@
+ // the safepoing polling page.
+ ucontext_t* uc = (ucontext_t*) ucontext;
+ // Set polling address.
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address addr = (address)uc->uc_mcontext.regs->gpr[ra] + (ssize_t)ds;
++#else // Musl
++ address addr = (address)uc->uc_mcontext.gp_regs[ra] + (ssize_t)ds;
++#endif
+ if (polling_address_ptr != NULL) {
+ *polling_address_ptr = addr;
+ }
+@@ -1263,15 +1267,24 @@
+ int rb = inv_rb_field(instruction);
+
+ // look up content of ra and rb in ucontext
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
+ long rb_val=(long)uc->uc_mcontext.regs->gpr[rb];
++#else // Musl
++ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
++ long rb_val=(long)uc->uc_mcontext.gp_regs[rb];
++#endif
+ return os::is_memory_serialize_page(thread, ra_val+rb_val);
+ } else if (is_stw(instruction) || is_stwu(instruction)) {
+ int ra = inv_ra_field(instruction);
+ int d1 = inv_d1_field(instruction);
+
+ // look up content of ra in ucontext
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
++#else // Musl
++ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
++#endif
+ return os::is_memory_serialize_page(thread, ra_val+d1);
+ } else {
+ return false;
+@@ -1334,11 +1347,20 @@
+ || (is_stdu(instruction) && rs == 1)) {
+ int ds = inv_ds_field(instruction);
+ // return banged address
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ return ds+(address)uc->uc_mcontext.regs->gpr[ra];
++#else // Musl
++ return ds+(address)uc->uc_mcontext.gp_regs[ra];
++#endif
+ } else if (is_stdux(instruction) && rs == 1) {
+ int rb = inv_rb_field(instruction);
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address sp = (address)uc->uc_mcontext.regs->gpr[1];
+ long rb_val = (long)uc->uc_mcontext.regs->gpr[rb];
++#else // Musl
++ address sp = (address)uc->uc_mcontext.gp_regs[1];
++ long rb_val = (long)uc->uc_mcontext.gp_regs[rb];
++#endif
+ return ra != 1 || rb_val >= 0 ? NULL // not a stack bang
+ : sp + rb_val; // banged address
+ }
diff --git a/user/openjdk8/icedtea-hotspot-musl.patch b/user/openjdk8/icedtea-hotspot-musl.patch
new file mode 100644
index 000000000..6cfb3e606
--- /dev/null
+++ b/user/openjdk8/icedtea-hotspot-musl.patch
@@ -0,0 +1,135 @@
+diff --git icedtea/hotspot/src/os/linux/vm/jvm_linux.cpp icedtea/hotspot/src/os/linux/vm/jvm_linux.cpp
+index ba84788..c22281f 100644
+--- openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp
+@@ -154,7 +154,9 @@ struct siglabel siglabels[] = {
+ #ifdef SIGSTKFLT
+ "STKFLT", SIGSTKFLT, /* Stack fault. */
+ #endif
++#ifdef SIGCLD
+ "CLD", SIGCLD, /* Same as SIGCHLD (System V). */
++#endif
+ "CHLD", SIGCHLD, /* Child status has changed (POSIX). */
+ "CONT", SIGCONT, /* Continue (POSIX). */
+ "STOP", SIGSTOP, /* Stop, unblockable (POSIX). */
+diff --git icedtea/hotspot/src/os/linux/vm/os_linux.cpp icedtea/hotspot/src/os/linux/vm/os_linux.cpp
+index 89ba0ff..e84837a 100644
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -94,7 +94,6 @@
+ # include <string.h>
+ # include <syscall.h>
+ # include <sys/sysinfo.h>
+-# include <gnu/libc-version.h>
+ # include <sys/ipc.h>
+ # include <sys/shm.h>
+ # include <link.h>
+@@ -530,6 +529,13 @@ void os::Linux::hotspot_sigmask(Thread* thread) {
+ // detecting pthread library
+
+ void os::Linux::libpthread_init() {
++#if 1
++ // Hard code musl compatible settings
++ os::Linux::set_glibc_version("glibc 2.9");
++ os::Linux::set_libpthread_version("NPTL");
++ os::Linux::set_is_NPTL();
++ os::Linux::set_is_floating_stack();
++#else
+ // Save glibc and pthread version strings. Note that _CS_GNU_LIBC_VERSION
+ // and _CS_GNU_LIBPTHREAD_VERSION are supported in glibc >= 2.3.2. Use a
+ // generic name for earlier versions.
+@@ -588,6 +594,7 @@ void os::Linux::libpthread_init() {
+ if (os::Linux::is_NPTL() || os::Linux::supports_variable_stack_size()) {
+ os::Linux::set_is_floating_stack();
+ }
++#endif
+ }
+
+ /////////////////////////////////////////////////////////////////////////////
+@@ -2834,6 +2841,11 @@ extern "C" JNIEXPORT void numa_warn(int number, char *where, ...) { }
+ extern "C" JNIEXPORT void numa_error(char *where) { }
+ extern "C" JNIEXPORT int fork1() { return fork(); }
+
++static void *dlvsym(void *handle, const char *name, const char *ver)
++{
++ return dlsym(handle, name);
++}
++
+ // Handle request to load libnuma symbol version 1.1 (API v1). If it fails
+ // load symbol from base version instead.
+ void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
+diff --git openjdk/hotspot/src/os/linux/vm/os_linux.inline.hpp openjdk/hotspot/src/os/linux/vm/os_linux.inline.hpp
+index 10d56d8..b9b2b77 100644
+--- openjdk/hotspot/src/os/linux/vm/os_linux.inline.hpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.inline.hpp
+@@ -33,7 +33,7 @@
+
+ #include <unistd.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <netdb.h>
+
+ inline void* os::thread_local_storage_at(int index) {
+diff --git openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp
+index d2c10e0..20f657f 100644
+--- openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp
++++ openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp
+@@ -75,7 +75,7 @@
+ # include <pwd.h>
+ # include <poll.h>
+ # include <ucontext.h>
+-# include <fpu_control.h>
++# include <linux/types.h> /* provides __u64 */
+
+ #ifdef BUILTIN_SIM
+ #define REG_SP REG_RSP
+diff --git openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+index 38388cb..2505ba8 100644
+--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+@@ -72,7 +72,6 @@
+ # include <pwd.h>
+ # include <poll.h>
+ # include <ucontext.h>
+-# include <fpu_control.h>
+
+ #ifdef AMD64
+ #define REG_SP REG_RSP
+@@ -544,6 +543,9 @@ JVM_handle_linux_signal(int sig,
+ return true; // Mute compiler
+ }
+
++#define _FPU_GETCW(cw) __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw))
++#define _FPU_SETCW(cw) __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw))
++
+ void os::Linux::init_thread_fpu_state(void) {
+ #ifndef AMD64
+ // set fpu to 53 bit precision
+diff --git openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
+index f3f2f26..6b50cfa 100644
+--- openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
+@@ -32,7 +32,9 @@
+ // map stack pointer to thread pointer - see notes in threadLS_linux_x86.cpp
+ #define SP_BITLENGTH 32
+ #define PAGE_SHIFT 12
++ #ifndef PAGE_SIZE
+ #define PAGE_SIZE (1UL << PAGE_SHIFT)
++ #endif
+ static Thread* _sp_map[1UL << (SP_BITLENGTH - PAGE_SHIFT)];
+
+ public:
+diff --git openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+index efa0b4e..6df2302 100644
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+@@ -235,7 +235,7 @@ inline int g_isnan(double f) { return isnand(f); }
+ #elif defined(__APPLE__)
+ inline int g_isnan(double f) { return isnan(f); }
+ #elif defined(LINUX) || defined(_ALLBSD_SOURCE)
+-inline int g_isnan(float f) { return isnanf(f); }
++inline int g_isnan(float f) { return isnan(f); }
+ inline int g_isnan(double f) { return isnan(f); }
+ #else
+ #error "missing platform-specific definition here"
diff --git a/user/openjdk8/icedtea-hotspot-noagent-musl.patch b/user/openjdk8/icedtea-hotspot-noagent-musl.patch
new file mode 100644
index 000000000..25bdb1c5a
--- /dev/null
+++ b/user/openjdk8/icedtea-hotspot-noagent-musl.patch
@@ -0,0 +1,79 @@
+--- openjdk.orig/common/autoconf/configure
++++ openjdk/common/autoconf/configure
+@@ -103,7 +103,7 @@
+ }
+
+ # Check for local changes
+-check_hg_updates
++run_autogen_or_fail
+
+ if test -e $conf_custom_script_dir/generated-configure.sh; then
+ # Test if open configure is newer than custom configure, if so, custom needs to
+--- openjdk.orig/common/autoconf/jdk-options.m4
++++ openjdk/common/autoconf/jdk-options.m4
+@@ -159,7 +159,7 @@
+ AC_SUBST(JVM_VARIANT_ZEROSHARK)
+ AC_SUBST(JVM_VARIANT_CORE)
+
+- INCLUDE_SA=true
++ AC_CHECK_HEADER(thread_db.h,INCLUDE_SA=true,INCLUDE_SA=false)
+ if test "x$JVM_VARIANT_ZERO" = xtrue ; then
+ INCLUDE_SA=false
+ fi
+--- openjdk.orig/hotspot/make/linux/makefiles/defs.make
++++ openjdk/hotspot/make/linux/makefiles/defs.make
+@@ -305,6 +305,9 @@
+
+ # Serviceability Binaries
+ # No SA Support for PPC, IA64, ARM or zero
++# or if thread_db.h missing (musl)
++
++ifneq ($(wildcard /usr/include/thread_db.h),)
+ ADD_SA_BINARIES/x86 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
+ $(EXPORT_LIB_DIR)/sa-jdi.jar
+ ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
+@@ -322,6 +322,11 @@
+ endif
+ endif
+ endif
++else
++ADD_SA_BINARIES/x86 =
++ADD_SA_BINARIES/sparc =
++ADD_SA_BINARIES/aarch64 =
++endif
+ ADD_SA_BINARIES/ppc =
+ ADD_SA_BINARIES/ia64 =
+ ADD_SA_BINARIES/arm =
+--- openjdk.orig/hotspot/make/linux/makefiles/sa.make
++++ openjdk/hotspot/make/linux/makefiles/sa.make
+@@ -59,9 +59,11 @@
+
+ # if $(AGENT_DIR) does not exist, we don't build SA
+ # also, we don't build SA on Itanium or zero.
++# check for thread_db.h too (musl does not have it).
+
+ all:
+- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \
++ if [ -d $(AGENT_DIR) -a -f /usr/include/thread_db.h \
++ -a "$(SRCARCH)" != "ia64" \
+ -a "$(SRCARCH)" != "zero" ] ; then \
+ $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
+ fi
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -61,12 +61,15 @@
+
+ # if $(AGENT_DIR) does not exist, we don't build SA
+ # also, we don't build SA on Itanium or zero.
++# check for thread_db.h too (musl does not have it).
+
++ifneq ($(wildcard /usr/include/thread_db.h),)
+ ifneq ($(wildcard $(AGENT_DIR)),)
+ ifneq ($(filter-out ia64 zero,$(SRCARCH)),)
+ BUILDLIBSAPROC = $(LIBSAPROC)
+ endif
+ endif
++endif
+
+ ifneq ($(ALT_SASRCDIR),)
+ ALT_SAINCDIR=-I$(ALT_SASRCDIR) -DALT_SASRCDIR
diff --git a/user/openjdk8/icedtea-jdk-execinfo.patch b/user/openjdk8/icedtea-jdk-execinfo.patch
new file mode 100644
index 000000000..e4ae562c5
--- /dev/null
+++ b/user/openjdk8/icedtea-jdk-execinfo.patch
@@ -0,0 +1,20 @@
+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c
++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c
+@@ -27,7 +27,7 @@
+ #include <X11/Xutil.h>
+ #include <X11/Xos.h>
+ #include <X11/Xatom.h>
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
+ #include <execinfo.h>
+ #endif
+
+@@ -689,7 +689,7 @@
+ return ret;
+ }
+
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
+ void print_stack(void)
+ {
+ void *array[10];
diff --git a/user/openjdk8/icedtea-jdk-fix-ipv6-init.patch b/user/openjdk8/icedtea-jdk-fix-ipv6-init.patch
new file mode 100644
index 000000000..11f3bf6dd
--- /dev/null
+++ b/user/openjdk8/icedtea-jdk-fix-ipv6-init.patch
@@ -0,0 +1,42 @@
+--- openjdk/jdk/src/solaris/native/java/net/net_util_md.c.orig
++++ openjdk/jdk/src/solaris/native/java/net/net_util_md.c
+@@ -561,7 +561,7 @@
+
+ static struct localinterface *localifs = 0;
+ static int localifsSize = 0; /* size of array */
+-static int nifs = 0; /* number of entries used in array */
++static int nifs = -1; /* number of entries used in array */
+
+ /* not thread safe: make sure called once from one thread */
+
+@@ -573,6 +573,10 @@
+ int index, x1, x2, x3;
+ unsigned int u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,ua,ub,uc,ud,ue,uf;
+
++ if (nifs >= 0)
++ return ;
++ nifs = 0;
++
+ if ((f = fopen("/proc/net/if_inet6", "r")) == NULL) {
+ return ;
+ }
+@@ -601,7 +605,7 @@
+ localifs = (struct localinterface *) realloc (
+ localifs, sizeof (struct localinterface)* (localifsSize+5));
+ if (localifs == 0) {
+- nifs = 0;
++ nifs = -1;
+ fclose (f);
+ return;
+ }
+@@ -624,9 +628,7 @@
+ static int getLocalScopeID (char *addr) {
+ struct localinterface *lif;
+ int i;
+- if (localifs == 0) {
+- initLocalIfs();
+- }
++ initLocalIfs();
+ for (i=0, lif=localifs; i<nifs; i++, lif++) {
+ if (memcmp (addr, lif->localaddr, 16) == 0) {
+ return lif->index;
diff --git a/user/openjdk8/icedtea-jdk-fix-libjvm-load.patch b/user/openjdk8/icedtea-jdk-fix-libjvm-load.patch
new file mode 100644
index 000000000..d0a090ea5
--- /dev/null
+++ b/user/openjdk8/icedtea-jdk-fix-libjvm-load.patch
@@ -0,0 +1,14 @@
+musl needs LD_LIBRARY_PATH set because when .so is opened with dlopen(/abs/path)
+it does not qualify for providing symbols for NEEDED dependency.
+
+--- openjdk.orig/jdk/src/solaris/bin/java_md_solinux.c
++++ openjdk/jdk/src/solaris/bin/java_md_solinux.c
+@@ -291,6 +291,8 @@
+ char *dmllp = NULL;
+ char *p; /* a utility pointer */
+
++ return JNI_TRUE;
++
+ #ifdef AIX
+ /* We always have to set the LIBPATH on AIX because ld doesn't support $ORIGIN. */
+ return JNI_TRUE;
diff --git a/user/openjdk8/icedtea-jdk-getmntent-buffer.patch b/user/openjdk8/icedtea-jdk-getmntent-buffer.patch
new file mode 100644
index 000000000..075a9d423
--- /dev/null
+++ b/user/openjdk8/icedtea-jdk-getmntent-buffer.patch
@@ -0,0 +1,88 @@
+Give a much bigger buffer to getmntent_r.
+
+https://bugs.alpinelinux.org/issues/7093
+
+diff --git a/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c b/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c
+index c8500db..d0b85d6 100644
+--- openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c
++++ openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c
+@@ -33,6 +33,7 @@
+ #include <dlfcn.h>
+ #include <errno.h>
+ #include <mntent.h>
++#include <limits.h>
+
+ #include "sun_nio_fs_LinuxNativeDispatcher.h"
+
+@@ -173,8 +174,8 @@ Java_sun_nio_fs_LinuxNativeDispatcher_getmntent(JNIEnv* env, jclass this,
+ jlong value, jobject entry)
+ {
+ struct mntent ent;
+- char buf[1024];
+- int buflen = sizeof(buf);
++ char *buf = NULL;
++ const size_t buflen = PATH_MAX * 4;
+ struct mntent* m;
+ FILE* fp = jlong_to_ptr(value);
+ jsize len;
+@@ -183,10 +184,17 @@ Java_sun_nio_fs_LinuxNativeDispatcher_getmntent(JNIEnv* env, jclass this,
+ char* dir;
+ char* fstype;
+ char* options;
++ jint res = -1;
+
+- m = getmntent_r(fp, &ent, (char*)&buf, buflen);
+- if (m == NULL)
++ buf = malloc(buflen);
++ if (buf == NULL) {
++ JNU_ThrowOutOfMemoryError(env, "native heap");
+ return -1;
++ }
++ m = getmntent_r(fp, &ent, buf, buflen);
++ if (m == NULL)
++ goto out;
++
+ name = m->mnt_fsname;
+ dir = m->mnt_dir;
+ fstype = m->mnt_type;
+@@ -195,32 +203,35 @@ Java_sun_nio_fs_LinuxNativeDispatcher_getmntent(JNIEnv* env, jclass this,
+ len = strlen(name);
+ bytes = (*env)->NewByteArray(env, len);
+ if (bytes == NULL)
+- return -1;
++ goto out;
+ (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)name);
+ (*env)->SetObjectField(env, entry, entry_name, bytes);
+
+ len = strlen(dir);
+ bytes = (*env)->NewByteArray(env, len);
+ if (bytes == NULL)
+- return -1;
++ goto out;
+ (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)dir);
+ (*env)->SetObjectField(env, entry, entry_dir, bytes);
+
+ len = strlen(fstype);
+ bytes = (*env)->NewByteArray(env, len);
+ if (bytes == NULL)
+- return -1;
++ goto out;
+ (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)fstype);
+ (*env)->SetObjectField(env, entry, entry_fstype, bytes);
+
+ len = strlen(options);
+ bytes = (*env)->NewByteArray(env, len);
+ if (bytes == NULL)
+- return -1;
++ goto out;
+ (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)options);
+ (*env)->SetObjectField(env, entry, entry_options, bytes);
+
+- return 0;
++ res = 0;
++out:
++ free(buf);
++ return res;
+ }
+
+ JNIEXPORT void JNICALL
diff --git a/user/openjdk8/icedtea-jdk-includes.patch b/user/openjdk8/icedtea-jdk-includes.patch
new file mode 100644
index 000000000..6443a1973
--- /dev/null
+++ b/user/openjdk8/icedtea-jdk-includes.patch
@@ -0,0 +1,154 @@
+--- openjdk.orig/jdk/src/aix/native/java/net/aix_close.c
++++ openjdk/jdk/src/aix/native/java/net/aix_close.c
+@@ -62,7 +62,7 @@
+ #include <unistd.h>
+ #include <errno.h>
+
+-#include <sys/poll.h>
++#include <poll.h>
+
+ /*
+ * Stack allocated by thread when doing blocking operation
+--- openjdk.orig/jdk/src/aix/native/sun/nio/ch/AixNativeThread.c
++++ openjdk/jdk/src/aix/native/sun/nio/ch/AixNativeThread.c
+@@ -32,7 +32,7 @@
+ #include "sun_nio_ch_NativeThread.h"
+
+ #include <pthread.h>
+-#include <sys/signal.h>
++#include <signal.h>
+
+ /* Also defined in src/aix/native/java/net/aix_close.c */
+ #define INTERRUPT_SIGNAL (SIGRTMAX - 1)
+--- openjdk.orig/jdk/src/aix/native/sun/nio/ch/AixPollPort.c
++++ openjdk/jdk/src/aix/native/sun/nio/ch/AixPollPort.c
+@@ -34,7 +34,7 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/pollset.h>
+ #include <fcntl.h>
+ #include <stddef.h>
+--- openjdk.orig/jdk/src/macosx/javavm/export/jvm_md.h
++++ openjdk/jdk/src/macosx/javavm/export/jvm_md.h
+@@ -60,7 +60,7 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/signal.h>
++#include <signal.h>
+
+ /* O Flags */
+
+--- openjdk.orig/jdk/src/solaris/javavm/export/jvm_md.h
++++ openjdk/jdk/src/solaris/javavm/export/jvm_md.h
+@@ -65,7 +65,7 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/signal.h>
++#include <signal.h>
+
+ /* O Flags */
+
+--- openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c
++++ openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c
+@@ -28,7 +28,7 @@
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #if defined(__linux__) && !defined(USE_SELECT)
+-#include <sys/poll.h>
++#include <poll.h>
+ #endif
+ #include <netinet/tcp.h> /* Defines TCP_NODELAY, needed for 2.6 */
+ #include <netinet/in.h>
+--- openjdk.orig/jdk/src/solaris/native/java/net/bsd_close.c
++++ openjdk/jdk/src/solaris/native/java/net/bsd_close.c
+@@ -36,7 +36,7 @@
+ #include <sys/uio.h>
+ #include <unistd.h>
+ #include <errno.h>
+-#include <sys/poll.h>
++#include <poll.h>
+
+ /*
+ * Stack allocated by thread when doing blocking operation
+--- openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c
++++ openjdk/jdk/src/solaris/native/java/net/linux_close.c
+@@ -34,7 +34,7 @@
+ #include <sys/uio.h>
+ #include <unistd.h>
+ #include <errno.h>
+-#include <sys/poll.h>
++#include <poll.h>
+
+ /*
+ * Stack allocated by thread when doing blocking operation
+--- openjdk.orig/jdk/src/solaris/native/java/net/net_util_md.h
++++ openjdk/jdk/src/solaris/native/java/net/net_util_md.h
+@@ -33,7 +33,7 @@
+ #include <unistd.h>
+
+ #ifndef USE_SELECT
+-#include <sys/poll.h>
++#include <poll.h>
+ #endif
+
+ int NET_Timeout(int s, long timeout);
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c
++++ openjdk/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c
+@@ -28,7 +28,7 @@
+ #include "jvm.h"
+ #include "jlong.h"
+ #include "sun_nio_ch_DevPollArrayWrapper.h"
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <unistd.h>
+ #include <sys/time.h>
+
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
++++ openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+@@ -34,7 +34,7 @@
+
+ #ifdef __linux__
+ #include <pthread.h>
+- #include <sys/signal.h>
++ #include <signal.h>
+ /* Also defined in net/linux_close.c */
+ #define INTERRUPT_SIGNAL (SIGRTMAX - 2)
+ #elif __solaris__
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c
++++ openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c
+@@ -23,7 +23,7 @@
+ * questions.
+ */
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <string.h>
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/fs/LinuxWatchService.c
++++ openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxWatchService.c
+@@ -32,7 +32,7 @@
+ #include <dlfcn.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/inotify.h>
+
+ #include "sun_nio_fs_LinuxWatchService.h"
+--- openjdk.orig/jdk/src/solaris/transport/socket/socket_md.c
++++ openjdk/jdk/src/solaris/transport/socket/socket_md.c
+@@ -37,7 +37,7 @@
+ #include <thread.h>
+ #else
+ #include <pthread.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #endif
+
+ #include "socket_md.h"
diff --git a/user/openjdk8/icedtea-jdk-musl.patch b/user/openjdk8/icedtea-jdk-musl.patch
new file mode 100644
index 000000000..97946ba42
--- /dev/null
+++ b/user/openjdk8/icedtea-jdk-musl.patch
@@ -0,0 +1,105 @@
+diff -ru openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
+--- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2017-02-06 11:23:47.041165210 +0000
+@@ -46,6 +46,8 @@
+
+ #include "zip.h"
+
++#define uchar unsigned char
++
+ #ifdef NO_ZLIB
+
+ inline bool jar::deflate_bytes(bytes& head, bytes& tail) {
+diff -ru openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h
+--- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h 2017-02-06 11:23:47.047832009 +0000
+@@ -23,9 +23,7 @@
+ * questions.
+ */
+
+-#define ushort unsigned short
+-#define uint unsigned int
+-#define uchar unsigned char
++#include <sys/types.h>
+
+ struct unpacker;
+
+diff -ru openjdk.orig/jdk/src/share/native/sun/awt/medialib/mlib_types.h openjdk/jdk/src/share/native/sun/awt/medialib/mlib_types.h
+--- openjdk.orig/jdk/src/share/native/sun/awt/medialib/mlib_types.h 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/awt/medialib/mlib_types.h 2017-02-06 11:23:47.047832009 +0000
+@@ -27,6 +27,7 @@
+ #ifndef MLIB_TYPES_H
+ #define MLIB_TYPES_H
+
++#include <stddef.h> /* for NULL */
+ #include <limits.h>
+ #if defined(_MSC_VER)
+ #include <float.h> /* for FLT_MAX and DBL_MAX */
+diff -ru openjdk.orig/jdk/src/solaris/native/java/net/Inet4AddressImpl.c openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
+--- openjdk.orig/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2017-02-06 11:23:47.047832009 +0000
+@@ -47,7 +47,7 @@
+
+ #include "java_net_Inet4AddressImpl.h"
+
+-#if defined(__GLIBC__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104))
++#if defined(__linux__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104))
+ #define HAS_GLIBC_GETHOSTBY_R 1
+ #endif
+
+diff -ru openjdk.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
+--- openjdk.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2017-02-06 11:23:47.047832009 +0000
+@@ -41,7 +41,6 @@
+ #endif
+ #ifdef __linux__
+ #include <unistd.h>
+-#include <sys/sysctl.h>
+ #include <sys/utsname.h>
+ #include <netinet/ip.h>
+
+diff -ru openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c
+--- openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2017-02-06 11:23:47.047832009 +0000
+@@ -43,7 +43,6 @@
+ #endif
+ #ifdef __linux__
+ #include <unistd.h>
+-#include <sys/sysctl.h>
+ #endif
+
+ #include "jvm.h"
+diff -ru openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c openjdk/jdk/src/solaris/native/java/net/linux_close.c
+--- openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/solaris/native/java/net/linux_close.c 2017-02-06 11:23:47.047832009 +0000
+@@ -56,7 +56,7 @@
+ /*
+ * Signal to unblock thread
+ */
+-static int sigWakeup = (__SIGRTMAX - 2);
++static int sigWakeup;
+
+ /*
+ * The fd table and the number of file descriptors
+@@ -95,6 +95,9 @@
+ /*
+ * Setup the signal handler
+ */
++#ifndef __AIX
++ sigWakeup = SIGRTMAX - 2;
++#endif
+ sa.sa_handler = sig_wakeup;
+ sa.sa_flags = 0;
+ sigemptyset(&sa.sa_mask);
+diff -ru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/NativeThread.c openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2017-01-25 04:22:03.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2017-02-06 11:23:47.051165409 +0000
+@@ -36,7 +36,7 @@
+ #include <pthread.h>
+ #include <sys/signal.h>
+ /* Also defined in net/linux_close.c */
+- #define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
++ #define INTERRUPT_SIGNAL (SIGRTMAX - 2)
+ #elif __solaris__
+ #include <thread.h>
+ #include <signal.h>
diff --git a/user/openjdk8/icedtea-jdk-tls-nist-curves.patch b/user/openjdk8/icedtea-jdk-tls-nist-curves.patch
new file mode 100644
index 000000000..75fb3af8c
--- /dev/null
+++ b/user/openjdk8/icedtea-jdk-tls-nist-curves.patch
@@ -0,0 +1,47 @@
+Bug #7404 TLS negotiation error in OpenJDK 8 u131
+
+Fixes an OpenJDK 8 regression discovered in docker-library/openjdk#115
+on Alpine Linux 3.5 (u121) and 3.6 (u131) that causes TLS negotiation
+errors for some clients.
+
+Root cause appears to be OpenJDK announcing support for NIST curves the
+underlying NSS library does doesn't. This patch limits OpenJDK's
+announcement to elliptic curves 23 (secp256r1), 24 (secp384r1), and 25
+(secp521r1).
+
+Related issues:
+
+* https://github.com/docker-library/openjdk/issues/115
+* https://bugs.alpinelinux.org/issues/7404
+* https://access.redhat.com/discussions/2339811
+* https://bugzilla.redhat.com/show_bug.cgi?id=1022017
+* https://bugzilla.redhat.com/show_bug.cgi?id=1348525
+
+--- openjdk.orig/jdk/src/share/classes/sun/security/ssl/EllipticCurvesExtension.java 2017-05-08 20:03:50.000000000 -0700
++++ openjdk/jdk/src/share/classes/sun/security/ssl/EllipticCurvesExtension.java 2017-06-14 13:37:00.000000000 -0700
+@@ -168,21 +168,10 @@
+ "contains no supported elliptic curves");
+ }
+ } else { // default curves
+- int[] ids;
+- if (requireFips) {
+- ids = new int[] {
+- // only NIST curves in FIPS mode
+- 23, 24, 25, 9, 10, 11, 12, 13, 14,
+- };
+- } else {
+- ids = new int[] {
+- // NIST curves first
+- 23, 24, 25, 9, 10, 11, 12, 13, 14,
+- // non-NIST curves
+- 22,
+- };
+- }
+-
++ int[] ids = new int[] {
++ // NSS currently only supports these three NIST curves
++ 23, 24, 25
++ };
+ idList = new ArrayList<>(ids.length);
+ for (int curveId : ids) {
+ if (isAvailableCurve(curveId)) {
diff --git a/user/openjdk8/remove-gawk.patch b/user/openjdk8/remove-gawk.patch
new file mode 100644
index 000000000..f0731bab4
--- /dev/null
+++ b/user/openjdk8/remove-gawk.patch
@@ -0,0 +1,125 @@
+--- icedtea-2.6.16/configure.old 2019-01-01 20:11:07.846602426 +0000
++++ icedtea-2.6.16/configure 2019-02-27 00:23:41.230000000 +0000
+@@ -6881,108 +6881,7 @@
+ LDD="$ac_cv_prog_LDD"
+ fi
+
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}gawk", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}gawk; ac_word=$2
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+-$as_echo_n "checking for $ac_word... " >&6; }
+-if ${ac_cv_path_GAWK+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- case $GAWK in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_GAWK="$GAWK" # Let the user override the test with a path.
+- ;;
+- *)
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_path_GAWK="$as_dir/$ac_word$ac_exec_ext"
+- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+- done
+-IFS=$as_save_IFS
+-
+- ;;
+-esac
+-fi
+-GAWK=$ac_cv_path_GAWK
+-if test -n "$GAWK"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GAWK" >&5
+-$as_echo "$GAWK" >&6; }
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-
+-
+-fi
+-if test -z "$ac_cv_path_GAWK"; then
+- ac_pt_GAWK=$GAWK
+- # Extract the first word of "gawk", so it can be a program name with args.
+-set dummy gawk; ac_word=$2
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+-$as_echo_n "checking for $ac_word... " >&6; }
+-if ${ac_cv_path_ac_pt_GAWK+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- case $ac_pt_GAWK in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_ac_pt_GAWK="$ac_pt_GAWK" # Let the user override the test with a path.
+- ;;
+- *)
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_path_ac_pt_GAWK="$as_dir/$ac_word$ac_exec_ext"
+- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+- done
+-IFS=$as_save_IFS
+-
+- ;;
+-esac
+-fi
+-ac_pt_GAWK=$ac_cv_path_ac_pt_GAWK
+-if test -n "$ac_pt_GAWK"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_GAWK" >&5
+-$as_echo "$ac_pt_GAWK" >&6; }
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-
+- if test "x$ac_pt_GAWK" = x; then
+- GAWK=""
+- else
+- case $cross_compiling:$ac_tool_warned in
+-yes:)
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+-ac_tool_warned=yes ;;
+-esac
+- GAWK=$ac_pt_GAWK
+- fi
+-else
+- GAWK="$ac_cv_path_GAWK"
+-fi
+-
+- if test x"$GAWK" = x ; then
+- as_fn_error $? "The following program was not found on the PATH: gawk" "$LINENO" 5
+- fi
+-
++GAWK="$AWK"
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}perl", so it can be a program name with args.
+--- icedtea-2.6.16/configure.ac.old 2019-01-01 20:09:39.139994680 +0000
++++ icedtea-2.6.16/configure.ac 2019-02-27 00:25:01.960000000 +0000
+@@ -39,9 +39,7 @@
+ IT_FIND_TOOLS([FASTJAR], [fastjar jar])
+ IT_FIND_TOOLS([SED],[gsed sed])
+ AC_CHECK_TOOL([LDD], [ldd])
+-dnl OpenJDK's README-builds.html lists gawk as a build dependency so we
+-dnl check for it explicitly rather than using AC_PROG_AWK.
+-IT_FIND_TOOL([GAWK], [gawk])
++IT_FIND_TOOL([GAWK], [awk])
+ IT_FIND_TOOL([WHICH], [which])
+ IT_FIND_TOOL([PERL], [perl])
+
diff --git a/user/pcsc-lite/APKBUILD b/user/pcsc-lite/APKBUILD
index 3066ad3bc..9746a2d46 100644
--- a/user/pcsc-lite/APKBUILD
+++ b/user/pcsc-lite/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=pcsc-lite
-pkgver=1.8.24
+pkgver=1.8.25
pkgrel=0
pkgdesc="Middleware to access a smart card using SCard API (PC/SC)"
url="https://pcsclite.apdu.fr/"
@@ -64,5 +64,5 @@ dev() {
mv "$subpkgdir"/usr/lib/libpcsclite.so "$pkgdir"/usr/lib/libpcsclite.so
}
-sha512sums="df2e6a7a8179563a6dbf654ab75cf78a4b297b0562214a081d7d2b5d00fd4adf92fd892bd16aacf9d5e2867f3ad46c88a88e5834e311011f37556dd7e8936a0c pcsc-lite-1.8.24.tar.bz2
+sha512sums="0da63cefd70d9524b2afabd62c5f404758c805b84bbe9ef64fb801ef91a8934c38495513022565ea31bd8550b23bc95b9e9b098ddc76930e3d0643c1fbfb5deb pcsc-lite-1.8.25.tar.bz2
6810ab357b5bcf07bf1ad76ed17ebb8e92be4599303a4e697b87a05d43b8d2bec5d3c29d44d8ddb5d031910ea62ca52a9868e6de9a255227eaeb29d1a7ee0041 pcscd.initd"
diff --git a/user/perl-cgi/APKBUILD b/user/perl-cgi/APKBUILD
index 09fca609f..4135379d6 100644
--- a/user/perl-cgi/APKBUILD
+++ b/user/perl-cgi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-cgi
-pkgver=4.40
+pkgver=4.42
pkgrel=0
pkgdesc="Handle CGI requests and responses in Perl"
url="https://metacpan.org/release/CGI"
@@ -31,4 +31,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="317cc410d8cc630067759cc05b8643e0c3fe4e55307c437176892a625b88d46443c3e0ff4361e066c54f95c3573e5fa8c21e23069071fa0dc74fc2d93dca13c1 CGI-4.40.tar.gz"
+sha512sums="caa5402ffe683b38609aab56fdd1388ddecf97fde449e889cecb9ac6ecbb490a08624ea8b9430d59b46c99133608a79fde6cba584d13ca435a201c741a0b472b CGI-4.42.tar.gz"
diff --git a/user/perl-class-inspector/APKBUILD b/user/perl-class-inspector/APKBUILD
index 64423c44a..e2255d2ad 100644
--- a/user/perl-class-inspector/APKBUILD
+++ b/user/perl-class-inspector/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-class-inspector
_pkgname=Class-Inspector
-pkgver=1.32
+pkgver=1.34
pkgrel=0
pkgdesc="Inspect Perl classes and structures"
url="https://metacpan.org/release/Class-Inspector"
@@ -31,4 +31,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="980654614d968e2fb61df864322f5c5248e352f0697a425539600c3549505f47b857d7856bc9d406ebc8757f8fc379a669f1f5085412f6fa48672c9db8a82df4 Class-Inspector-1.32.tar.gz"
+sha512sums="c9f3f3dbc10c45811d0dffca3f31b9579200cd3b5288bb878bf97f38c4c153bb665632e5238ecce55bd3c515200c8d9500d5b1e461a9ea47e5ad011783323a80 Class-Inspector-1.34.tar.gz"
diff --git a/user/perl-datetime-locale/APKBUILD b/user/perl-datetime-locale/APKBUILD
index a70b6872b..829b21dcf 100644
--- a/user/perl-datetime-locale/APKBUILD
+++ b/user/perl-datetime-locale/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-datetime-locale
_pkgname=DateTime-Locale
-pkgver=1.23
+pkgver=1.24
pkgrel=0
pkgdesc="Locale support for Perl DateTime"
url="https://metacpan.org/release/DateTime-Locale"
@@ -35,4 +35,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4404f6e5301b7623253e788b127fd59fffb1a4b24d97878168d8d9244bafb383424b9664ab78dbafe83bbd6cfa3d4686d4a4375a729c8fad157f36905868c884 DateTime-Locale-1.23.tar.gz"
+sha512sums="0510df7e69bc7e50cb301510224cb084bf9d75f072ceb631d7c94ab07a6f7c11b64247c492054c0be3840bf5b13b6981f09426fd0b8e20a48901308cc0b5ffdb DateTime-Locale-1.24.tar.gz"
diff --git a/user/perl-datetime-timezone/APKBUILD b/user/perl-datetime-timezone/APKBUILD
index 9a1b35e06..cccb8ee11 100644
--- a/user/perl-datetime-timezone/APKBUILD
+++ b/user/perl-datetime-timezone/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-datetime-timezone
_pkgname=DateTime-TimeZone
-pkgver=2.23
+pkgver=2.34
pkgrel=0
pkgdesc="Time zone object class and factory for Perl"
url="https://metacpan.org/release/DateTime-TimeZone"
@@ -33,4 +33,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="e2edfde606bea8595df6f6cec9239fe6fe637d2c3ca2eb319da835c71061dab52ae8da0eb67da3d572b371f2e0820a35d681d9876e0c4dc8003e7504bdd41d06 DateTime-TimeZone-2.23.tar.gz"
+sha512sums="8525542dfee39f8b889889db310d455b03dd0f270d391a06c337c46d9d457969e365ebf9b8fa42eef71b1dbf2bbd3e25c1ef710f19701a300729bc1816bcaa0c DateTime-TimeZone-2.34.tar.gz"
diff --git a/user/perl-json-xs/APKBUILD b/user/perl-json-xs/APKBUILD
index 758211fa0..cd09f8f87 100644
--- a/user/perl-json-xs/APKBUILD
+++ b/user/perl-json-xs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-json-xs
-pkgver=4.01
+pkgver=4.02
pkgrel=0
pkgdesc="JSON serialising/deserialising, done correctly and fast"
url="https://metacpan.org/pod/JSON::XS"
@@ -31,4 +31,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="283adfa5b5b0c8e8c0b8d86c92d521695bdc306249be30555cf8f2833b8da7196429c9e1269106a687ef9170051ddd3cbad4f671e97b0fc1e2aa4d73a1a2960f JSON-XS-4.01.tar.gz"
+sha512sums="4a8fdf8d81cdd6e38c3c5672621d38ef6f63a09ca3a74e98fbb21e679273c347d2a3b8c2233c8e813987d2728081fb535223ea3f705d33a7016b76d0e76ffd61 JSON-XS-4.02.tar.gz"
diff --git a/user/perl-lib-relative/APKBUILD b/user/perl-lib-relative/APKBUILD
index daeb17687..b717ab88f 100644
--- a/user/perl-lib-relative/APKBUILD
+++ b/user/perl-lib-relative/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-lib-relative
-pkgver=0.002
+pkgver=1.000
pkgrel=0
pkgdesc="Add paths relative to the current file to Perl @INC"
url="https://metacpan.org/release/lib-relative"
@@ -30,4 +30,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="ebe552fbc4967dd8615e2a1ecde69000358b3909095c66b557a6dd68c1a4744ca586dc91d2cf1b679a57ef981ec79a4689ba9c3f846393f4f48e528e85c326b0 lib-relative-0.002.tar.gz"
+sha512sums="1b4de00abe4ba5190259414123d8cbdde9bf43a525a32d7ef07f7faa3a88ed9d40babbec6f3c49a0a3550c63ffb8cbf79b0c7a6204568549d30145bbd02f8a55 lib-relative-1.000.tar.gz"
diff --git a/user/perl-sub-quote/APKBUILD b/user/perl-sub-quote/APKBUILD
index 778b7f793..d8f15cd71 100644
--- a/user/perl-sub-quote/APKBUILD
+++ b/user/perl-sub-quote/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-sub-quote
-pkgver=2.005001
+pkgver=2.006003
pkgrel=0
pkgdesc="Efficient generation of subroutines via string eval"
url="https://metacpan.org/release/Sub-Quote"
@@ -31,4 +31,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3c32348c8ac6a8831faf75b084a6108657a3cfc0841fda8d8a182c4ca38c88f800bc60a01df07a2010b9a877e120fc46720f17f11092de5e97f40c36854ba24c Sub-Quote-2.005001.tar.gz"
+sha512sums="d486556750fa8cf8152f86204ed2156ff33dd4ba467955c3f9621b67b68acb543f953eb1476297a85d3ee2bc9755072491ad9d34c33a496d5ba5828c687f6d83 Sub-Quote-2.006003.tar.gz"
diff --git a/user/perl-test-differences/APKBUILD b/user/perl-test-differences/APKBUILD
index 56d34bce8..25948de34 100644
--- a/user/perl-test-differences/APKBUILD
+++ b/user/perl-test-differences/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
pkgname=perl-test-differences
-pkgver=0.65
+pkgver=0.67
pkgrel=0
pkgdesc="Test strings and data structures and show differences if not ok"
url="https://metacpan.org/pod/Test::Differences"
@@ -31,4 +31,4 @@ package() {
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="298058b0ca94b865ac84bbed86275e1d2c3f9eadafc70c017d471d39a78a1370112aa63c09ff072621b12b1e6a84e9b456fe05e17d0d2893e2f5fc9946f81b87 Test-Differences-0.65.tar.gz"
+sha512sums="72f5e70d5ed953f50e7fff36645612b8e531354a217de5e7780ee76d72c95e1aed1f1f23a1aaf447b2893246d0c8d0452f2946afa820966d85b2c99dcf9b5ed9 Test-Differences-0.67.tar.gz"
diff --git a/user/pluma/APKBUILD b/user/pluma/APKBUILD
new file mode 100644
index 000000000..4e6d80e39
--- /dev/null
+++ b/user/pluma/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=pluma
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Text editor for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="all"
+options="!check" # tests fail due to schema being requested but not available
+license="GPL-2.0+ AND GPL-2.0-only AND LGPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev gtksourceview-3.0-dev enchant-dev intltool
+ itstool iso-codes-dev libpeas-dev libsm-dev libxml2-dev libxml2-utils"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/pluma-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7c74c2ce0a89ec3813c936449d3114957e7b319433875ef567ecc508a28a1d3ddc3d0da418b2eb1278b6dc9dbaa3c75a279524f5a061b5aecb52955edcf28f51 pluma-1.22.0.tar.xz"
diff --git a/user/pulseaudio/APKBUILD b/user/pulseaudio/APKBUILD
index 9e3f7a565..bacaab731 100644
--- a/user/pulseaudio/APKBUILD
+++ b/user/pulseaudio/APKBUILD
@@ -9,7 +9,7 @@ url="https://www.freedesktop.org/wiki/Software/PulseAudio"
pkgusers="pulse"
pkggroups="pulse pulse-access"
arch="all"
-options="!checkroot"
+options="!check" # Complains about permissions in /var/tmp.
license="LGPL-2.1+"
makedepends="alsa-lib-dev bash bluez-dev check-dev dbus-dev eudev-dev fftw-dev
gconf-dev gtk+3.0-dev intltool libcap-dev libsndfile-dev m4 openssl-dev
diff --git a/user/py3-pygobject/APKBUILD b/user/py3-pygobject/APKBUILD
index 972b0f957..33b068899 100644
--- a/user/py3-pygobject/APKBUILD
+++ b/user/py3-pygobject/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=py3-pygobject
-pkgver=3.30.4
+pkgver=3.32.0
pkgrel=0
pkgdesc="Python bindings for GObject libraries"
url="https://pygobject.readthedocs.io/"
@@ -28,4 +28,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="8c86955033690b199d12e4e853443e4078fc0eb7c2c23599aba1e083b743ae3b6c9e2031c4277c6a1140ac787540639865e743e1504dd15bf160b977b4a8dee5 pygobject-3.30.4.tar.bz2"
+sha512sums="c231c8aa19657a3d2eed7f3c707cfb8c55d37dc828d8046a66e0d8c91b98291ee786115bb29f37cf78c9191e2b640828a72940fad1a27989e6e7ef04d508f379 pygobject-3.32.0.tar.bz2"
diff --git a/user/py3-six/APKBUILD b/user/py3-six/APKBUILD
index b1c4ffadd..94ece5835 100644
--- a/user/py3-six/APKBUILD
+++ b/user/py3-six/APKBUILD
@@ -2,8 +2,8 @@
# Maintainer:
pkgname=py3-six
_pkgname=six
-pkgver=1.11.0
-pkgrel=1
+pkgver=1.12.0
+pkgrel=0
pkgdesc="Python 2 compatibility library"
url="https://pypi.python.org/pypi/six"
arch="noarch"
@@ -30,4 +30,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="f301c6e3c159fc87c121a6b860e4a24fa77ca2d23c3beb29201f7ba0ef71188d683d103fd3f44f50bc774a0682183256ac119e20463d389ebe0f481e2c4711f9 py3-six-1.11.0.tar.gz"
+sha512sums="67f218ec591411b4a460e4e2744083b7e128440a50d006433cd85a7485b3f4bbf37830bee4cfd3e24194e4873f9ad251a62900e2f5fce7429d647b3df14543c3 py3-six-1.12.0.tar.gz"
diff --git a/user/qt5-qtscript/APKBUILD b/user/qt5-qtscript/APKBUILD
index 16237b5c6..4f56a9e7d 100644
--- a/user/qt5-qtscript/APKBUILD
+++ b/user/qt5-qtscript/APKBUILD
@@ -2,14 +2,16 @@
pkgname=qt5-qtscript
_pkgname=qtscript-opensource-src
pkgver=5.9.7
-pkgrel=0
+pkgrel=1
pkgdesc="Qt 5 - Deprecated scripting framework for Qt applications"
url="https://www.qt.io/"
arch="all"
license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
makedepends="qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
+ gcc8.patch
+ "
builddir="$srcdir"/$_pkgname-$pkgver
build() {
@@ -28,4 +30,5 @@ package() {
make INSTALL_ROOT="$pkgdir" install
}
-sha512sums="e019d2e7aa29e1183636503822db960d97f1787fa7517f286acbe42645f2c5daa099cc251ac6640e3243dedb4ef64e509f2e22bca798a7e583063e0ac7635662 qtscript-opensource-src-5.9.7.tar.xz"
+sha512sums="e019d2e7aa29e1183636503822db960d97f1787fa7517f286acbe42645f2c5daa099cc251ac6640e3243dedb4ef64e509f2e22bca798a7e583063e0ac7635662 qtscript-opensource-src-5.9.7.tar.xz
+426174235ab57b14edf58166327372ba215dfce092b9d4cc07686b326c999d4d6348460a75343791de96b6ad7352c393b4a748d0592865e0d78dc119c12657f2 gcc8.patch"
diff --git a/user/qt5-qtscript/gcc8.patch b/user/qt5-qtscript/gcc8.patch
new file mode 100644
index 000000000..2fb04a708
--- /dev/null
+++ b/user/qt5-qtscript/gcc8.patch
@@ -0,0 +1,238 @@
+From 97ec1d1882a83c23c91f0f7daea48e05858d8c32 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Mon, 28 Jan 2019 14:33:12 -0800
+Subject: Fix build with GCC 8.3
+
+Qualifiers in the asm statement are not allowed in the global scope. I
+thought they were necessary for LTO, but I the commit to this file that
+added them predates my work on setting up LTO for GCC.
+
+Change-Id: Id98140e1c2f0426cabbefffd157e23e5ece67a49
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+---
+ .../javascriptcore/JavaScriptCore/jit/JITStubs.cpp | 48 +++++++++++-----------
+ 1 file changed, 24 insertions(+), 24 deletions(-)
+
+diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
+index 1abdf8b..9f60761 100644
+--- a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
++++ b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
+@@ -116,7 +116,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x3c, JITStackFrame_s
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x50, JITStackFrame_code_offset_matches_ctiTrampoline);
+
+-asm volatile (
++asm (
+ ".text\n"
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+ HIDE_SYMBOL(ctiTrampoline) "\n"
+@@ -138,7 +138,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+ HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
+ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+@@ -154,7 +154,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+ HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
+ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+@@ -179,7 +179,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x48, JITStackFrame_s
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x90, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x80, JITStackFrame_code_offset_matches_ctiTrampoline);
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+ HIDE_SYMBOL(ctiTrampoline) "\n"
+ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+@@ -206,7 +206,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+ HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
+ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+@@ -222,7 +222,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+ HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
+ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+@@ -242,7 +242,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+ #error "JIT_STUB_ARGUMENT_VA_LIST not supported on ARMv7."
+ #endif
+
+-asm volatile (
++asm (
+ ".text" "\n"
+ ".align 2" "\n"
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+@@ -269,7 +269,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "bx lr" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".text" "\n"
+ ".align 2" "\n"
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+@@ -287,7 +287,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+ "bx lr" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".text" "\n"
+ ".align 2" "\n"
+ ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+@@ -305,7 +305,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+
+ #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+ HIDE_SYMBOL(ctiTrampoline) "\n"
+ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+@@ -323,7 +323,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "mov pc, lr" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+ HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
+ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+@@ -418,7 +418,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x38, JITStackFrame_
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x30, JITStackFrame_code_offset_matches_ctiTrampoline);
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x1c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+
+-asm volatile (
++asm (
+ ".text\n"
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+ HIDE_SYMBOL(ctiTrampoline) "\n"
+@@ -440,7 +440,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+ HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
+ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+@@ -456,7 +456,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+ HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
+ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+@@ -480,7 +480,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x48, JITStackFrame_code_offset_matches_ctiTrampoline);
+ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x78, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+
+-asm volatile (
++asm (
+ ".text\n"
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+ HIDE_SYMBOL(ctiTrampoline) "\n"
+@@ -515,7 +515,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+ HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
+ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+@@ -531,7 +531,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+ "ret" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+ HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
+ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+@@ -551,7 +551,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+ #error "JIT_STUB_ARGUMENT_VA_LIST not supported on ARMv7."
+ #endif
+
+-asm volatile (
++asm (
+ ".text" "\n"
+ ".align 2" "\n"
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+@@ -578,7 +578,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "bx lr" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".text" "\n"
+ ".align 2" "\n"
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+@@ -596,7 +596,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+ "bx lr" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".text" "\n"
+ ".align 2" "\n"
+ ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+@@ -614,7 +614,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+
+ #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
+
+-asm volatile (
++asm (
+ ".text\n"
+ ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+ HIDE_SYMBOL(ctiTrampoline) "\n"
+@@ -632,7 +632,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "mov pc, lr" "\n"
+ );
+
+-asm volatile (
++asm (
+ ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+ HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
+ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+@@ -1024,7 +1024,7 @@ static NEVER_INLINE void throwStackOverflowError(CallFrame* callFrame, JSGlobalD
+ extern "C" { \
+ rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
+ }; \
+- asm volatile ( \
++ asm ( \
+ ".text" "\n" \
+ ".align 2" "\n" \
+ ".globl " SYMBOL_STRING(cti_##op) "\n" \
+@@ -1053,7 +1053,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, thunkReturnAddress) == THUNK_RETUR
+ extern "C" { \
+ rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
+ }; \
+- asm volatile ( \
++ asm ( \
+ ".globl " SYMBOL_STRING(cti_##op) "\n" \
+ HIDE_SYMBOL(cti_##op) "\n" \
+ SYMBOL_STRING(cti_##op) ":" "\n" \
+--
+cgit v1.2.1
+
diff --git a/user/qt5ct/APKBUILD b/user/qt5ct/APKBUILD
index faf9c6455..e32542954 100644
--- a/user/qt5ct/APKBUILD
+++ b/user/qt5ct/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=qt5ct
-pkgver=0.37
+pkgver=0.38
pkgrel=0
pkgdesc="GUI utility for configuring Qt5"
url="https://sourceforge.net/projects/qt5ct/"
@@ -23,4 +23,4 @@ package() {
make INSTALL_ROOT="$pkgdir" install
}
-sha512sums="685716b2e756ff433f5092cda981ef665ca5a44ad009745f51b38278c3d8eed6939fc52c6cf1f09046ab0a3910261892d7cf5250360874e2d7e4f12bff692da7 qt5ct-0.37.tar.bz2"
+sha512sums="0c33beca5103f6c01fceabffea50df5798f055b1e530fc084b294917d8bfa6ea78db72385e8941fe92164c682a069b166c69595e2e06bc62be0595a3718a7323 qt5ct-0.38.tar.bz2"
diff --git a/user/sane/APKBUILD b/user/sane/APKBUILD
index 1d7322866..1a5e2fc16 100644
--- a/user/sane/APKBUILD
+++ b/user/sane/APKBUILD
@@ -36,7 +36,7 @@ for _backend in $_backends; do
done
subpackages="$pkgname-doc $pkgname-dev $subpackages $pkgname-utils saned
$pkgname-udev::noarch $_pkgname::noarch"
-source="https://distfiles.gentoo.org/distfiles/$_pkgname-$pkgver.tar.gz
+source="http://distfiles.gentoo.org/distfiles/$_pkgname-$pkgver.tar.gz
saned.initd
include.patch
network.patch
diff --git a/user/sassc/APKBUILD b/user/sassc/APKBUILD
index dcda892bb..ee082659f 100644
--- a/user/sassc/APKBUILD
+++ b/user/sassc/APKBUILD
@@ -4,7 +4,7 @@ pkgname=sassc
pkgver=3.5.0
pkgrel=0
pkgdesc="CSS preprocessor and extension language compiler"
-url="http://sass-lang.com/"
+url="https://sass-lang.com/"
arch="all"
license="MIT"
depends=""
diff --git a/user/smake/APKBUILD b/user/smake/APKBUILD
deleted file mode 100644
index 809060c9b..000000000
--- a/user/smake/APKBUILD
+++ /dev/null
@@ -1,35 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=smake
-pkgver=1.2.5
-pkgrel=0
-pkgdesc="Highly portable Unix make implementation"
-url="https://sourceforge.net/projects/s-make/"
-arch="all"
-options="!check" # No test suite.
-license="CDDL-1.0 AND GPL-2.0-only"
-depends=""
-makedepends=""
-subpackages="$pkgname-doc"
-source="https://download.sourceforge.net/s-make/smake-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- sed -i -e "s|opt/schily|usr|" \
- $(find ./ -type f -name \*.[0-9ch] -exec grep -l 'opt/schily' '{}' '+')
-}
-
-build() {
- cd "$builddir"
- export MAKEFLAGS=""
- make INS_BASE=/usr
-}
-
-package() {
- cd "$builddir"
- export MAKEFLAGS=""
- make INS_BASE=/usr DESTDIR="$pkgdir" install
-}
-
-sha512sums="15131f57942d6ea611602afa1f3d3d3d1892b0e7f0f6e5b1ace7f69f1acb7bd09403b8c70e380204cff75512f5824daef81d59205d758c93f2583b40caa873a8 smake-1.2.5.tar.bz2"
diff --git a/user/spice/APKBUILD b/user/spice/APKBUILD
index 4ca90937f..2d7e1b52c 100644
--- a/user/spice/APKBUILD
+++ b/user/spice/APKBUILD
@@ -6,6 +6,7 @@ pkgrel=0
pkgdesc="Solution for seamless access to virtual machines"
url="https://www.spice-space.org/"
arch="all"
+options="!check" # Tests only pass on 64-bit architectures.
license="LGPL-2.1+"
depends="gst-plugins-base"
makedepends="$depends_dev openssl-dev zlib-dev libjpeg-turbo-dev cyrus-sasl-dev
diff --git a/user/tigervnc/0002-vncviewer-Ensure-buffer-always-has-0-termination.patch b/user/tigervnc/0002-vncviewer-Ensure-buffer-always-has-0-termination.patch
deleted file mode 100644
index 3072ca020..000000000
--- a/user/tigervnc/0002-vncviewer-Ensure-buffer-always-has-0-termination.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From f01feaa6d235b40e659bf808ce66acc2b9a93da1 Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Wed, 20 Mar 2019 13:28:36 -0500
-Subject: [PATCH 2/2] vncviewer: Ensure buffer always has \0 termination
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Building from the 1.9.0 tarball using GCC 8.3.0 on Linux yields the following:
-
-tigervnc-1.9.0/vncviewer/vncviewer.cxx: In function ‘int main(int, char**)’:
-tigervnc-1.9.0/vncviewer/vncviewer.cxx:527:14: error: ‘char* strncpy(char*, const char*, size_t)’ specified bound 64 equals destination size [-Werror=stringop-truncation]
- strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN);
- ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In function ‘void potentiallyLoadConfigurationFile(char*)’,
- inlined from ‘int main(int, char**)’ at tigervnc-1.9.0/vncviewer/vncviewer.cxx:557:35:
-tigervnc-1.9.0/vncviewer/vncviewer.cxx:396:14: error: ‘char* strncpy(char*, const char*, size_t)’ specified bound 64 equals destination size [-Werror=stringop-truncation]
- strncpy(vncServerName, newServerName, VNCSERVERNAMELEN);
- ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This commit ensures the buffer always has the null terminator.
----
- vncviewer/vncviewer.cxx | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
-index d2fe7e00..8ccfe563 100644
---- a/vncviewer/vncviewer.cxx
-+++ b/vncviewer/vncviewer.cxx
-@@ -402,7 +402,7 @@ potentiallyLoadConfigurationFile(char *vncServerName)
- newServerName = loadViewerParameters(vncServerName);
- // This might be empty, but we still need to clear it so we
- // don't try to connect to the filename
-- strncpy(vncServerName, newServerName, VNCSERVERNAMELEN);
-+ strncpy(vncServerName, newServerName, VNCSERVERNAMELEN-1);
- } catch (rfb::Exception& e) {
- vlog.error("%s", e.str());
- if (alertOnFatalError)
-@@ -533,7 +533,7 @@ int main(int argc, char** argv)
- const char* configServerName;
- configServerName = loadViewerParameters(NULL);
- if (configServerName != NULL)
-- strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN);
-+ strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN-1);
- } catch (rfb::Exception& e) {
- vlog.error("%s", e.str());
- if (alertOnFatalError)
---
-2.19.2
-
diff --git a/user/tigervnc/APKBUILD b/user/tigervnc/APKBUILD
index 59da8dae1..1bbfcb8dc 100644
--- a/user/tigervnc/APKBUILD
+++ b/user/tigervnc/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=tigervnc
pkgver=1.9.0
-pkgrel=2
+pkgrel=3
pkgdesc="High-performance, platform-neutral VNC remote desktop application"
url="https://tigervnc.org/"
arch="all"
@@ -17,7 +17,8 @@ source="tigervnc-$pkgver.tar.gz::https://github.com/TigerVNC/tigervnc/archive/v$
use-intltool.patch
endian.patch
0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch
- 0002-vncviewer-Ensure-buffer-always-has-0-termination.patch
+ null-termination.patch
+ initialise-var.patch
"
build() {
@@ -45,4 +46,5 @@ sha512sums="333910f567e6b5e4a5a22d898b2d4c3f4b834cb4cc8fc13ff55d31401894c0d5122a
5c1cee98b7ba41c7cf121480fdfe16d5ef17c9562ff2ba3ea4e74235161fc63e2e3ed63e788c0aa999610b660b394c1269d6fdcc9716c5563651fd67d723f619 use-intltool.patch
189a51a542b368e4db22174d09f5b656848e94577bbf93b2388f54529f1c7c2d32e5b5283551b3fb067ba21f6464f60989e22d4cd11ed3d87d5c931301555b49 endian.patch
f95328f6b669e6608b9971de3db25d5eb26a733fbe32f13291c309ed57eacba6c86461a516c3b8cdc12ff7482ee0249a45189864d473d52df81df0a3541d95b9 0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch
-f7282c7c12e51878540be7dd45b9a00ea5d54fa13fe0cfe90f003c1b36f410ce023dfa64c64d1fb3923955c6459d25e1afe7b504651b4e9e8a2f6f9ac9e51b83 0002-vncviewer-Ensure-buffer-always-has-0-termination.patch"
+82566734e5288e899048b918ce47f5abc3b94196e88d54fa0b0ef68c20d1fcd9d5854f36a0043d28f81dc6213c9ee8cf55fb187aeeb8add5fc31765f6a5b23bb null-termination.patch
+a7fb612d7e3625b66db66ffc7e3f28f2e47f79b858ff1fd9e403576ef2b8ff7bc8cf83a6f67439de6242e4a11a0144119d040f8f9e917e17a8af512b47067360 initialise-var.patch"
diff --git a/user/tigervnc/initialise-var.patch b/user/tigervnc/initialise-var.patch
new file mode 100644
index 000000000..f58a4dadc
--- /dev/null
+++ b/user/tigervnc/initialise-var.patch
@@ -0,0 +1,24 @@
+From 44cf1d64ecf80c061c0a2b0f0167094e58782102 Mon Sep 17 00:00:00 2001
+From: Pierre Ossman <ossman@cendio.se>
+Date: Mon, 25 Mar 2019 16:14:49 +0100
+Subject: [PATCH] Don't use un-initialized stride to base constructor
+
+We can use a dummy value here as we set up the buffer and stride
+further down in the constructor.
+---
+ vncviewer/PlatformPixelBuffer.cxx | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vncviewer/PlatformPixelBuffer.cxx b/vncviewer/PlatformPixelBuffer.cxx
+index 1e9803eb2..ff1935e74 100644
+--- a/vncviewer/PlatformPixelBuffer.cxx
++++ b/vncviewer/PlatformPixelBuffer.cxx
+@@ -36,7 +36,7 @@ static rfb::LogWriter vlog("PlatformPixelBuffer");
+ PlatformPixelBuffer::PlatformPixelBuffer(int width, int height) :
+ FullFramePixelBuffer(rfb::PixelFormat(32, 24, false, true,
+ 255, 255, 255, 16, 8, 0),
+- width, height, 0, stride),
++ width, height, NULL, 0),
+ Surface(width, height)
+ #if !defined(WIN32) && !defined(__APPLE__)
+ , shminfo(NULL), xim(NULL)
diff --git a/user/tigervnc/null-termination.patch b/user/tigervnc/null-termination.patch
new file mode 100644
index 000000000..e80a4f62d
--- /dev/null
+++ b/user/tigervnc/null-termination.patch
@@ -0,0 +1,39 @@
+From 7240f62ddc06643f982456c05c11d8afe5422069 Mon Sep 17 00:00:00 2001
+From: Pierre Ossman <ossman@cendio.se>
+Date: Tue, 26 Mar 2019 11:11:20 +0100
+Subject: [PATCH] Handle server name overflow properly
+
+We need to make sure it is null terminated on truncation. We also
+need to avoid giving a too large size argument or modern gcc will
+complain.
+---
+ vncviewer/vncviewer.cxx | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
+index d7cbd6e36..4a8370b95 100644
+--- a/vncviewer/vncviewer.cxx
++++ b/vncviewer/vncviewer.cxx
+@@ -411,7 +411,8 @@ potentiallyLoadConfigurationFile(char *vncServerName)
+ newServerName = loadViewerParameters(vncServerName);
+ // This might be empty, but we still need to clear it so we
+ // don't try to connect to the filename
+- strncpy(vncServerName, newServerName, VNCSERVERNAMELEN);
++ strncpy(vncServerName, newServerName, VNCSERVERNAMELEN-1);
++ vncServerName[VNCSERVERNAMELEN-1] = '\0';
+ } catch (rfb::Exception& e) {
+ vlog.error("%s", e.str());
+ if (alertOnFatalError)
+@@ -541,8 +542,10 @@ int main(int argc, char** argv)
+ try {
+ const char* configServerName;
+ configServerName = loadViewerParameters(NULL);
+- if (configServerName != NULL)
+- strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN);
++ if (configServerName != NULL) {
++ strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN-1);
++ defaultServerName[VNCSERVERNAMELEN-1] = '\0';
++ }
+ } catch (rfb::Exception& e) {
+ vlog.error("%s", e.str());
+ if (alertOnFatalError)
diff --git a/user/unicode-data/APKBUILD b/user/unicode-data/APKBUILD
new file mode 100644
index 000000000..5cbd55565
--- /dev/null
+++ b/user/unicode-data/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=unicode-data
+pkgver=12.0.0
+pkgrel=0
+pkgdesc="Unicode data files"
+url="https://unicode.org"
+arch="noarch"
+options="!check" # no testsuite
+license="Unicode-TOU"
+depends=""
+makedepends=""
+source="https://unicode.org/Public/$pkgver/ucd/Blocks.txt
+ https://unicode.org/Public/$pkgver/ucd/DerivedAge.txt
+ https://unicode.org/Public/$pkgver/ucd/NamesList.txt
+ https://unicode.org/Public/$pkgver/ucd/Scripts.txt
+ https://unicode.org/Public/$pkgver/ucd/UnicodeData.txt
+ https://unicode.org/Public/$pkgver/ucd/Unihan.zip
+ "
+
+package() {
+ cd "$srcdir"
+ mkdir -p "$pkgdir"/usr/share/unicode/$pkgver
+ install -m644 -t "$pkgdir"/usr/share/unicode/$pkgver \
+ Blocks.txt \
+ DerivedAge.txt \
+ NamesList.txt \
+ Scripts.txt \
+ UnicodeData.txt \
+ Unihan.zip
+}
+
+sha512sums="e3ead1233c29a13d46ffcc4b1c8b685144444579fb9231189f2724d9161adcdba39e9dd468c2d791af32538aa6d3f39f1e3f19c6d73eab432ac006526dc6c3ae Blocks.txt
+2cfe840bd5c72a7a47a15123e936cf96677ad66e2caecb7f580b98de83054a17cf49cd26b6470084979bdb3cf8818ea9799dab220108b7bf3a813f65bb1ed86e DerivedAge.txt
+de087e89be129928de87ebb9370f95ab9964c491a41f306791884c6d0452407b8530b7d47804cb3f0442e29d4c98d84867c82c90b46f3fbc1a7ee3fb6ce97005 NamesList.txt
+d25c87b58df3096d1dc26a81edc01eb1d08c62510b38854683ca91978a2a4df12ca0b29731c8d0211555387da604b5e8da7d5f5a5f9d57052f1bc502ecd2154e Scripts.txt
+be1844662041d022c57c2f81b971d395a0ba3a5824de4a5c1c8076ed66955f590a9d624d8abc189a66b7d35ba7fa7d63be727e8bdd9c3dff01251a34f2b84729 UnicodeData.txt
+7fdefad078284c14a9105655d1cb4d2b0dc1c89c56effe92ffcbd5a30b325559a56d97574b6077144d7a4ed02df6e6a402a2a5360e4abc0c84bae5c589044375 Unihan.zip"
diff --git a/user/unifont/APKBUILD b/user/unifont/APKBUILD
index fc71d4326..70182158c 100644
--- a/user/unifont/APKBUILD
+++ b/user/unifont/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Breno Leitao <breno.leitao@gmail.com>
# Maintainer:
pkgname=unifont
-pkgver=11.0.03
+pkgver=12.0.01
pkgrel=0
pkgdesc="GNU font package with all Unicode 11 characters"
url="http://unifoundry.com/unifont.html"
@@ -24,4 +24,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fd24e48630acb4bac5e3a05aa541c5c93cbdda95ce162f62e05bc860a686f025e67af3c2e577bf96991119b70b2e3a0d1ef170466af3b8037df5a7014d009982 unifont-11.0.03.tar.gz"
+sha512sums="e44678acbf696d0529f3c2fe7fe796d3d6908a54b8eaa3f7cd5717d5bebc2698aed7f4e5cde4a954330d8bcaac6a5886839afb854d271ac3a03b460f774215c1 unifont-12.0.01.tar.gz"
diff --git a/user/v4l-utils/APKBUILD b/user/v4l-utils/APKBUILD
index 389c4f9ad..bf53d6890 100644
--- a/user/v4l-utils/APKBUILD
+++ b/user/v4l-utils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer:
pkgname=v4l-utils
-pkgver=1.16.3
+pkgver=1.16.4
pkgrel=0
pkgdesc="Userspace tools and conversion library for Video 4 Linux"
url="https://www.linuxtv.org/wiki/index.php/V4l-utils"
@@ -76,7 +76,7 @@ ir_keytable() {
"$subpkgdir"/etc
}
-sha512sums="404672d18d94861c6957ea3a15a6a48f238d3859940810952a5a8cc33b57f1a360d1a19af28405c01b073c0ece90c5995a71dbe6544b30bdb8eace7daeb4bc0b v4l-utils-1.16.3.tar.bz2
+sha512sums="451e3af203b43fcf9fc61e00a236c030c932eabc0b749269277fc42da05464a2b74581255e7d9bbbac35b43ece318b640c3fde8d074c71723a3594a27ee982ff v4l-utils-1.16.4.tar.bz2
bc18280046c15b19984103f7c2bb44a0aea79715803c64f0c64bc932499c09022c956914c3b15ae59499adc09f6fbff5378be45707fe851250f495a26b63d682 qv4l2.svg
6f74aa524b3de420eeb8de788ff3f717020732a3f1f6530caee50e63aae7eddbe5f551ffc50065c9f5d6078c13bace089948ecdcacf01f8b82c1a44960e06315 qv4l2.desktop
9a4f6d0a44d30bb7afe4db8b40074d362f240cae1f1b13feb0eb2b1b666479fc6f73ef27542f6f80fb1b922c9540feadc9ff8563890ff3041d3f7fc62e504e29 getsubopt.patch"
diff --git a/user/vala/APKBUILD b/user/vala/APKBUILD
index e8bbd399e..8e158fa96 100644
--- a/user/vala/APKBUILD
+++ b/user/vala/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=vala
-pkgver=0.44.0
+pkgver=0.44.1
pkgrel=0
pkgdesc="Compiler for the Vala programming language"
url="https://wiki.gnome.org/Projects/Vala"
@@ -30,4 +30,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1c2e962e849fbf7f3a2be56cca3f26770f6f754f403f7ff7dc8a7ed28bba212d3b704313e02cce86a27432b9b3b918009f59155398ca3be26afc698cc3952b3d vala-0.44.0.tar.xz"
+sha512sums="319b97dc5a28fffb5ef6bf2c8bde6b47c72066746fe468f8a1b7e5df978c027853cdef2224c77998f9dc2a418eb1087d1337e3a56ebe3807b744d110618fb6ca vala-0.44.1.tar.xz"
diff --git a/user/vte/APKBUILD b/user/vte/APKBUILD
index 0808c026e..b952f4959 100644
--- a/user/vte/APKBUILD
+++ b/user/vte/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=vte
-pkgver=0.54.3
-pkgrel=1
+pkgver=0.56.0
+pkgrel=0
pkgdesc="Virtual terminal emulator library for Gnome"
url="https://www.gnome.org"
arch="all"
@@ -10,9 +10,8 @@ license="LGPL-2.1+ AND GPL-3.0+ AND LGPL-3.0+ AND MIT AND LGPL-2.0+"
makedepends="intltool gtk+3.0-dev gnutls-dev zlib-dev pcre2-dev
gobject-introspection-dev vala vala-dev libxml2-utils"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.gnome.org/sources/vte/0.54/vte-$pkgver.tar.xz
+source="https://download.gnome.org/sources/vte/${pkgver%.*}/vte-$pkgver.tar.xz
exitcode.patch
- vala.patch
"
build() {
@@ -34,6 +33,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="dd7d2ac361ed9ac0550599bb3164a3bd6ba95535275c9b559c81ce0af1bbf4b3d150a7489f987b2e626b32d4a8adc82d1ff78e8c8640e5b1c036fe4076c5d8ce vte-0.54.3.tar.xz
-4987254439a136f66a7b7be1300f5efbf85db74bdb64fdd8d0c9a555173a172b4fd519174f932e73d58a2618ef37273e82fe681bb129891f2792a414025f6c61 exitcode.patch
-6f699507326dcef82ab2eb1b94eb0a21255e90053d27db24c38e0dd1ec389ed7710b8032b4c12374448b59ff5b73852bbdd5ce0f5e5cdd4c84be290c7203aafc vala.patch"
+sha512sums="f366ed4a28a896ba919184b50a55ee110eae43127847f34c049684bcb9b81327d1b72e9d871b2a5b7f7fa12f3f4aa721ac3d770770b600dca9c433cb2c674915 vte-0.56.0.tar.xz
+4987254439a136f66a7b7be1300f5efbf85db74bdb64fdd8d0c9a555173a172b4fd519174f932e73d58a2618ef37273e82fe681bb129891f2792a414025f6c61 exitcode.patch"
diff --git a/user/vte/vala.patch b/user/vte/vala.patch
deleted file mode 100644
index fe07dbbf0..000000000
--- a/user/vte/vala.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 53690d5cee51bdb7c3f7680d3c22b316b1086f2c Mon Sep 17 00:00:00 2001
-From: Rico Tzschichholz <ricotz@ubuntu.com>
-Date: Sat, 1 Dec 2018 19:04:59 +0100
-Subject: [PATCH] vala: Fix build with vala 0.43+ git master due to empty
- struct definition
-
-This should get a proper refactoring as the FIXME suggests.
-
-See https://gitlab.gnome.org/GNOME/vte/issues/76
----
- bindings/vala/app.vala | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/bindings/vala/app.vala b/bindings/vala/app.vala
-index 8663d63c..a534e76b 100644
---- a/bindings/vala/app.vala
-+++ b/bindings/vala/app.vala
-@@ -819,6 +819,8 @@ class App : Gtk.Application
-
- public struct Options
- {
-+ //FIXME Merge this struct into App class
-+ public int dummy;
- public static bool audible = false;
- public static string? command = null;
- private static string? cjk_ambiguous_width_string = null;
---
-2.18.1
-
diff --git a/user/wireguard-module-power8-64k/APKBUILD b/user/wireguard-module-power8-64k/APKBUILD
index 0e08c993f..ed1fa1ba3 100644
--- a/user/wireguard-module-power8-64k/APKBUILD
+++ b/user/wireguard-module-power8-64k/APKBUILD
@@ -3,7 +3,7 @@
# KEEP THIS IN SYNC with the other wireguard-module packages.
_kflavour="-power8-64k"
_kver="4.14.88-mc13"
-pkgver=0.0.20190227
+pkgver=0.0.20190406
pkgrel=0
_pkgname="wireguard-module$_kflavour"
pkgname="$_pkgname-$_kver"
@@ -29,4 +29,4 @@ package() {
make -C src DEPMOD=true KERNELDIR="/usr/src/linux-$_kver$_kflavour" INSTALL_MOD_PATH="$pkgdir" module-install
}
-sha512sums="0c27353f27d7ae758cab84a02f63863681baa5eab2b64aa494be30c411b4dccc3af030b410dbfb72342fb5ea34be04f2d3b36ad0bb6a418d9f389ac34384eca3 WireGuard-0.0.20190227.tar.xz"
+sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
diff --git a/user/wireguard-module-power8/APKBUILD b/user/wireguard-module-power8/APKBUILD
index 6ea11b28c..260d22029 100644
--- a/user/wireguard-module-power8/APKBUILD
+++ b/user/wireguard-module-power8/APKBUILD
@@ -3,7 +3,7 @@
# KEEP THIS IN SYNC with the other wireguard-module packages.
_kflavour="-power8"
_kver="4.14.88-mc13"
-pkgver=0.0.20190227
+pkgver=0.0.20190406
pkgrel=0
_pkgname="wireguard-module$_kflavour"
pkgname="$_pkgname-$_kver"
@@ -29,4 +29,4 @@ package() {
make -C src DEPMOD=true KERNELDIR="/usr/src/linux-$_kver$_kflavour" INSTALL_MOD_PATH="$pkgdir" module-install
}
-sha512sums="0c27353f27d7ae758cab84a02f63863681baa5eab2b64aa494be30c411b4dccc3af030b410dbfb72342fb5ea34be04f2d3b36ad0bb6a418d9f389ac34384eca3 WireGuard-0.0.20190227.tar.xz"
+sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
diff --git a/user/wireguard-module/APKBUILD b/user/wireguard-module/APKBUILD
index b85581303..4bb25ae3e 100644
--- a/user/wireguard-module/APKBUILD
+++ b/user/wireguard-module/APKBUILD
@@ -3,7 +3,7 @@
# KEEP THIS IN SYNC with the other wireguard-module packages.
_kflavour=""
_kver="4.14.88-mc13"
-pkgver=0.0.20190227
+pkgver=0.0.20190406
pkgrel=0
_pkgname="wireguard-module$_kflavour"
pkgname="$_pkgname-$_kver"
@@ -29,4 +29,4 @@ package() {
make -C src DEPMOD=true KERNELDIR="/usr/src/linux-$_kver$_kflavour" INSTALL_MOD_PATH="$pkgdir" module-install
}
-sha512sums="0c27353f27d7ae758cab84a02f63863681baa5eab2b64aa494be30c411b4dccc3af030b410dbfb72342fb5ea34be04f2d3b36ad0bb6a418d9f389ac34384eca3 WireGuard-0.0.20190227.tar.xz"
+sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
diff --git a/user/wireguard-tools/APKBUILD b/user/wireguard-tools/APKBUILD
index c14471f7f..493da9d37 100644
--- a/user/wireguard-tools/APKBUILD
+++ b/user/wireguard-tools/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Luis Ressel <aranea@aixah.de>
pkgname=wireguard-tools
_pkgreal=WireGuard
-pkgver=0.0.20190227
+pkgver=0.0.20190406
pkgrel=0
pkgdesc="Userland tools for the WireGuard VPN"
url="https://www.wireguard.com/"
@@ -43,4 +43,4 @@ _patch() {
}
-sha512sums="0c27353f27d7ae758cab84a02f63863681baa5eab2b64aa494be30c411b4dccc3af030b410dbfb72342fb5ea34be04f2d3b36ad0bb6a418d9f389ac34384eca3 WireGuard-0.0.20190227.tar.xz"
+sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
diff --git a/user/wpa_supplicant/APKBUILD b/user/wpa_supplicant/APKBUILD
index ba297f885..240fb474c 100644
--- a/user/wpa_supplicant/APKBUILD
+++ b/user/wpa_supplicant/APKBUILD
@@ -8,8 +8,8 @@ url="https://w1.fi/wpa_supplicant/"
arch="all"
license="BSD-3-Clause AND Public-Domain AND (GPL-2.0+ OR BSD-3-Clause)"
options="!check" # No test suite
-subpackages="$pkgname-doc $pkgname-openrc wpa_gui"
-depends="dbus"
+subpackages="$pkgname-dbus::noarch $pkgname-doc $pkgname-openrc wpa_gui"
+depends=""
makedepends="linux-headers openssl-dev dbus-dev libnl3-dev qt5-qtbase-dev"
source="http://w1.fi/releases/$pkgname-$pkgver.tar.gz
rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch
@@ -72,15 +72,6 @@ package() {
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 \
@@ -91,6 +82,20 @@ package() {
ln -s ../sbin/wpa_cli "$pkgdir"/bin/wpa_cli
}
+dbus() {
+ pkgdesc="$pkgdesc (dbus services)"
+ depends="$pkgname dbus"
+ install_if="$pkgname=$pkgver-r$pkgrel dbus"
+
+ cd "$builddir/wpa_supplicant/dbus"
+ install -d "$subpkgdir"/etc/dbus-1/system.d
+ install -m644 dbus-wpa_supplicant.conf \
+ "$subpkgdir"/etc/dbus-1/system.d/wpa_supplicant.conf
+ install -d "$subpkgdir"/usr/share/dbus-1/system-services
+ install fi.epitest.hostap.WPASupplicant.service \
+ "$subpkgdir"/usr/share/dbus-1/system-services
+}
+
wpa_gui() {
pkgdesc="Graphical User Interface for wpa_supplicant"
depends="$pkgname"
diff --git a/user/xf86-video-intel/APKBUILD b/user/xf86-video-intel/APKBUILD
index d65be06d8..6727ce394 100644
--- a/user/xf86-video-intel/APKBUILD
+++ b/user/xf86-video-intel/APKBUILD
@@ -14,7 +14,9 @@ depends="mesa-dri-intel"
makedepends="xorg-server-dev libxi-dev libdrm-dev mesa-dev libxvmc-dev
xcb-util-dev eudev-dev util-macros autoconf automake libtool xorgproto
"
-source="https://dev.sick.bike/$pkgname-$pkgver.tar.gz"
+source="https://dev.sick.bike/$pkgname-$pkgver.tar.gz
+ pmmx.patch
+ "
giturl="https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel.git"
reporev="3d395062ce73f85e8340218df01c2ebf4bc25023"
@@ -44,4 +46,5 @@ package() {
rm "$pkgdir"/usr/libexec/xf86-video-intel-backlight-helper
}
-sha512sums="a96e627ed1b3fb6b66f02caaafb0f94967df9a2409158aacc9d8958538ef47bd84176ce71a4785f21944beb764450b1560c6dc59eef435f75959e27704be41f1 xf86-video-intel-2.99.917_git20180803.tar.gz"
+sha512sums="a96e627ed1b3fb6b66f02caaafb0f94967df9a2409158aacc9d8958538ef47bd84176ce71a4785f21944beb764450b1560c6dc59eef435f75959e27704be41f1 xf86-video-intel-2.99.917_git20180803.tar.gz
+13694f8829ec59773f764817467052d5d4b93b5de16d8cdacc08ced48608b46008414be1f5f118e5f327c401541477c3418f510ada9cfb290a11ac2e5590b0f3 pmmx.patch"
diff --git a/user/xf86-video-intel/pmmx.patch b/user/xf86-video-intel/pmmx.patch
new file mode 100644
index 000000000..7edddfb96
--- /dev/null
+++ b/user/xf86-video-intel/pmmx.patch
@@ -0,0 +1,13 @@
+diff --git a/src/sna/compiler.h b/src/sna/compiler.h
+index 0f3775ec..c4056913 100644
+--- a/src/sna/compiler.h
++++ b/src/sna/compiler.h
+@@ -32,7 +32,7 @@
+ #define likely(expr) (__builtin_expect (!!(expr), 1))
+ #define unlikely(expr) (__builtin_expect (!!(expr), 0))
+ #define noinline __attribute__((noinline))
+-#define force_inline inline __attribute__((always_inline))
++#define force_inline inline
+ #define fastcall __attribute__((regparm(3)))
+ #define must_check __attribute__((warn_unused_result))
+ #define constant __attribute__((const))
diff --git a/user/xfce4-screenshooter/APKBUILD b/user/xfce4-screenshooter/APKBUILD
index 47e3f889b..9a11eea79 100644
--- a/user/xfce4-screenshooter/APKBUILD
+++ b/user/xfce4-screenshooter/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=xfce4-screenshooter
-pkgver=1.9.3
+pkgver=1.9.4
pkgrel=0
pkgdesc="Screenshot tool for the XFCE desktop environment"
url="https://xfce.org"
@@ -10,7 +10,6 @@ license="GPL-2.0+"
makedepends="intltool libxfce4ui-dev xfce4-panel-dev libsoup-dev exo-dev"
subpackages="$pkgname-doc"
source="http://archive.xfce.org/src/apps/xfce4-screenshooter/1.9/xfce4-screenshooter-$pkgver.tar.bz2"
-sha512sums="ba59fdca3900143a50b3b858986b1152d4574d302d2e041a5287933427a67f64542ca691c130030937344433ea893a1f082086f9c02a9edccaeedbdc0a2a50a2 xfce4-screenshooter-1.9.3.tar.bz2"
build() {
cd "$builddir"
@@ -34,3 +33,4 @@ package() {
make DESTDIR="$pkgdir" install
}
+sha512sums="9f7240aafe8662cc8a8e105602ba26b31ea212ab4e74f55a4a3c80acf06f0316fe5376430c91a6a0b8e43e85763ca6df6a8af5f64c142c1ca3cce2f8ec3c31f9 xfce4-screenshooter-1.9.4.tar.bz2"
diff --git a/user/xfce4-whiskermenu-plugin/APKBUILD b/user/xfce4-whiskermenu-plugin/APKBUILD
index 726611224..b562d6126 100644
--- a/user/xfce4-whiskermenu-plugin/APKBUILD
+++ b/user/xfce4-whiskermenu-plugin/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=xfce4-whiskermenu-plugin
-pkgver=2.3.1
+pkgver=2.3.2
_pkgmaj=${pkgver%.*}
pkgrel=0
pkgdesc="Whisker menu plugin for the XFCE panel"
@@ -34,4 +34,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f09a3a496aec5c29e6604657c0eb6dbc1bab731b56b34067dfe2548670dd4837741c55ebbb9f98505c6569effee170936cdd48dd0d79947d50b17f85410a38ea xfce4-whiskermenu-plugin-2.3.1.tar.bz2"
+sha512sums="2b9557b29d1b30b5d46df5f182d64562873defd59cd36e6444da4b73bbdf3835cfb17101f11a3ac6e9f875a9dc4d51e2301a420a888bfa1d7fdc6ae715d92443 xfce4-whiskermenu-plugin-2.3.2.tar.bz2"
diff --git a/user/xfdesktop/APKBUILD b/user/xfdesktop/APKBUILD
index b061e50ff..75dcffed9 100644
--- a/user/xfdesktop/APKBUILD
+++ b/user/xfdesktop/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=xfdesktop
-pkgver=4.13.2
+pkgver=4.13.3
pkgrel=0
pkgdesc="Desktop manager for the XFCE desktop environment"
url="https://xfce.org"
@@ -12,7 +12,6 @@ makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev libwnck-dev
subpackages="$pkgname-doc $pkgname-lang"
langdir="/usr/lib/locale"
source="http://archive.xfce.org/src/xfce/xfdesktop/4.13/xfdesktop-$pkgver.tar.bz2"
-sha512sums="0002ed639f8554144d8c921ca5bd9d1c2ed634baa11c98f95685c8a636ae6bdc87f8df19aa138fe4eda591facba964451a10aef6ba303be1fad66013bb06ae13 xfdesktop-4.13.2.tar.bz2"
build() {
cd "$builddir"
@@ -36,3 +35,4 @@ package() {
make DESTDIR="$pkgdir" install
}
+sha512sums="5d828ad653b46ab1edc8300335321bab48e0ad2be1ae02944eff553375a6059513aeb363c73aaec1a6958dd3f1c873920287ad911cfe7b8096b447f1b8165ce3 xfdesktop-4.13.3.tar.bz2"
diff --git a/user/xorg-gtest/APKBUILD b/user/xorg-gtest/APKBUILD
new file mode 100644
index 000000000..72effff40
--- /dev/null
+++ b/user/xorg-gtest/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xorg-gtest
+pkgver=0.7.1
+pkgrel=0
+pkgdesc="X extensions to googletest"
+url="https://gitlab.freedesktop.org/xorg/test/xorg-gtest"
+arch="noarch"
+options="!check" # tests require X
+license="MIT AND BSD-3-Clause"
+depends=""
+makedepends="libx11-dev libxi-dev util-macros xorg-server-dev xf86-video-dummy"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/xorg/test/xorg-gtest/-/archive/xorg-gtest-$pkgver/xorg-gtest-xorg-gtest-$pkgver.tar.bz2"
+builddir="$srcdir"/$pkgname-$pkgname-$pkgver
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ ./autogen.sh
+}
+
+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"
+ DESTDIR="$pkgdir" make install
+ for i in gtest gtest-spi; do
+ rm "$pkgdir"/usr/include/gtest/"$i".h
+ done
+}
+
+sha512sums="100746225dd6b24f030893da7b960c2f2562fa9f5d02ee7fca3eb99c40e3ae17d408d5e3c4e99e05e3767984d48648d5a42473a9922d699cf1281290af1eb86c xorg-gtest-xorg-gtest-0.7.1.tar.bz2"
diff --git a/user/xsane/APKBUILD b/user/xsane/APKBUILD
index 77a83e2d8..05cf220e4 100644
--- a/user/xsane/APKBUILD
+++ b/user/xsane/APKBUILD
@@ -13,7 +13,7 @@ makedepends="gtk+2.0-dev lcms2-dev libjpeg-turbo-dev libpng-dev sane-dev
tiff-dev"
subpackages="$pkgname-doc $pkgname-lang"
langdir="/usr/lib/locale"
-source="https://distfiles.gentoo.org/distfiles/xsane-$pkgver.tar.gz
+source="http://distfiles.gentoo.org/distfiles/xsane-$pkgver.tar.gz
xsane-0.999-lcms2.patch
xsane-0.999-libpng16.patch
"
diff --git a/user/xscreensaver/APKBUILD b/user/xscreensaver/APKBUILD
new file mode 100644
index 000000000..06f648560
--- /dev/null
+++ b/user/xscreensaver/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xscreensaver
+pkgver=5.42
+pkgrel=0
+pkgdesc="X Screensaver suite"
+url="https://www.jwz.org/xscreensaver/"
+arch="all"
+options="!check suid" # no tests
+license="MIT"
+depends=""
+makedepends="bc gtk+2.0-dev intltool libglade-dev libice-dev libjpeg-turbo-dev
+ libx11-dev libxft-dev libxinerama-dev libxml2-dev libxml2-utils
+ libxrandr-dev libxt-dev linux-pam-dev mesa-dev mesa-glapi"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://www.jwz.org/xscreensaver/xscreensaver-$pkgver.tar.gz
+ xscreensaver-fixes.patch"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$builddir"
+ make install_prefix="$pkgdir" install
+}
+
+sha512sums="84cde9364c933de720acd51a0bf75eb4d0642d60f62b92de89d932233eb5abb51e1edb53cd413b2dc4801a02cb68652a28d7d1f83cdaa8d8cdd1fee7d651eefd xscreensaver-5.42.tar.gz
+1df5d3a1456990eb0b2a9efb65fcd26ce576e470a0d6ee268e84e4b399dda930f5ed0960d185e55a7fdab10e5dc42fa2c90060b16443954ec2fce306c8855b54 xscreensaver-fixes.patch"
diff --git a/user/xscreensaver/xscreensaver-fixes.patch b/user/xscreensaver/xscreensaver-fixes.patch
new file mode 100644
index 000000000..0f5381902
--- /dev/null
+++ b/user/xscreensaver/xscreensaver-fixes.patch
@@ -0,0 +1,14 @@
+diff -Nurd xscreensaver-5.42/hacks/fontglide.c xscreensaver-5.42.new/hacks/fontglide.c
+--- xscreensaver-5.42/hacks/fontglide.c 2018-09-02 17:56:45.000000000 -0500
++++ xscreensaver-5.42.new/hacks/fontglide.c 2019-03-24 14:09:46.559263834 -0500
+@@ -2421,8 +2421,8 @@
+
+ textclient_close (s->tc);
+
+-// if (s->b && s->b != s->window) XFreePixmap (dpy, s->b);
+-// if (s->ba && s->ba != s->b) XFreePixmap (dpy, s->ba);
++/* if (s->b && s->b != s->window) XFreePixmap (dpy, s->b); */
++/* if (s->ba && s->ba != s->b) XFreePixmap (dpy, s->ba); */
+ XFreeGC (dpy, s->bg_gc);
+ if (s->charset) free (s->charset);
+ if (s->font_override) free (s->font_override);
diff --git a/user/zenity/APKBUILD b/user/zenity/APKBUILD
new file mode 100644
index 000000000..234508b94
--- /dev/null
+++ b/user/zenity/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=zenity
+pkgver=3.32.0
+pkgrel=0
+pkgdesc="GTK-based dialog utility"
+url="https://gnome.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev itstool libxml2-utils"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/zenity/${pkgver%.*}/zenity-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d057df25dbb2d780c6be184ec167b0f569eadf0ac1c460d63509843157f14dfdcebe46bb6f93b17c6069ef0208902ce9ecbb4025933f7dc7572323032ec34fda zenity-3.32.0.tar.xz"