diff options
70 files changed, 3505 insertions, 410 deletions
diff --git a/experimental/sbcl/APKBUILD b/experimental/sbcl/APKBUILD new file mode 100644 index 000000000..c7217542d --- /dev/null +++ b/experimental/sbcl/APKBUILD @@ -0,0 +1,35 @@ +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=sbcl +pkgver=2.0.5 +pkgrel=0 +pkgdesc="Steel Bank Common Lisp" +url="http://www.sbcl.org" +arch="all !armv7" +license="BSD-2-Clause AND BSD-2-Clause-FreeBSD AND BSD-3-Clause AND MIT" +depends="" +makedepends="clisp clisp-dev" +checkdepends="ed" +subpackages="$pkgname-doc" +source="https://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/$pkgname-$pkgver-source.tar.bz2" + +prepare() { + default_prepare + + # run-program test is hard-coded to use /bin/ed but it should be /usr/bin/ed + sed -i 's,/bin/ed,/usr/bin/ed,g' tests/run-program.impure.lisp +} + +build() { + ./make.sh --prefix=/usr --with-dlclose-is-noop --xc-host=clisp +} + +check() { + cd tests && sh run-tests.sh +} + +package() { + INSTALL_ROOT="$pkgdir"/usr sh install.sh +} + +sha512sums="0c27e22dd76d157a74ef7e97dcd03030096dde0eb46901ea27acb60faa0ab34881d76a9c6708d963b0e6f62da6331b85b8d3de76fd1fc9163c159e631759f808 sbcl-2.0.5-source.tar.bz2" diff --git a/system/adelie-base/APKBUILD b/system/adelie-base/APKBUILD index 04b100e69..8b06a3699 100644 --- a/system/adelie-base/APKBUILD +++ b/system/adelie-base/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=adelie-base pkgver=0.9.4 -pkgrel=0 +pkgrel=1 pkgdesc="The Adélie Linux Base System" url="https://www.adelielinux.org/" arch="noarch" @@ -13,8 +13,8 @@ _core_depends="apk-tools adelie-keys musl-utils shadow coreutils diffutils findutils util-linux net-tools nvi sed psmisc less tzdata" -depends="adelie-core binutils console-setup debianutils file gettys-openrc - libarchive-tools man-db patch sed sharutils sysklogd zsh" +depends="adelie-core binutils debianutils file gettys-openrc + kbd libarchive-tools man-db patch sed sharutils sysklogd zsh" makedepends="" makedepends_host="$depends" subpackages="adelie-core:core $pkgname-doc $pkgname-posix $pkgname-lsb dev diff --git a/system/console-setup/APKBUILD b/system/console-setup/APKBUILD deleted file mode 100644 index b1e1b4c76..000000000 --- a/system/console-setup/APKBUILD +++ /dev/null @@ -1,49 +0,0 @@ -# Contributor: A. Wilcox <awilfox@adelielinux.org> -# Maintainer: A. Wilcox <awilfox@adelielinux.org> -pkgname=console-setup -pkgver=1.195 -pkgrel=0 -pkgdesc="Tools for configuring the console using X Window System key maps" -url="https://salsa.debian.org/installer-team/console-setup" -arch="noarch" -options="!check" # No test suite. -license="MIT AND GPL-2.0+ AND BSD-3-Clause" -depends="ckbcomp kbd" -makedepends="perl" -subpackages="$pkgname-doc console-fonts:fonts console-keymaps:keymaps - $pkgname-openrc ckbcomp" -source="http://ftp.de.debian.org/debian/pool/main/c/$pkgname/${pkgname}_$pkgver.tar.xz - console-setup.initd - " -builddir="$srcdir/$pkgname" - -build() { - make build-linux -} - -package() { - make prefix="$pkgdir/usr" etcdir="$pkgdir/etc" xkbdir= install-linux - install -D -m755 "$srcdir"/console-setup.initd "$pkgdir"/etc/init.d/console-setup -} - -fonts() { - pkgdesc="Console fonts for use with $pkgname" - mkdir -p "$subpkgdir"/usr/share - mv "$pkgdir"/usr/share/consolefonts "$subpkgdir"/usr/share/ -} - -keymaps() { - pkgdesc="Keyboard layouts for use with $pkgname" - mkdir -p "$subpkgdir"/etc/console-setup - mv "$pkgdir"/etc/console-setup/ckb "$subpkgdir"/etc/console-setup/ -} - -ckbcomp() { - pkgdesc="XKB keyboard layout translation utility" - depends="perl" - mkdir -p "$subpkgdir"/usr/bin - mv "$pkgdir"/usr/bin/ckbcomp "$subpkgdir"/usr/bin/ -} - -sha512sums="f9ee8df45cfb78dea12b1ba3020e32f245dd940bc1d22801849f673f4448853c0ebadb6944a92b462e3e56c59ee13fd6d2130c260a1a406e1bb1c72e9902c04d console-setup_1.195.tar.xz -3b8e2c9d8551f9a51bcd33e58771a4f55ff2840f8fe392e0070bd2b6a3911cd9ed9377873538f6904fd99836ac4e0280c712be69d275aae9183dd12ff7efddae console-setup.initd" diff --git a/system/console-setup/console-setup.initd b/system/console-setup/console-setup.initd deleted file mode 100644 index bf3479566..000000000 --- a/system/console-setup/console-setup.initd +++ /dev/null @@ -1,32 +0,0 @@ -#!/sbin/openrc-run -# Copyright (c) 2007-2015 The OpenRC Authors. -# See the Authors file at the top-level directory of this distribution and -# https://github.com/OpenRC/openrc/blob/master/AUTHORS -# -# This file is part of OpenRC. It is subject to the license terms in -# the LICENSE file found in the top-level directory of this -# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE -# This file may not be copied, modified, propagated, or distributed -# except according to the terms contained in the LICENSE file. - -description="Applies a keymap and font for the consoles." - -depend() -{ - provide keymaps - need localmount termencoding - after bootmisc - keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu -} - -start() -{ - # Force linux keycodes for PPC. - if [ -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes ]; then - echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes - fi - - ebegin "Loading default key mappings / font" - setupcon - eend $? "Error loading key mappings / font" || return $? -} diff --git a/system/execline/APKBUILD b/system/execline/APKBUILD index 252daeb63..bc7328ea3 100644 --- a/system/execline/APKBUILD +++ b/system/execline/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Laurent Bercot <ska-adelie@skarnet.org> # Maintainer: Laurent Bercot <ska-adelie@skarnet.org> pkgname=execline -pkgver=2.6.0.0 +pkgver=2.6.0.2 pkgrel=0 pkgdesc="A small scripting language for non-interactive scripts" url="https://skarnet.org/software/$pkgname/" @@ -62,4 +62,4 @@ doc() { cp -a "$builddir/doc" "$subpkgdir/usr/share/doc/$pkgname" } -sha512sums="890a533a6ffad98b066adda34ae4a7e69daa98950974fcdb4635cff4c8957851b7fc6beaf25802c7ed5085285fc9b2aa9d9806afdb1aaa6884745a978b969f7a execline-2.6.0.0.tar.gz" +sha512sums="915823af0d557fc7a181e088ce319568e62ea4bf743704e498786422c97b991e6b09447c7cff7d7dda520d391773ef4b2fea68e44479c02766966256719bb4c0 execline-2.6.0.2.tar.gz" diff --git a/system/kbd/APKBUILD b/system/kbd/APKBUILD index d54e7f29c..deb7fb205 100644 --- a/system/kbd/APKBUILD +++ b/system/kbd/APKBUILD @@ -2,9 +2,9 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kbd pkgver=2.2.0_git20190823 -pkgrel=0 +pkgrel=1 pkgdesc="Console keyboard and font management utilities" -url=" " +url="https://kbd-project.org/" arch="all" options="!check" # padding error on at least ppc64 license="GPL-2.0+" @@ -12,8 +12,13 @@ depends="" checkdepends="check-dev" makedepends="linux-headers linux-pam-dev autoconf automake libtool" subpackages="$pkgname-doc $pkgname-fonts::noarch $pkgname-keymaps::noarch - $pkgname-lang" -source="https://dev.sick.bike/dist/$pkgname-$pkgver.tar.xz" + $pkgname-lang $pkgname-openrc" +source="https://dev.sick.bike/dist/$pkgname-$pkgver.tar.xz + consolefont.confd + consolefont.initd + keymaps.confd + keymaps.initd + " prepare() { default_prepare @@ -37,6 +42,19 @@ check() { package() { make DESTDIR="$pkgdir" install + + for i in consolefont keymaps; do + install -Dm644 "$srcdir"/$i.confd \ + "$pkgdir"/etc/conf.d/$i + install -Dm755 "$srcdir"/$i.initd \ + "$pkgdir"/etc/init.d/$i + done +} + +openrc() { + default_openrc + license="BSD-2-Clause" + replaces="openrc<0.24.1-r10" } fonts() { @@ -52,4 +70,8 @@ keymaps() { mv "$pkgdir"/usr/share/unimaps "$subpkgdir"/usr/share/ } -sha512sums="7f6202aeb17d6224095447a92d999478220457e1e7cadb90a7c40ca7f3b0c5b1f672db1995fb69652ca37558a75df582bfb5fea5772f3b1e040fe39f8f54504e kbd-2.2.0_git20190823.tar.xz" +sha512sums="7f6202aeb17d6224095447a92d999478220457e1e7cadb90a7c40ca7f3b0c5b1f672db1995fb69652ca37558a75df582bfb5fea5772f3b1e040fe39f8f54504e kbd-2.2.0_git20190823.tar.xz +19761fdd2b32c1bbcc9254b89b7893741e144b917a75410af3f274553fe61e2f56cbbd17ff77ac929e9377604663cbbfd9e53c73e7d41e71de6de573730950c7 consolefont.confd +1e67f75f27ec5de8f71489c83f78e53e8fd0925ae2d82dabf516f98905c5aff206a8e943e92b6af413eae5f0ecb9c2240526dfc3c56811a8dc1d19ced561bba3 consolefont.initd +af7d37fc6be1382414ca8245ca6f8d2ee8b82650b8a08eebbd980cf6dd2b92524fce2851ce0b2cd67e915488c12044ab50c5ab1f01c3072af87eed3e058ac268 keymaps.confd +510d7eb582a914fa7cfb868d0c3d55a21ee1519033117d0943a153528b5810d09f6421ddc02d93906c1a66fb7e07e86240f38dad0d38cfb5a8c7e9a6335a937f keymaps.initd" diff --git a/system/kbd/consolefont.confd b/system/kbd/consolefont.confd new file mode 100644 index 000000000..4c41d0633 --- /dev/null +++ b/system/kbd/consolefont.confd @@ -0,0 +1,20 @@ +# The consolefont service is not activated by default. If you need to +# use it, you should run "rc-update add consolefont boot" as root. +# +# consolefont specifies the default font that you'd like Linux to use on the +# console. You will have to install a package such as kbd-fonts or +# terminus-font to have a selection; they will be installed in +# /usr/share/consolefonts. +# +# The following (from terminus-font) is a good font for HiDPI screens. +#consolefont="ter-i32n" + +# consoletranslation is the charset map file to use. Leave commented to use +# the default one. Have a look in /usr/share/consoletrans for a selection of +# map files you can use. +#consoletranslation="8859-1_to_uni" + +# unicodemap is the unicode map file to use. Leave commented to use the +# default one. Have a look in /usr/share/unimaps (from the kbd-keymaps +# package) for a selection of map files you can use. +#unicodemap="iso01" diff --git a/system/kbd/consolefont.initd b/system/kbd/consolefont.initd new file mode 100644 index 000000000..63d8601c5 --- /dev/null +++ b/system/kbd/consolefont.initd @@ -0,0 +1,70 @@ +#!/sbin/openrc-run +# Copyright (c) 2007-2015 The OpenRC Authors. +# See the Authors file at the top-level directory of this distribution and +# https://github.com/OpenRC/openrc/blob/master/AUTHORS +# +# This file is part of OpenRC. It is subject to the license terms in +# the LICENSE file found in the top-level directory of this +# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +description="Sets a font for the consoles." + +depend() +{ + need localmount termencoding + after hotplug bootmisc modules + keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu +} + +start() +{ + ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} + consolefont=${consolefont:-${CONSOLEFONT}} + unicodemap=${unicodemap:-${UNICODEMAP}} + consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}} + + if [ -z "$consolefont" ]; then + ebegin "Using the default console font" + eend 0 + return 0 + fi + + if [ "$ttyn" = 0 ]; then + ebegin "Skipping font setup (rc_tty_number == 0)" + eend 0 + return 0 + fi + + local x= param= sf_param= retval=0 ttydev=/dev/tty + + # Get additional parameters + if [ -n "$consoletranslation" ]; then + param="$param -m $consoletranslation" + fi + if [ -n "${unicodemap}" ]; then + param="$param -u $unicodemap" + fi + + # Set the console font + ebegin "Setting console font [$consolefont]" + [ -d /dev/vc ] && ttydev=/dev/vc/ + x=1 + while [ $x -le $ttyn ]; do + if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then + retval=1 + break + fi + : $(( x += 1 )) + done + eend $retval + + # Store the font so we can use it ASAP on boot + if [ $retval -eq 0 ] && checkpath -W "$RC_LIBEXECDIR"; then + mkdir -p "$RC_LIBEXECDIR"/console + setfont -O "$RC_LIBEXECDIR"/console/font + fi + + return $retval +} diff --git a/system/kbd/keymaps.confd b/system/kbd/keymaps.confd new file mode 100644 index 000000000..9a2863413 --- /dev/null +++ b/system/kbd/keymaps.confd @@ -0,0 +1,24 @@ +# Use keymap to specify the default console keymap. There is a complete tree +# of keymaps in /usr/share/keymaps to choose from (from the kbd-keymaps +# package). +keymap="us" + +# Should we first load the 'windowkeys' console keymap? Most x86 users will +# say "yes" here. Note that non-x86 users should leave it as "no". +# Loading this keymap will enable VT switching (like ALT+Left/Right) +# using the special windows keys on the linux console. +windowkeys="NO" + +# The maps to load for extended keyboards. Most users will leave this as is. +extended_keymaps="" +#extended_keymaps="backspace keypad euro2" + +# Tell dumpkeys(1) to interpret character action codes to be +# from the specified character set. +# This only matters if you set unicode="yes" in /etc/rc.conf. +# For a list of valid sets, run `dumpkeys --help` +dumpkeys_charset="" + +# Some fonts map AltGr-E to the currency symbol instead of the Euro. +# To fix this, set to "yes" +fix_euro="NO" diff --git a/system/kbd/keymaps.initd b/system/kbd/keymaps.initd new file mode 100644 index 000000000..49e41b0e7 --- /dev/null +++ b/system/kbd/keymaps.initd @@ -0,0 +1,77 @@ +#!/sbin/openrc-run +# Copyright (c) 2007-2015 The OpenRC Authors. +# See the Authors file at the top-level directory of this distribution and +# https://github.com/OpenRC/openrc/blob/master/AUTHORS +# +# This file is part of OpenRC. It is subject to the license terms in +# the LICENSE file found in the top-level directory of this +# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +description="Applies a keymap for the consoles." + +depend() +{ + need localmount termencoding + after bootmisc + keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu +} + +start() +{ + ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} + : ${unicode:=$UNICODE} + : ${keymap:=$KEYMAP} + : ${extended_keymaps:=$EXTENDED_KEYMAPS} + : ${windowkeys:=$SET_WINDOWSKEYS} + : ${fix_euro:=$FIX_EURO} + : ${dumpkeys_charset:=${DUMPKEYS_CHARSET}} + + if [ -z "$keymap" ]; then + eerror "You need to setup keymap in /etc/conf.d/keymaps first" + return 1 + fi + + local ttydev=/dev/tty n= + [ -d /dev/vc ] && ttydev=/dev/vc/ + + # Force linux keycodes for PPC. + if [ -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes ]; then + echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes + fi + + local wkeys= kmode="-a" msg="ASCII" + if yesno $unicode; then + kmode="-u" + msg="UTF-8" + fi + yesno $windowkeys && wkeys="windowkeys" + + # Set terminal encoding to either ASCII or UNICODE. + # See utf-8(7) for more information. + ebegin "Setting keyboard mode [$msg]" + n=1 + while [ $n -le $ttyn ]; do + kbd_mode $kmode -C $ttydev$n + : $(( n += 1 )) + done + eend 0 + + ebegin "Loading key mappings [$keymap]" + loadkeys -q $wkeys $keymap $extended_keymaps + eend $? "Error loading key mappings" || return $? + + if yesno $fix_euro; then + ebegin "Fixing font for euro symbol" + # Fix some fonts displaying the Euro, #173528. + echo "altgr keycode 18 = U+20AC" | loadkeys -q - + eend $? + fi + + # Save the keymapping for use immediately at boot + if checkpath -W "$RC_LIBEXECDIR"; then + mkdir -p "$RC_LIBEXECDIR"/console + dumpkeys >"$RC_LIBEXECDIR"/console/keymap + fi +} diff --git a/system/nvi/APKBUILD b/system/nvi/APKBUILD index c0daf1a1e..a148971ea 100644 --- a/system/nvi/APKBUILD +++ b/system/nvi/APKBUILD @@ -2,7 +2,8 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=nvi pkgver=1.81.6 -pkgrel=0 +_debver=15 +pkgrel=1 pkgdesc="Berkeley text editor" url="https://sites.google.com/a/bostic.com/keithbostic/vi/" arch="all" @@ -11,12 +12,21 @@ license="BSD-4-Clause-UC" depends="" makedepends="db-dev ncurses-dev" subpackages="$pkgname-doc" -source="https://fossies.org/linux/privat/old/nvi-$pkgver.tar.gz +source="http://deb.debian.org/debian/pool/main/n/nvi/nvi_$pkgver.orig.tar.gz + http://deb.debian.org/debian/pool/main/n/nvi/nvi_$pkgver-$_debver.debian.tar.xz build-fix.patch " +# secfixes: +# 1.81.6-r1: +# - CVE-2001-1562 + prepare() { default_prepare + while read -r i; do + msg "$i" + patch -p1 -i "../debian/patches/$i" + done < ../debian/patches/series cd "$builddir"/dist chmod u+w config.sub @@ -49,5 +59,6 @@ package() { mv "$pkgdir"/usr/share/man/man1/view.1 "$pkgdir"/usr/share/man/man1/view.nvi.1 } -sha512sums="1be798daf0cd05010ddaf0aa0510dc799708fd79d4b243e2700adff18e931ddd9d11621796fa8086088c3e93ba20f15ab86783732665169c52b73eaf587ff0b3 nvi-1.81.6.tar.gz +sha512sums="1be798daf0cd05010ddaf0aa0510dc799708fd79d4b243e2700adff18e931ddd9d11621796fa8086088c3e93ba20f15ab86783732665169c52b73eaf587ff0b3 nvi_1.81.6.orig.tar.gz +7756ca0ba9503516fcbf1a5fe51465bebf74bf107e040cea80de0dd501854fe0f25d67ddbd4142e58057ad015be12f8b711ef861fd6ad3f317bc619327579513 nvi_1.81.6-15.debian.tar.xz b84cfb83ea5ed15f5c7d9e608771a2248531be388fa19340e90074d37e10f6f75c8b965a40f5288275973f23ed6fda54aa4ef990b43d4828d174b66fd3ced1e9 build-fix.patch" diff --git a/system/openrc/0007-make-consolefont-service-compatible-with-busyboxs-se.patch b/system/openrc/0007-make-consolefont-service-compatible-with-busyboxs-se.patch deleted file mode 100644 index 6c23e2ab0..000000000 --- a/system/openrc/0007-make-consolefont-service-compatible-with-busyboxs-se.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 3d0d2b89745597ea973129eafa3f999cf19d761f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net> -Date: Wed, 17 Aug 2016 17:52:58 +0200 -Subject: [PATCH 7/7] make consolefont service compatible with busyboxs setfont - applet - -Compared to kdbs setfont program it doesn't support -O and -m. ---- - conf.d/consolefont | 11 ++--------- - init.d/consolefont.in | 7 ++----- - 2 files changed, 4 insertions(+), 14 deletions(-) - -diff --git a/conf.d/consolefont b/conf.d/consolefont -index e01ae842..75544b2f 100644 ---- a/conf.d/consolefont -+++ b/conf.d/consolefont -@@ -3,16 +3,9 @@ - # - # consolefont specifies the default font that you'd like Linux to use on the - # console. You can find a good selection of fonts in /usr/share/consolefonts; --# you shouldn't specify the trailing ".psf.gz", just the font name below. --# To use the default console font, comment out the CONSOLEFONT setting below. --consolefont="default8x16" -+consolefont="default8x16.psf.gz" - - # consoletranslation is the charset map file to use. Leave commented to use - # the default one. Have a look in /usr/share/consoletrans for a selection of - # map files you can use. --#consoletranslation="8859-1_to_uni" -- --# unicodemap is the unicode map file to use. Leave commented to use the --# default one. Have a look in /usr/share/unimaps for a selection of map files --# you can use. --#unicodemap="iso01" -+#consoletranslation="8859-1_to_uni.trans" -diff --git a/init.d/consolefont.in b/init.d/consolefont.in -index 9fe95afa..173ed426 100644 ---- a/init.d/consolefont.in -+++ b/init.d/consolefont.in -@@ -22,7 +22,6 @@ start() - { - ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} - consolefont=${consolefont:-${CONSOLEFONT}} -- unicodemap=${unicodemap:-${UNICODEMAP}} - consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}} - - if [ -z "$consolefont" ]; then -@@ -43,9 +42,6 @@ start() - if [ -n "$consoletranslation" ]; then - param="$param -m $consoletranslation" - fi -- if [ -n "${unicodemap}" ]; then -- param="$param -u $unicodemap" -- fi - - # Set the console font - ebegin "Setting console font [$consolefont]" -@@ -63,7 +59,8 @@ start() - # Store the font so we can use it ASAP on boot - if [ $retval -eq 0 ] && checkpath -W "$RC_LIBEXECDIR"; then - mkdir -p "$RC_LIBEXECDIR"/console -- setfont -O "$RC_LIBEXECDIR"/console/font -+ zcat "/usr/share/consolefonts/$consolefont" \ -+ > "$RC_LIBEXECDIR"/console/font - fi - - return $retval --- -2.11.0 - diff --git a/system/openrc/APKBUILD b/system/openrc/APKBUILD index 2b1c5f520..c2cb32220 100644 --- a/system/openrc/APKBUILD +++ b/system/openrc/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: pkgname=openrc pkgver=0.24.1 -pkgrel=8 +pkgrel=10 pkgdesc="OpenRC manages the services, startup and shutdown of a host" url="https://github.com/OpenRC/openrc" arch="all" @@ -19,7 +19,6 @@ source="$pkgname-$pkgver.tar.gz::https://github.com/OpenRC/openrc/archive/$pkgve 0004-hide-error-when-migrating-var-run-to-run.patch 0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch 0006-mount-efivars-read-only.patch - 0007-make-consolefont-service-compatible-with-busyboxs-se.patch openrc-configuration.patch @@ -69,8 +68,11 @@ package() { rm "$pkgdir"/etc/conf.d/network rm "$pkgdir"/etc/init.d/network - # we use console-setup for keymaps - rm "$pkgdir"/etc/init.d/keymaps + # we ship these in system/kbd + for i in consolefont keymaps; do + rm "$pkgdir"/etc/conf.d/$i + rm "$pkgdir"/etc/init.d/$i + done # we use gettys-openrc for TTY rm "$pkgdir"/etc/init.d/agetty @@ -86,7 +88,6 @@ aedf77f9159fefb4bd5f30a29a33b6aedbc986c9a0f993aa928cc79fbe24aac76bd9e5974dcce52e d54630d40a2d6b10a325cb012d4efcda997a60c008ca953ce5d60059d3f267308a59dabddf93a5fc0d301aa91967137d144effbe5f574394af768ce4ebc48738 0004-hide-error-when-migrating-var-run-to-run.patch 39a35c54ec9112fe84c901ed155a711cec8e194af02d5483ee60b80743dab12391e6fdc7b3da2f86844dd4edcf53e681ff95bd4d6fa1101a89ce54dce2ddbb7c 0005-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch 7221dd2daccd8844f6f9481b7b5921abc2711c8abd1a4bb72f04db8fd8e734b817f5d0d571daea0e2e05d3bc687f75ee1d8025249996bdee0b3328e18d9da7d3 0006-mount-efivars-read-only.patch -234c4f3cf39df3350dbea25c00b8d584794b28194f44c726767a6a16d91a26fee1b5d2dd16635f19803fc015b4e9d99c52b23128e6b815938b88365feba8cf59 0007-make-consolefont-service-compatible-with-busyboxs-se.patch 2dde266f3176456724e4b0c40476e7061e31986b67744b4a53c71ba0d3896860b4569e3af2ea4777a9d8fe3b6282ff869666570f1daa86cdc410c0e09805c990 openrc-configuration.patch 12bb6354e808fbf47bbab963de55ee7901738b4a912659982c57ef2777fff9a670e867fcb8ec316a76b151032c92dc89a950d7d1d835ef53f753a8f3b41d2cec openrc.logrotate 99b542c0903ad6874b8c308b2e0660a4fe2ff9db962dfec65325cd12c368873a2ae800d5e6d42dc4deff775e1d5c0068869eb72581f7ab16e88d5738afe1d3dd hostname.initd diff --git a/system/openrc/openrc.post-install b/system/openrc/openrc.post-install index 0f6572ef7..9632de2ee 100644 --- a/system/openrc/openrc.post-install +++ b/system/openrc/openrc.post-install @@ -1,6 +1,6 @@ #!/bin/sh -if [ -d /etc/runlevels ]; then +if [ -d /etc/runlevels/sysinit ]; then exit 0 fi diff --git a/system/skalibs/APKBUILD b/system/skalibs/APKBUILD index ada2b303c..129fa7e79 100644 --- a/system/skalibs/APKBUILD +++ b/system/skalibs/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Laurent Bercot <ska-adelie@skarnet.org> # Maintainer: Laurent Bercot <ska-adelie@skarnet.org> pkgname=skalibs -pkgver=2.9.2.0 +pkgver=2.9.2.1 pkgrel=0 pkgdesc="A set of general-purpose C programming libraries for skarnet.org software" url="https://skarnet.org/software/skalibs/" @@ -57,4 +57,4 @@ doc() { cp -a "$builddir/doc" "$subpkgdir/usr/share/doc/$pkgname" } -sha512sums="a351cb8d048cefa495cc35fd2758579879d5ac11d2a1fc00c694d5655aa9e430228517c01fc91bdbc70c3992f73429a68a5365cb46039a7b7bb11358f0f4506d skalibs-2.9.2.0.tar.gz" +sha512sums="bd507faf30f0564fb8d3e5f86de04ab4b39961dab2497ba9f4a81980a57f7ff68cad366b9847b25d555b5b9263460d13f096e1774d080d1d286979f2e7324c54 skalibs-2.9.2.1.tar.gz" diff --git a/system/unzip/10-unzip-handle-pkware-verify.patch b/system/unzip/10-unzip-handle-pkware-verify.patch deleted file mode 100644 index b373ce07d..000000000 --- a/system/unzip/10-unzip-handle-pkware-verify.patch +++ /dev/null @@ -1,21 +0,0 @@ -From: Steven Schweda -Subject: Handle the PKWare verification bit of internal attributes -Bug-Debian: http://bugs.debian.org/630078 -X-Debian-version: 6.0-5 - ---- a/process.c -+++ b/process.c -@@ -1729,6 +1729,13 @@ - else if (uO.L_flag > 1) /* let -LL force lower case for all names */ - G.pInfo->lcflag = 1; - -+ /* Handle the PKWare verification bit, bit 2 (0x0004) of internal -+ attributes. If this is set, then a verification checksum is in the -+ first 3 bytes of the external attributes. In this case all we can use -+ for setting file attributes is the last external attributes byte. */ -+ if (G.crec.internal_file_attributes & 0x0004) -+ G.crec.external_file_attributes &= (ulg)0xff; -+ - /* do Amigas (AMIGA_) also have volume labels? */ - if (IS_VOLID(G.crec.external_file_attributes) && - (G.pInfo->hostnum == FS_FAT_ || G.pInfo->hostnum == FS_HPFS_ || diff --git a/system/unzip/20-unzip-uidgid-fix.patch b/system/unzip/20-unzip-uidgid-fix.patch deleted file mode 100644 index 3a308990e..000000000 --- a/system/unzip/20-unzip-uidgid-fix.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: sms -Subject: Restore uid and gid information when requested -Bug-Debian: http://bugs.debian.org/689212 -X-Debian-version: 6.0-8 - ---- a/process.c -+++ b/process.c -@@ -2904,7 +2904,7 @@ - #ifdef IZ_HAVE_UXUIDGID - if (eb_len >= EB_UX3_MINLEN - && z_uidgid != NULL -- && (*((EB_HEADSIZE + 0) + ef_buf) == 1) -+ && (*((EB_HEADSIZE + 0) + ef_buf) == 1)) - /* only know about version 1 */ - { - uch uid_size; -@@ -2916,10 +2916,10 @@ - flags &= ~0x0ff; /* ignore any previous UNIX field */ - - if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf, -- uid_size, z_uidgid[0]) -+ uid_size, &z_uidgid[0]) - && - read_ux3_value((EB_HEADSIZE + uid_size + 3) + ef_buf, -- gid_size, z_uidgid[1]) ) -+ gid_size, &z_uidgid[1]) ) - { - flags |= EB_UX2_VALID; /* signal success */ - } diff --git a/system/unzip/APKBUILD b/system/unzip/APKBUILD index e915966a0..ea8f7e6fa 100644 --- a/system/unzip/APKBUILD +++ b/system/unzip/APKBUILD @@ -4,7 +4,8 @@ pkgname=unzip pkgver=6.0 _pkgver=$(printf '%s' "$pkgver" | tr -d .) -pkgrel=3 +_debver=25 +pkgrel=4 pkgdesc="Extract PKZIP-compatible .zip files" url="http://www.info-zip.org/UnZip.html" arch="all" @@ -12,12 +13,30 @@ license="Info-ZIP" subpackages="$pkgname-doc" # normally ftp://ftp.info-zip.org/pub/infozip/src/$pkgname$_pkgver.zip source="$pkgname-$pkgver.tgz::https://distfiles.adelielinux.org/source/$pkgname$_pkgver.tgz - 10-unzip-handle-pkware-verify.patch - 20-unzip-uidgid-fix.patch - unzip-6.0-heap-overflow-infloop.patch + http://deb.debian.org/debian/pool/main/u/unzip/unzip_$pkgver-$_debver.debian.tar.xz " builddir="$srcdir/$pkgname$_pkgver" +# secfixes: +# 6.0-r4: +# - CVE-2014-8139 +# - CVE-2014-8140 +# - CVE-2014-8141 +# - CVE-2014-9636 +# - CVE-2014-9913 +# - CVE-2016-9844 +# - CVE-2018-18384 +# - CVE-2018-1000035 +# - CVE-2019-13232 + +prepare() { + default_prepare + while read -r i; do + msg "$i" + patch -p1 -i "../debian/patches/$i" + done < ../debian/patches/series +} + build() { make -f unix/Makefile \ CC="${CHOST}-gcc" \ @@ -38,6 +57,4 @@ package() { } sha512sums="0694e403ebc57b37218e00ec1a406cae5cc9c5b52b6798e0d4590840b6cdbf9ddc0d9471f67af783e960f8fa2e620394d51384257dca23d06bcd90224a80ce5d unzip-6.0.tgz -9d2914f22fb0075a2b6f72825c235f46eafd8d47b6fb6fcc8303fc69336e256b15923c002d2615bb6af733344c2315e4a8504d77bae301e10c11d4736faa2c81 10-unzip-handle-pkware-verify.patch -57699582e9056af0817dcb67f8db67e6a1ff8208c137fbebcf559429e5f12b471b75d7e1ef938e5bbb5416074a51ac7342e4ce8057f4bbdcb0bf079b8d7832af 20-unzip-uidgid-fix.patch -b1e3fac6a787828efaaef8ec7cc52e1573aea27a6f29830af37ec4ba8bcd2a6488c953ab10eee0561c78e82c7401833ef172bebee793405d93632ce788756301 unzip-6.0-heap-overflow-infloop.patch" +13c16db420fa4a34be3090a9acdd79b01320da40ac5aa89a9dfca03e64b914b28eb72aff3882d02a8197457bcb8eeb9473c998cf6920e511883c9289a949fb21 unzip_6.0-25.debian.tar.xz" diff --git a/system/unzip/unzip-6.0-heap-overflow-infloop.patch b/system/unzip/unzip-6.0-heap-overflow-infloop.patch deleted file mode 100644 index 160c512f9..000000000 --- a/system/unzip/unzip-6.0-heap-overflow-infloop.patch +++ /dev/null @@ -1,104 +0,0 @@ -From bdd4a0cecd745cb4825e4508b5bdf2579731086a Mon Sep 17 00:00:00 2001 -From: Petr Stodulka <pstodulk@redhat.com> -Date: Mon, 14 Sep 2015 18:23:17 +0200 -Subject: [PATCH 1/3] upstream fix for heap overflow - -https://bugzilla.redhat.com/attachment.cgi?id=1073002 ---- - crypt.c | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/crypt.c b/crypt.c -index 784e411..a8975f2 100644 ---- a/crypt.c -+++ b/crypt.c -@@ -465,7 +465,17 @@ int decrypt(__G__ passwrd) - GLOBAL(pInfo->encrypted) = FALSE; - defer_leftover_input(__G); - for (n = 0; n < RAND_HEAD_LEN; n++) { -- b = NEXTBYTE; -+ /* 2012-11-23 SMS. (OUSPG report.) -+ * Quit early if compressed size < HEAD_LEN. The resulting -+ * error message ("unable to get password") could be improved, -+ * but it's better than trying to read nonexistent data, and -+ * then continuing with a negative G.csize. (See -+ * fileio.c:readbyte()). -+ */ -+ if ((b = NEXTBYTE) == (ush)EOF) -+ { -+ return PK_ERR; -+ } - h[n] = (uch)b; - Trace((stdout, " (%02x)", h[n])); - } --- -2.4.6 - - -From 4b48844661ff9569f2ecf582a387d46a5775b5d8 Mon Sep 17 00:00:00 2001 -From: Kamil Dudka <kdudka@redhat.com> -Date: Mon, 14 Sep 2015 18:24:56 +0200 -Subject: [PATCH 2/3] fix infinite loop when extracting empty bzip2 data - -Bug: https://sourceforge.net/p/infozip/patches/23/ ---- - extract.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/extract.c b/extract.c -index 7134bfe..29db027 100644 ---- a/extract.c -+++ b/extract.c -@@ -2733,6 +2733,12 @@ __GDEF - int repeated_buf_err; - bz_stream bstrm; - -+ if (G.incnt <= 0 && G.csize <= 0L) { -+ /* avoid an infinite loop */ -+ Trace((stderr, "UZbunzip2() got empty input\n")); -+ return 2; -+ } -+ - #if (defined(DLL) && !defined(NO_SLIDE_REDIR)) - if (G.redirect_slide) - wsize = G.redirect_size, redirSlide = G.redirect_buffer; --- -2.4.6 - - -From bd150334fb4084f5555a6be26b015a0671cb5b74 Mon Sep 17 00:00:00 2001 -From: Kamil Dudka <kdudka@redhat.com> -Date: Tue, 22 Sep 2015 18:52:23 +0200 -Subject: [PATCH 3/3] extract: prevent unsigned overflow on invalid input - -Suggested-by: Stefan Cornelius ---- - extract.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/extract.c b/extract.c -index 29db027..b9ae667 100644 ---- a/extract.c -+++ b/extract.c -@@ -1257,8 +1257,17 @@ static int extract_or_test_entrylist(__G__ numchunk, - if (G.lrec.compression_method == STORED) { - zusz_t csiz_decrypted = G.lrec.csize; - -- if (G.pInfo->encrypted) -+ if (G.pInfo->encrypted) { -+ if (csiz_decrypted <= 12) { -+ /* handle the error now to prevent unsigned overflow */ -+ Info(slide, 0x401, ((char *)slide, -+ LoadFarStringSmall(ErrUnzipNoFile), -+ LoadFarString(InvalidComprData), -+ LoadFarStringSmall2(Inflate))); -+ return PK_ERR; -+ } - csiz_decrypted -= 12; -+ } - if (G.lrec.ucsize != csiz_decrypted) { - Info(slide, 0x401, ((char *)slide, - LoadFarStringSmall2(WrnStorUCSizCSizDiff), --- -2.5.2 - diff --git a/user/chntpw/APKBUILD b/user/chntpw/APKBUILD new file mode 100644 index 000000000..a62408ce0 --- /dev/null +++ b/user/chntpw/APKBUILD @@ -0,0 +1,40 @@ +# Contributor: CyberLeo <cyberleo@cyberleo.net> +# Maintainer: CyberLeo <cyberleo@cyberleo.net> +pkgname=chntpw +pkgver=140201 +pkgrel=0 +pkgdesc="Change passwords in Windows SAM files" +url="https://pogostick.net/~pnh/ntpasswd/" +arch="all" +options="!check" # No test suite. +license="(LGPL-2.1-only AND GPL-2.0-only)" +depends="" +makedepends="" +source="https://pogostick.net/~pnh/ntpasswd/$pkgname-source-$pkgver.zip + stdint.patch + chntpw-080526-correct-test-for-failing-open-syscall.patch + chntpw-110511-detect-failure-to-write-key.patch + chntpw-110511-reged-no-deref-null.patch + chntpw-110511-robustness.patch + chntpw-140201-get_abs_path.patch + getopt-signed-char-return.patch + " + +build() { + make CC="${CC:-gcc}" CFLAGS="$CFLAGS" \ + chntpw cpnt reged +} + +package() { + install -d "$pkgdir"/usr/bin + install chntpw cpnt reged "$pkgdir"/usr/bin/ +} + +sha512sums="a26d747f6e077d1bb3e9b8077781f8c37dd978e07b7426495862f15c9004572b706c34736fc4d1ed8856b1a43335d726b4d87c688f7f9a11fd6cc3a74d71a7fa chntpw-source-140201.zip +3ed747119d125b3e4dc8dbb2a697d411ef2f4403ec84c60177d8e35389bc695bb0c65f7aa4314ca320ffceec87e60e2a0c81d52544b90463fe23aa7d4a50df67 stdint.patch +1332407858eb20e0f1304472bc458789ef78638059137b91ff0b7bac9619740e8a608aace0330ace363853b5c02642fdbbc66bc47dac19f6807dae57cdaca4ca chntpw-080526-correct-test-for-failing-open-syscall.patch +a570451f52943a2ccdced349c5fe4e82e1a338dd6d0067ddaf18dc328b2c3ee3976d08827eee866b4654ccbda93ad95dcbabaddd0b6487a1e4112b66fc63bde1 chntpw-110511-detect-failure-to-write-key.patch +c61ea69ea1f039e470f501fddd1d3674ee7427e9084361a1aba03402d302a07efd1a2630e16f479bd3cef13b17e85c14cbfff53cb33bccb470465276b1b7ac22 chntpw-110511-reged-no-deref-null.patch +bcc314545272b5be04612e435a2f9dd13cbf065cfbd80aed2ed57147ee9e73b2478cd18e95cbaa7ad3b5dfcf4788a3026b5ddd767f89ea9c80ba7a2efc7ea8c4 chntpw-110511-robustness.patch +1bb5939d2cfd3718b9e630998b250c3c37d50d5769463f4f8456ede9fa4521e1bf9d9f05986883df36418d91bef591b34a81cd36bfacca053160e4d95c03cb4b chntpw-140201-get_abs_path.patch +85bbe9c7f21362cdff6becd94fe402d051a770105ec2eeb61e1936693e0a39ee03b6e971843c251f7768499444711392d966227f6126c328f7f58055cafe38d7 getopt-signed-char-return.patch" diff --git a/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch b/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch new file mode 100644 index 000000000..3c68146b0 --- /dev/null +++ b/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch @@ -0,0 +1,75 @@ +From jim@meyering.net Mon Jul 20 20:05:55 2009 +Return-Path: jim@meyering.net +X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on amd.home.annexia.org +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00, + UNPARSEABLE_RELAY autolearn=ham version=3.2.5 +Received: from mail.corp.redhat.com [10.5.5.51] + by amd.home.annexia.org with IMAP (fetchmail-6.3.8) + for <rjones@localhost> (single-drop); Mon, 20 Jul 2009 20:05:55 +0100 (BST) +Received: from zmta03.collab.prod.int.phx2.redhat.com (LHLO + zmta03.collab.prod.int.phx2.redhat.com) (10.5.5.33) by + mail06.corp.redhat.com with LMTP; Mon, 20 Jul 2009 15:05:47 -0400 (EDT) +Received: from localhost (localhost.localdomain [127.0.0.1]) + by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 2C1134E4EB + for <rjones@redhat.com>; Mon, 20 Jul 2009 15:05:47 -0400 (EDT) +Received: from zmta03.collab.prod.int.phx2.redhat.com ([127.0.0.1]) + by localhost (zmta03.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id a7N9dvNRkYQB for <rjones@redhat.com>; + Mon, 20 Jul 2009 15:05:47 -0400 (EDT) +Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) + by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 034384E4D6 + for <rjones@mail.corp.redhat.com>; Mon, 20 Jul 2009 15:05:46 -0400 (EDT) +Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) + by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n6KJ5kIt032703 + for <rjones@int-mx2.corp.redhat.com>; Mon, 20 Jul 2009 15:05:46 -0400 +Received: from mx.meyering.net (sebastian-int.corp.redhat.com [172.16.52.221]) + by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n6KJ5jf3021050 + for <rjones@redhat.com>; Mon, 20 Jul 2009 15:05:45 -0400 +Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000) + id D674638154; Mon, 20 Jul 2009 21:05:44 +0200 (CEST) +From: Jim Meyering <jim@meyering.net> +To: "Richard W. M. Jones" <rjones@redhat.com> +Subject: chntpw [PATCH] correct test for failing "open" syscall +Date: Mon, 20 Jul 2009 21:05:44 +0200 +Message-ID: <878wij899z.fsf@meyering.net> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 +Status: RO +Content-Length: 1103 +Lines: 33 + +This one is weird. +It must be code that is never exercised, +since the existing code is totally bogus. +The condition, !open(...), will almost always be true. +(sole exception is when starting a program with stdin +initially closed) + +>From bc4cddb06cf13c189fbdc93e6962cad072779097 Mon Sep 17 00:00:00 2001 +From: Jim Meyering <meyering@redhat.com> +Date: Mon, 20 Jul 2009 14:59:19 -0400 +Subject: [PATCH] correct test for failing "open" syscall + +* ntreg.c (writeHive): Test open() < 0, not !open(). +--- + ntreg.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/ntreg.c b/ntreg.c +index be6b680..21cd3e3 100644 +--- a/ntreg.c ++++ b/ntreg.c +@@ -2765,7 +2765,7 @@ int writeHive(struct hive *hdesc) + if ( !(hdesc->state & HMODE_DIRTY)) return(0); + + if ( !(hdesc->state & HMODE_OPEN)) { /* File has been closed */ +- if (!(hdesc->filedesc = open(hdesc->filename,O_RDWR))) { ++ if ((hdesc->filedesc = open(hdesc->filename,O_RDWR)) < 0) { + fprintf(stderr,"writeHive: open(%s) failed: %s, FILE NOT WRITTEN!\n",hdesc->filename,strerror(errno)); + return(1); + } +-- +1.6.2.5 + diff --git a/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch b/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch new file mode 100644 index 000000000..818639d83 --- /dev/null +++ b/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch @@ -0,0 +1,19 @@ +diff -ur chntpw-110511.orig/ntreg.c chntpw-110511/ntreg.c +--- chntpw-110511.orig/ntreg.c 2011-05-11 12:33:56.000000000 -0700 ++++ chntpw-110511/ntreg.c 2011-11-01 13:45:02.550421729 -0700 +@@ -3389,7 +3389,14 @@ + + fprintf(file,"\r\n"); /* Must end file with an empty line, windows does that */ + +- fclose(file); ++ if (ferror (file)) { ++ printf("failed to write file '%s'\n", filename); ++ fclose (file); ++ return; ++ } ++ if (fclose(file)) ++ printf("failed to write file '%s': %s\n", filename, ++ strerror(errno)); + } + + /* ================================================================ */ diff --git a/user/chntpw/chntpw-110511-reged-no-deref-null.patch b/user/chntpw/chntpw-110511-reged-no-deref-null.patch new file mode 100644 index 000000000..0193cd493 --- /dev/null +++ b/user/chntpw/chntpw-110511-reged-no-deref-null.patch @@ -0,0 +1,15 @@ +diff -ur chntpw-110511.orig/reged.c chntpw-110511/reged.c +--- chntpw-110511.orig/reged.c 2011-05-11 12:33:56.000000000 -0700 ++++ chntpw-110511/reged.c 2011-11-01 13:46:55.569625286 -0700 +@@ -167,6 +167,11 @@ + + if (edit) { /* Call editor. Rest of arguments are considered hives to load */ + hivename = argv[optind+no_hives]; ++ if (!hivename) { ++ fprintf(stderr,"with -e you must specify at least one hive file name\n"); ++ usage(); ++ exit(1); ++ } + do { + if (!(hive[no_hives] = openHive(hivename, + HMODE_RW|mode))) { diff --git a/user/chntpw/chntpw-110511-robustness.patch b/user/chntpw/chntpw-110511-robustness.patch new file mode 100644 index 000000000..ea2363f34 --- /dev/null +++ b/user/chntpw/chntpw-110511-robustness.patch @@ -0,0 +1,39 @@ +--- chntpw-110511.orig/ntreg.c 2011-05-11 12:33:56.000000000 -0700 ++++ chntpw-110511/ntreg.c 2011-12-18 17:09:06.290818997 -0800 +@@ -190,14 +190,18 @@ + + int fmyinput(char *prmpt, char *ibuf, int maxlen) + { +- ++ int len; + printf("%s",prmpt); + + fgets(ibuf,maxlen+1,stdin); ++ len = strlen(ibuf); + +- ibuf[strlen(ibuf)-1] = 0; ++ if (len) { ++ ibuf[len-1] = 0; ++ --len; ++ } + +- return(strlen(ibuf)); ++ return len; + } + + /* Print len number of hexbytes */ +@@ -4119,6 +4123,14 @@ + closeHive(hdesc); + return(NULL); + } ++ ++ if (r < sizeof (*hdesc)) { ++ fprintf(stderr, ++ "file is too small; got %d bytes while expecting %d or more\n", ++ r, sizeof (*hdesc)); ++ closeHive(hdesc); ++ return(NULL); ++ } + + /* Now run through file, tallying all pages */ + /* NOTE/KLUDGE: Assume first page starts at offset 0x1000 */ diff --git a/user/chntpw/chntpw-140201-get_abs_path.patch b/user/chntpw/chntpw-140201-get_abs_path.patch new file mode 100644 index 000000000..c9f1a3dec --- /dev/null +++ b/user/chntpw/chntpw-140201-get_abs_path.patch @@ -0,0 +1,10 @@ +--- chntpw-140201/ntreg.c.orig 2014-02-01 08:54:37.000000000 -0800 ++++ chntpw-140201/ntreg.c 2018-07-02 16:10:39.625152640 -0700 +@@ -1511,6 +1511,7 @@ + } + + strncpy(tmp,path,ABSPATHLEN-1); ++ tmp[ABSPATHLEN-1] = '\0'; + + if (key->type & 0x20) + keyname = mem_str(key->keyname, key->len_name); diff --git a/user/chntpw/getopt-signed-char-return.patch b/user/chntpw/getopt-signed-char-return.patch new file mode 100644 index 000000000..6dc78c624 --- /dev/null +++ b/user/chntpw/getopt-signed-char-return.patch @@ -0,0 +1,37 @@ +diff -ur chntpw-140201.orig/chntpw.c chntpw-140201/chntpw.c +--- chntpw-140201.orig/chntpw.c 2020-06-08 14:21:55.839494887 +0000 ++++ chntpw-140201/chntpw.c 2020-06-08 14:22:29.922115922 +0000 +@@ -1026,7 +1026,8 @@ + int mode = HMODE_INFO; + extern int /* opterr, */ optind; + extern char* optarg; +- char *filename,c; ++ char *filename; ++ signed char c; + char *who = "Administrator"; + char iwho[100]; + FILE *ch; /* Write out names of touched files to this */ +diff -ur chntpw-140201.orig/sampasswd.c chntpw-140201/sampasswd.c +--- chntpw-140201.orig/sampasswd.c 2020-06-08 14:21:49.661563576 +0000 ++++ chntpw-140201/sampasswd.c 2020-06-08 14:22:21.009215027 +0000 +@@ -140,7 +140,7 @@ + int first = 0; + int ret, wret, il; + char *hivename; +- char c; ++ signed char c; + char *usr = NULL; + + char *options = "rlHu:vNEthaf"; +diff -ur chntpw-140201.orig/samusrgrp.c chntpw-140201/samusrgrp.c +--- chntpw-140201.orig/samusrgrp.c 2020-06-08 14:21:47.330589493 +0000 ++++ chntpw-140201/samusrgrp.c 2020-06-08 14:22:19.218234941 +0000 +@@ -176,7 +176,7 @@ + int human = 0; + int ret, wret, il; + char *hivename; +- char c; ++ signed char c; + char *usr = NULL; + char *grp = NULL; + diff --git a/user/chntpw/stdint.patch b/user/chntpw/stdint.patch new file mode 100644 index 000000000..841e25ed7 --- /dev/null +++ b/user/chntpw/stdint.patch @@ -0,0 +1,11 @@ +--- ./ntreg.h.orig ++++ ./ntreg.h +@@ -25,6 +25,8 @@ + #ifndef _INCLUDE_NTREG_H + #define _INCLUDE_NTREG_H 1 + ++#include <stdint.h> ++ + #define SZ_MAX 4096 /* Max unicode strlen before we truncate */ + + #define KEY_ROOT 0x2c /* Type ID of ROOT key node */ diff --git a/user/ckbcomp/APKBUILD b/user/ckbcomp/APKBUILD new file mode 100644 index 000000000..8f4de4ff3 --- /dev/null +++ b/user/ckbcomp/APKBUILD @@ -0,0 +1,22 @@ +# Contributor: A. Wilcox <awilfox@adelielinux.org> +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=ckbcomp +pkgver=1.195 +pkgrel=0 +pkgdesc="XKB keyboard layout translation utility" +url="https://salsa.debian.org/installer-team/console-setup" +arch="noarch" +options="!check" # No test suite. +license="GPL-2.0+" +depends="perl" +makedepends="" +subpackages="$pkgname-doc" +source="http://ftp.de.debian.org/debian/pool/main/c/console-setup/console-setup_$pkgver.tar.xz" +builddir="$srcdir/console-setup" + +package() { + install -Dm755 -t "$pkgdir"/usr/bin Keyboard/ckbcomp + install -Dm644 -t "$pkgdir"/usr/share/man/man1 man/ckbcomp.1 +} + +sha512sums="f9ee8df45cfb78dea12b1ba3020e32f245dd940bc1d22801849f673f4448853c0ebadb6944a92b462e3e56c59ee13fd6d2130c260a1a406e1bb1c72e9902c04d console-setup_1.195.tar.xz" diff --git a/user/clisp/APKBUILD b/user/clisp/APKBUILD new file mode 100644 index 000000000..e4ce5999d --- /dev/null +++ b/user/clisp/APKBUILD @@ -0,0 +1,44 @@ +# Contributor: Soren Tempel <soeren+alpine@soeren-tempel.net> +# Contrubutor: Carlo Landmeter <clandmeter@gmail.com> +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=clisp +pkgver=2.49 +pkgrel=0 +pkgdesc="ANSI Common Lisp interpreter, compiler, and debugger" +url="https://clisp.sourceforge.io" +arch="all" +license="GPL-2.0-only" +depends="" +depends_dev="libsigsegv-dev libffcall-dev ncurses-dev" +makedepends="$depends_dev" +subpackages="$pkgname-dev $pkgname-doc" +source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2 + no-page.h.patch" + +prepare() { + default_prepare + update_config_sub +} + +build() { + ./configure \ + --prefix=/usr \ + --with-ffcall \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + "$builddir" + # Parallel builds fail + make -j1 +} + +check() { + make check +} + +package() { + make -j1 DESTDIR="$pkgdir" install +} + +sha512sums="eef66fc85199a2c283b616db61bf67ff103eeb0f19fa907da48994dc790b6f5f8d0c74fb3bd723c6b827c0ff3cfd89fa6ba67934fc669ed5d5249044b5140d81 clisp-2.49.tar.bz2 +86273c5d5d05a8d41ab6311192e0c757d3f7fe4d78546590830aa00f8c2f170fcb08f66ea739ae8834cec00cdf0f6a20824eb6a3d0f6df97be405c26b1cc5d39 no-page.h.patch" diff --git a/user/clisp/no-page.h.patch b/user/clisp/no-page.h.patch new file mode 100644 index 000000000..aafb98a31 --- /dev/null +++ b/user/clisp/no-page.h.patch @@ -0,0 +1,12 @@ +--- a/src/unix.d ++++ b/src/unix.d +@@ -135,9 +135,6 @@ + #ifdef UNIX_AUX + #include <sys/mmu.h> /* for SHMLBA */ + #endif +- #if defined(UNIX_LINUX) && !defined(UNIX_GNU) +- #include <asm/page.h> /* for SHMLBA on Linux 2.0 */ +- #endif + /* <sys/shm.h> declares shmget(), shmat(), shmdt(), shmctl() */ + #endif + /* used by SPVW, STREAM */ diff --git a/user/dovecot/APKBUILD b/user/dovecot/APKBUILD new file mode 100644 index 000000000..5af5254e1 --- /dev/null +++ b/user/dovecot/APKBUILD @@ -0,0 +1,286 @@ +# Contributor: Valery Kartel <valery.kartel@gmail.com> +# Contributor: Lukasz Jendrysik <scadu@yandex.com> +# Contributor: Michael Mason <ms13sp@gmail.com> +# Contributor: Jakub Jirutka <jakub@jirutka.cz> +# Contributor: Natanael Copa <ncopa@alpinelinux.org> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=dovecot +pkgver=2.3.10.1 +_pkgvermajor=2.3 +pkgrel=0 +_pigeonholever=0.5.9 +_pigeonholevermajor=${_pigeonholever%.*} +pkgdesc="IMAP and POP3 server" +url="https://www.dovecot.org/" +arch="all" +options="libtool" +license="LGPL-2.0+" +depends="openssl" +pkgusers="dovecot dovenull" +pkggroups="dovecot dovenull" +makedepends=" + autoconf + automake + bzip2-dev + clucene-dev + expat-dev + krb5-dev + libcap-dev + openssl-dev + libtool + linux-headers + linux-pam-dev + mariadb-dev + openldap-dev + postgresql-dev + sqlite-dev + zlib-dev + libsodium-dev + " +install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade" +subpackages=" + $pkgname-doc + $pkgname-dev + $pkgname-openrc + $pkgname-lmtpd + $pkgname-pop3d + $pkgname-submissiond + $pkgname-pigeonhole-plugin-ldap:_sieve_ldap + $pkgname-pigeonhole-plugin:_sieve + $pkgname-sql + $pkgname-pgsql + $pkgname-mysql + $pkgname-sqlite + $pkgname-gssapi + $pkgname-ldap + $pkgname-fts-solr:_fts_solr + $pkgname-fts-lucene:_fts_lucene + " +source="https://www.dovecot.org/releases/$_pkgvermajor/dovecot-$pkgver.tar.gz + https://pigeonhole.dovecot.org/releases/$_pkgvermajor/$pkgname-$_pkgvermajor-pigeonhole-$_pigeonholever.tar.gz + skip-iconv-check.patch + split-protocols.patch + default-config.patch + ssl-paths.patch + dovecot.logrotate + dovecot.initd + " +_builddir_pigeonhole="$srcdir/$pkgname-$_pkgvermajor-pigeonhole-$_pigeonholever" + +# secfixes: +# 2.3.10.1-r0: +# - CVE-2020-10957 +# - CVE-2020-10958 +# - CVE-2020-10967 + +_configure() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --disable-static \ + "$@" +} + +build() { + _configure \ + --with-gssapi=plugin \ + --with-ldap=plugin \ + --with-sql=plugin \ + --with-pam \ + --with-mysql \ + --with-sqlite \ + --with-pgsql \ + --with-solr \ + --with-lucene \ + --with-ssl=openssl \ + --with-ssldir=/etc/ssl/dovecot \ + --with-rundir=/run/dovecot + make + + # Build pigeonhole plugin + cd "$_builddir_pigeonhole" + _configure \ + --with-dovecot="$builddir" \ + --with-ldap=plugin + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install + + cd "$pkgdir" + + install -d ./etc/ssl/dovecot + install -D -m 755 "$srcdir"/dovecot.initd ./etc/init.d/dovecot + install -D -m 644 "$srcdir"/dovecot.logrotate ./etc/logrotate.d/dovecot + + # default config + rm ./etc/dovecot/* + rm ./usr/share/doc/dovecot/mkcert.sh + mv ./usr/share/doc/dovecot/dovecot-openssl.cnf ./etc/dovecot/ + mv ./usr/share/doc/dovecot/example-config/dovecot* \ + ./usr/share/doc/dovecot/example-config/conf.d \ + ./etc/dovecot/ + rm -fr ./usr/share/doc/dovecot/example-config + + # Installing pigeonhole plugin. + cd "$_builddir_pigeonhole" + make install DESTDIR="$pkgdir" + + # Moving config in the correct place + mv "$pkgdir"/usr/share/doc/dovecot/example-config/conf.d/* \ + "$pkgdir"/etc/dovecot/conf.d + + # Remove libtool archives. abuild doesn't remove them automatically even without options=libtool. + find "$pkgdir" -name '*.la' | xargs rm -f +} + +dev() { + default_dev + mkdir -p "$subpkgdir"/usr/lib/dovecot + mv "$pkgdir"/usr/lib/dovecot/dovecot-config \ + "$subpkgdir"/usr/lib/dovecot/ +} + +lmtpd() { + pkgdesc="$pkgdesc (LMTP server)" + _protocol lmtp +} + +pop3d() { + pkgdesc="$pkgdesc (POP3 daemon)" + _protocol pop3 +} + +submissiond() { + pkgdesc="$pkgdesc (mail submission agent)" + _protocol submission +} + +_protocol() { + depends="$pkgname=$pkgver-r$pkgrel" + _name="$1" + _protocolsd="$subpkgdir/usr/share/dovecot/protocols.d" + + cd "$pkgdir" + _submv usr/libexec/dovecot/$_name* + _submv etc/dovecot/conf.d/*-$_name.conf + + mkdir -p "$_protocolsd" + echo "protocols = \$protocols $_name" \ + > "$_protocolsd"/${subpkgname#$pkgname-}.conf +} + +_sieve() { + pkgdesc="Sieve and managesieve plugin for Dovecot" + depends="$pkgname=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*sieve_extprograms*') + _submv $(find usr/ -name '*sieve_imapsieve*') + _submv $(find usr/ -name '*sieve*') + _submv $(find usr/ -name '*pigeonhole*') + _submv $(find etc/dovecot/ -name '*sieve*') +} + +_sieve_ldap() { + pkgdesc="Sieve and managesieve plugin for Dovecot (LDAP support)" + depends="$pkgname-pigeonhole-plugin=$pkgver-r$pkgrel $pkgname-ldap=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*_sieve_storage_ldap_*') +} + +pgsql() { + pkgdesc="PostgreSQL driver for Dovecot" + depends="$pkgname-sql=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*_pgsql*') +} + +mysql() { + pkgdesc="MySQL driver for Dovecot" + depends="$pkgname-sql=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*_mysql*') +} + +sqlite() { + pkgdesc="SQLite driver for Dovecot" + depends="$pkgname-sql=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*_sqlite*') +} + +gssapi() { + pkgdesc="GSSAPI auth plugin for Dovecot" + depends="$pkgname=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*_gssapi*') +} + +ldap() { + pkgdesc="LDAP auth plugin for Dovecot" + depends="$pkgname=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*[_-]ldap*') + _submv $(find etc/dovecot/ -name '*-ldap.conf*') +} + +sql() { + pkgdesc="SQL plugin for dovecot" + depends="$pkgname=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*-sql.*') + _submv $(find etc/dovecot/ -name '*-sql.conf*') +} + +_fts_solr() { + pkgdesc="FTS-Solr plugin for dovecot" + depends="$pkgname=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*fts*solr*') +} + +_fts_lucene() { + pkgdesc="FTS-Lucene plugin for dovecot" + depends="$pkgname=$pkgver-r$pkgrel" + + cd "$pkgdir" + _submv $(find usr/ -name '*fts*lucene*') +} + +_submv() { + while [ $# -gt 0 ]; do + _dir=${1%/*} + mkdir -p "$subpkgdir"/$_dir + mv "$pkgdir/$1" "$subpkgdir/$_dir/" + [ "$(ls -A $pkgdir/$_dir)" ] || rmdir "$pkgdir"/$_dir + shift + done +} + +sha512sums="5c07436a3e861993f241caa2c60f035c533c5fceb5c8540c1717d31bedd54b82299f7ea11bfee12c72d4d33985d93a7130c4f56877864a7ad21cf7373a29cc06 dovecot-2.3.10.1.tar.gz +1b8d2ac8d3985dde035fc45df519788a924ba971f3e39717f5196ea56a982d4156226586d0a964473525d086967883ea52f2e624e81f7035cb0952b76f2414d8 dovecot-2.3-pigeonhole-0.5.9.tar.gz +fe4fbeaedb377d809f105d9dbaf7c1b961aa99f246b77189a73b491dc1ae0aa9c68678dde90420ec53ec877c08f735b42d23edb13117d7268420e001aa30967a skip-iconv-check.patch +794875dbf0ded1e82c5c3823660cf6996a7920079149cd8eed54231a53580d931b966dfb17185ab65e565e108545ecf6591bae82f935ab1b6ff65bb8ee93d7d5 split-protocols.patch +0d8f89c7ba6f884719b5f9fc89e8b2efbdc3e181de308abf9b1c1b0e42282f4df72c7bf62f574686967c10a8677356560c965713b9d146e2770aab17e95bcc07 default-config.patch +5e68a0042a7c11b3d8c411fc157f5960e2e3305dac11f4b6b880441e2b4105769ddf6c56f67a995af6e1a58f3bfa2c199ea51318a3a0e37c7ef0ae6c4109b13f ssl-paths.patch +9f19698ab45969f1f94dc4bddf6de59317daee93c9421c81f2dbf8a7efe6acf89689f1d30f60f536737bb9526c315215d2bce694db27e7b8d7896036a59c31f0 dovecot.logrotate +d91951b81150d7a3ef6a674c0dc7b012f538164dac4b9d27a6801d31da6813b764995a438f69b6a680463e1b60a3b4f2959654f68e565fe116ea60312d5e5e70 dovecot.initd" diff --git a/user/dovecot/default-config.patch b/user/dovecot/default-config.patch new file mode 100644 index 000000000..0f8a7385a --- /dev/null +++ b/user/dovecot/default-config.patch @@ -0,0 +1,46 @@ +--- a/doc/example-config/conf.d/10-mail.conf ++++ b/doc/example-config/conf.d/10-mail.conf +@@ -208,10 +208,10 @@ + + # UNIX socket path to master authentication server to find users. + # This is used by imap (for shared users) and lda. +-#auth_socket_path = /var/run/dovecot/auth-userdb ++#auth_socket_path = /run/dovecot/auth-userdb + + # Directory where to look up mail plugins. +-#mail_plugin_dir = /usr/lib/dovecot ++#mail_plugin_dir = /usr/lib/dovecot/modules + + # Space separated list of plugins to load for all services. Plugins specific to + # IMAP, LDA, etc. are added to this list in their own .conf files. +@@ -322,6 +322,7 @@ protocol !indexer-worker { + # them simultaneously. + #mbox_read_locks = fcntl + #mbox_write_locks = dotlock fcntl ++mbox_write_locks = fcntl + + # Maximum time to wait for lock (all of them) before aborting. + #mbox_lock_timeout = 5 mins +--- a/doc/example-config/conf.d/10-ssl.conf ++++ b/doc/example-config/conf.d/10-ssl.conf +@@ -3,7 +3,10 @@ + ## + + # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> +-#ssl = yes ++# Disable plain (unencrypted) POP3 and IMAP, allowed are only POP3+TLS, ++# POP3S, IMAP+TLS and IMAPS. ++# Plain IMAP and POP3 are still allowed for local connections. ++ssl = required + + # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before + # dropping root privileges, so keep the key file unreadable by anyone but +@@ -67,7 +67,7 @@ + #ssl_curve_list = + + # Prefer the server's order of ciphers over client's. +-#ssl_prefer_server_ciphers = no ++ssl_prefer_server_ciphers = yes + + # SSL crypto device to use, for valid values run "openssl engine" + #ssl_crypto_device = diff --git a/user/dovecot/dovecot.initd b/user/dovecot/dovecot.initd new file mode 100644 index 000000000..721f131ad --- /dev/null +++ b/user/dovecot/dovecot.initd @@ -0,0 +1,40 @@ +#!/sbin/openrc-run + +[ "$RC_SVCNAME" != "${RC_SVCNAME##*.}" ] && instance=${RC_SVCNAME##*.} + +description="Secure POP3/IMAP server" + +cfgfile=/etc/dovecot/dovecot${instance:+.$instance}.conf +pidfile=$(doveconf -c $cfgfile -h base_dir 2>/dev/null)/master.pid +command=/usr/sbin/dovecot +command_args=${instance:+-c $cfgfile} +required_files="$cfgfile" +extra_started_commands="reload reopen" +description_reload="Reload configuration" +description_reopen="Reopen log files" + +depend() { + need localmount net + before mta + after bootmisc firewall ldap mysql ntp-client ntpd postgresql saslauthd slapd + use logger +} + +start_pre() { + ebegin + doveconf -c $cfgfile -x >/dev/null 2>&1 && \ + checkpath --directory ${pidfile%/*} + eend $? +} + +reload() { + ebegin "Reloading $RC_SVCNAME configs and restarting auth/login processes" + start_pre && start-stop-daemon --signal HUP --pidfile $pidfile + eend $? +} + +reopen() { + ebegin "Reopening $RC_SVCNAME log files" + start-stop-daemon --signal USR1 --pidfile $pidfile + eend $? +} diff --git a/user/dovecot/dovecot.logrotate b/user/dovecot/dovecot.logrotate new file mode 100644 index 000000000..b1a4087b4 --- /dev/null +++ b/user/dovecot/dovecot.logrotate @@ -0,0 +1,12 @@ +/var/log/dovecot*.log { + daily + missingok + copytruncate + rotate 7 + compress + notifempty + sharedscripts + postrotate + /etc/init.d/dovecot --quiet --ifstarted reopen + endscript +} diff --git a/user/dovecot/dovecot.post-install b/user/dovecot/dovecot.post-install new file mode 100644 index 000000000..eb70cdece --- /dev/null +++ b/user/dovecot/dovecot.post-install @@ -0,0 +1,45 @@ +#!/bin/sh + +# based on doc/mkcert.sh + +# if ssl disabled then lets just exit +doveconf ssl 2>/dev/null | grep -Eq '(yes|required)' || exit 0 +# Generates a self-signed certificate. + +OPENSSL=${OPENSSL-openssl} +SSLDIR=${SSLDIR-/etc/ssl/dovecot} +OPENSSLCONFIG=${OPENSSLCONFIG-/etc/dovecot/dovecot-openssl.cnf} + +CERTDIR=$SSLDIR +KEYDIR=$SSLDIR + +# check if we have ssl_cert and/or key (for dovecot-2.0+) +# try expand the cert/key itself and if found, lets just keep it +[ -n "$(doveconf -x ssl_cert 2>/dev/null)" ] && exit 0 +[ -n "$(doveconf -x ssl_key 2>/dev/null)" ] && exit 0 + +ssl_cert_file=$(doveconf ssl_cert | sed 's/.*= <//') +ssl_key_file=$(doveconf ssl_key | sed 's/.*= <//') + +CERTFILE=${ssl_cert_file:-$CERTDIR/server.pem} +KEYFILE=${ssl_key_file:-$KEYDIR/server.key} + +if [ -e "$CERTFILE" ]; then + echo "Keeping existing $CERTFILE" + exit 0 +fi + +if [ -e "$KEYFILE" ]; then + echo "Keeping existing $KEYFILE" + exit 0 +fi + +if [ ! -c /dev/urandom ] && [ ! -c /dev/random ]; then + echo "No /dev/urandom or /dev/random so ssl cert not created" + exit 1 +fi + +$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 365 || exit 2 +chmod 0600 $KEYFILE +echo +$OPENSSL x509 -subject -fingerprint -noout -in $CERTFILE || exit 2 diff --git a/user/dovecot/dovecot.post-upgrade b/user/dovecot/dovecot.post-upgrade new file mode 100644 index 000000000..69f4366ed --- /dev/null +++ b/user/dovecot/dovecot.post-upgrade @@ -0,0 +1,7 @@ +#!/bin/sh +if ! grep ^"version_ignore=yes" /etc/dovecot/dovecot.conf; then + printf "dovecot restart required (version_ignore=yes not set)\n" +fi + +exit $? + diff --git a/user/dovecot/dovecot.pre-install b/user/dovecot/dovecot.pre-install new file mode 100644 index 000000000..73a0aa3e3 --- /dev/null +++ b/user/dovecot/dovecot.pre-install @@ -0,0 +1,8 @@ +#!/bin/sh + +groupadd -r dovecot 2>/dev/null +groupadd -r dovenull 2>/dev/null +useradd -r -u 90 -h /dev/null -s /sbin/nologin -g dovecot dovecot 2>/dev/null +useradd -r -u 91 -h /dev/null -s /sbin/nologin -g dovenull dovenull 2>/dev/null + +exit 0 diff --git a/user/dovecot/skip-iconv-check.patch b/user/dovecot/skip-iconv-check.patch new file mode 100644 index 000000000..bb1002c84 --- /dev/null +++ b/user/dovecot/skip-iconv-check.patch @@ -0,0 +1,11 @@ +--- a/src/lib-charset/test-charset.c ++++ b/src/lib-charset/test-charset.c +@@ -159,7 +159,7 @@ + static void (*const test_functions[])(void) = { + test_charset_is_utf8, + test_charset_utf8, +-#ifdef HAVE_ICONV ++#if 0 //def HAVE_ICONV + test_charset_iconv, + test_charset_iconv_crashes, + test_charset_iconv_utf7_state, diff --git a/user/dovecot/split-protocols.patch b/user/dovecot/split-protocols.patch new file mode 100644 index 000000000..b4bed2ccb --- /dev/null +++ b/user/dovecot/split-protocols.patch @@ -0,0 +1,30 @@ +For each protocol $prot, which is moved into subpackage $subname, +is installed file /usr/share/dovecot/protocols.d/$subname.conf with: + + protocols = $protocols $prot + +--- a/doc/example-config/dovecot.conf ++++ b/doc/example-config/dovecot.conf +@@ -20,8 +20,9 @@ + # options. The paths listed here are for configure --prefix=/usr + # --sysconfdir=/etc --localstatedir=/var + +-# Protocols we want to be serving. +-#protocols = imap pop3 lmtp submission ++# Enable installed protocols. ++#protocols = imap ++!include_try /usr/share/dovecot/protocols.d/*.conf + + # A comma separated list of IPs or hosts where to listen in for connections. + # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. +--- a/src/master/master-settings.c.orig ++++ b/src/master/master-settings.c +@@ -206,7 +206,7 @@ + .state_dir = PKG_STATEDIR, + .libexec_dir = PKG_LIBEXECDIR, + .instance_name = PACKAGE, +- .protocols = "imap pop3 lmtp", ++ .protocols = "imap", + .listen = "*, ::", + .ssl = "yes:no:required", + .default_internal_user = "dovecot", diff --git a/user/dovecot/ssl-paths.patch b/user/dovecot/ssl-paths.patch new file mode 100644 index 000000000..b354b607e --- /dev/null +++ b/user/dovecot/ssl-paths.patch @@ -0,0 +1,13 @@ +--- dovecot-2.3.10/doc/example-config/conf.d/10-ssl.conf 2020-03-05 14:35:53.000000000 +0000 ++++ dovecot-2.3.10.new/doc/example-config/conf.d/10-ssl.conf 2020-04-26 06:49:45.860000000 +0000 +@@ -9,8 +9,8 @@ + # dropping root privileges, so keep the key file unreadable by anyone but + # root. Included doc/mkcert.sh can be used to easily generate self-signed + # certificate, just make sure to update the domains in dovecot-openssl.cnf +-ssl_cert = </etc/ssl/certs/dovecot.pem +-ssl_key = </etc/ssl/private/dovecot.pem ++ssl_cert = </etc/ssl/dovecot/server.pem ++ssl_key = </etc/ssl/dovecot/server.key + + # If key file is password protected, give the password here. Alternatively + # give it when starting dovecot with -p parameter. Since this file is often diff --git a/user/efibootmgr/APKBUILD b/user/efibootmgr/APKBUILD index 5f2149b22..379316b65 100644 --- a/user/efibootmgr/APKBUILD +++ b/user/efibootmgr/APKBUILD @@ -5,7 +5,7 @@ pkgver=16 pkgrel=0 pkgdesc="User-space application to modify the Intel EFI Boot Manager" url="https://github.com/rhboot/efibootmgr" -arch="pmmx x86_64 arm64 ia64" +arch="pmmx x86_64 aarch64 ia64" options="!check" # Dangerous. license="GPL-2.0-only" depends="" diff --git a/user/efivar/APKBUILD b/user/efivar/APKBUILD index 13b1b64bd..c8a8ba600 100644 --- a/user/efivar/APKBUILD +++ b/user/efivar/APKBUILD @@ -5,7 +5,7 @@ pkgver=37 pkgrel=0 pkgdesc="Tools and library to manipulate EFI variables" url="https://github.com/rhboot/efivar" -arch="pmmx x86_64 arm64 ia64" +arch="pmmx x86_64 aarch64 ia64" options="!check" # "WARNING: You should probably not run tests /ever/. This is not a joke." license="LGPL-2.1+" depends="" diff --git a/user/elixir/APKBUILD b/user/elixir/APKBUILD new file mode 100644 index 000000000..e23466f18 --- /dev/null +++ b/user/elixir/APKBUILD @@ -0,0 +1,28 @@ +# Contributor: Daniel Isaksen <d@duniel.no> +# Contributor: Marlus Saraiva <marlus.saraiva@gmail.com> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=elixir +pkgver=1.10.3 +pkgrel=0 +pkgdesc="Dynamic, functional language designed for building scalable and maintainable applications" +url="https://elixir-lang.org/" +arch="noarch" +license="Apache-2.0" +depends="erlang" +makedepends="erlang-dev" +subpackages="$pkgname-doc" +source="$pkgname-$pkgver.tar.gz::https://github.com/elixir-lang/elixir/archive/v$pkgver.tar.gz" + +build() { + make +} + +check() { + make test +} + +package() { + make DESTDIR="$pkgdir" PREFIX=/usr install +} + +sha512sums="66b18b983e5374afbd4d94c43a880c5e46a9aa150fa6f38be74ff7f58a19eaaee00248b202d9ae3f6b78e2495fc8d5cec755de644256a731be367766c3812855 elixir-1.10.3.tar.gz" diff --git a/user/eudev/APKBUILD b/user/eudev/APKBUILD index 16858e1f5..86a8e30f8 100644 --- a/user/eudev/APKBUILD +++ b/user/eudev/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=eudev pkgver=3.2.9 -pkgrel=0 +pkgrel=1 pkgdesc="OpenRC compatible fork of systemd-udev" url="https://wiki.gentoo.org/wiki/Project:Eudev" arch="all" @@ -91,12 +91,16 @@ openrc() { replaces="udev-init-scripts-openrc" default_openrc install -d "$subpkgdir"/usr/share/openrc/runlevels/sysinit + install -d "$subpkgdir"/etc/runlevels/sysinit # https://bts.adelielinux.org/show_bug.cgi?id=51 # if eudev is installed, it should be running in the sysinit runlevel ln -s /etc/init.d/udev \ "$subpkgdir"/usr/share/openrc/runlevels/sysinit/udev + ln -s /etc/init.d/udev "$subpkgdir"/etc/runlevels/sysinit/udev ln -s /etc/init.d/udev-trigger \ "$subpkgdir"/usr/share/openrc/runlevels/sysinit/udev-trigger + ln -s /etc/init.d/udev-trigger \ + "$subpkgdir"/etc/runlevels/sysinit/udev-trigger } sha512sums="09e49fff9848e72507ef14b9d4cfab2d1443f16d5b3d54d2b0e4f6b04c471ca41f09200cb8772e9f850f0dc4a574a7ec7eede7ce11cbabda65e210a89287531f eudev-3.2.9.tar.gz diff --git a/user/f2fs-tools/APKBUILD b/user/f2fs-tools/APKBUILD new file mode 100644 index 000000000..7784c170d --- /dev/null +++ b/user/f2fs-tools/APKBUILD @@ -0,0 +1,34 @@ +# Contributor: CyberLeo <cyberleo@cyberleo.net> +# Maintainer: CyberLeo <cyberleo@cyberleo.net> +pkgname=f2fs-tools +pkgver=1.13.0 +pkgrel=0 +pkgdesc="Tools for the Flash-Friendly File System (F2FS)" +url="https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git" +arch="all" +options="!check" # No test suite. +license="GPL-2.0+ OR LGPL-2.1+" +depends="" +makedepends="automake autoconf bsd-compat-headers libtool util-linux-dev linux-headers" +subpackages="$pkgname-doc $pkgname-dev $pkgname-libs" +source="https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git/snapshot/$pkgname-$pkgver.tar.gz" + +prepare() { + default_prepare + ./autogen.sh +} + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr + make +} + +package() { + make install DESTDIR="$pkgdir" + install -D -m644 mkfs/f2fs_format_utils.h "$pkgdir"/usr/include/ +} + +sha512sums="fd920a19e8705a65395809aeef55791c5678ed31c026cdf41fc173e0dbcacdef1db7e0e184ec1aae8637b1784e2ad6e0207583e918255483fe43c73f89bd7f7f f2fs-tools-1.13.0.tar.gz" diff --git a/user/ffmpeg/APKBUILD b/user/ffmpeg/APKBUILD index b6de0597c..06e68aecb 100644 --- a/user/ffmpeg/APKBUILD +++ b/user/ffmpeg/APKBUILD @@ -4,7 +4,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=ffmpeg pkgver=4.2.2 -pkgrel=0 +pkgrel=1 pkgdesc="Record, convert, and stream audio and video" url="https://ffmpeg.org/" arch="all" @@ -21,6 +21,8 @@ makedepends="alsa-lib-dev bzip2-dev freetype-dev gnutls-dev imlib2-dev subpackages="$pkgname-dev $pkgname-doc $pkgname-libs" source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch + CVE-2019-13312.patch + CVE-2020-12284.patch " # secfixes: @@ -37,6 +39,9 @@ source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz # - CVE-2017-14222 # - CVE-2017-14223 # - CVE-2017-14225 +# 4.2.2-r1: +# - CVE-2019-13312 +# - CVE-2020-12284 build() { _asm="" @@ -98,4 +103,6 @@ libs() { } sha512sums="381cd6732fa699eb89000621cf34256920596ed1f9de3c2194dbad35fdf2165269eb7d3a147a0eb75dc18fbb6d601382b5801750e09fc63547766842f84208e3 ffmpeg-4.2.2.tar.xz -1047a23eda51b576ac200d5106a1cd318d1d5291643b3a69e025c0a7b6f3dbc9f6eb0e1e6faa231b7e38c8dd4e49a54f7431f87a93664da35825cc2e9e8aedf4 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch" +1047a23eda51b576ac200d5106a1cd318d1d5291643b3a69e025c0a7b6f3dbc9f6eb0e1e6faa231b7e38c8dd4e49a54f7431f87a93664da35825cc2e9e8aedf4 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch +0c53680ae480b8f848893d4e5c40ea522bd25a72860e0955e039ec838ee09159ab2bfa0eafc71113009082c7f53981ba70116dcef17053cd3cc3ea59e4da5a5c CVE-2019-13312.patch +910f8da9ed8e0998c311cc451f1725a20c4cc3e9f0c2d1981a1ceea8da5f434519044b4997e71d87424e19fcc45cb203238e49ad178e313696667e6c9bf311c9 CVE-2020-12284.patch" diff --git a/user/ffmpeg/CVE-2019-13312.patch b/user/ffmpeg/CVE-2019-13312.patch new file mode 100644 index 000000000..1ef9d92b4 --- /dev/null +++ b/user/ffmpeg/CVE-2019-13312.patch @@ -0,0 +1,30 @@ +From ea56af88956061d700043c5c4b026ac57834b0c8 Mon Sep 17 00:00:00 2001 +From: Carl Eugen Hoyos <ceffmpeg@gmail.com> +Date: Mon, 1 Jul 2019 01:45:36 +0200 +Subject: [PATCH] lavc/zmbvenc: Do not left-shift negative values. + +Fixes the following ubsan errors with the sample from ticket #7980: +libavcodec/zmbvenc.c:243:29: runtime error: left shift of negative value -4 +libavcodec/zmbvenc.c:244:28: runtime error: left shift of negative value -2 +--- + libavcodec/zmbvenc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libavcodec/zmbvenc.c b/libavcodec/zmbvenc.c +index 4887175..0e22ce6 100644 +--- a/libavcodec/zmbvenc.c ++++ b/libavcodec/zmbvenc.c +@@ -240,8 +240,8 @@ FF_ENABLE_DEPRECATION_WARNINGS + tprev = prev + x * c->bypp; + + zmbv_me(c, tsrc, p->linesize[0], tprev, c->pstride, x, y, &mx, &my, &xored); +- mv[0] = (mx << 1) | !!xored; +- mv[1] = my << 1; ++ mv[0] = (mx * 2) | !!xored; ++ mv[1] = my * 2; + tprev += mx * c->bypp + my * c->pstride; + if(xored){ + for(j = 0; j < bh2; j++){ +-- +2.7.4 + diff --git a/user/ffmpeg/CVE-2020-12284.patch b/user/ffmpeg/CVE-2020-12284.patch new file mode 100644 index 000000000..7360b5870 --- /dev/null +++ b/user/ffmpeg/CVE-2020-12284.patch @@ -0,0 +1,32 @@ +From 1812352d767ccf5431aa440123e2e260a4db2726 Mon Sep 17 00:00:00 2001 +From: Michael Niedermayer <michael@niedermayer.cc> +Date: Sat, 7 Mar 2020 15:42:58 +0100 +Subject: [PATCH] avcodec/cbs_jpeg: Check length for SOS + +Fixes: out of array access +Fixes: 19734/clusterfuzz-testcase-minimized-ffmpeg_BSF_TRACE_HEADERS_fuzzer-5673507031875584 +Fixes: 19353/clusterfuzz-testcase-minimized-ffmpeg_BSF_TRACE_HEADERS_fuzzer-5703944462663680 + +Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg +Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> +--- + libavcodec/cbs_jpeg.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libavcodec/cbs_jpeg.c b/libavcodec/cbs_jpeg.c +index 6bbce5f..89512a2 100644 +--- a/libavcodec/cbs_jpeg.c ++++ b/libavcodec/cbs_jpeg.c +@@ -197,6 +197,9 @@ static int cbs_jpeg_split_fragment(CodedBitstreamContext *ctx, + if (marker == JPEG_MARKER_SOS) { + length = AV_RB16(frag->data + start); + ++ if (length > end - start) ++ return AVERROR_INVALIDDATA; ++ + data_ref = NULL; + data = av_malloc(end - start + + AV_INPUT_BUFFER_PADDING_SIZE); +-- +2.7.4 + diff --git a/user/firefox-esr/APKBUILD b/user/firefox-esr/APKBUILD index 8dfad228a..f780d8765 100644 --- a/user/firefox-esr/APKBUILD +++ b/user/firefox-esr/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Molly Miller <adelie@m-squa.red> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=firefox-esr -pkgver=68.7.0 -pkgrel=1 +pkgver=68.9.0 +pkgrel=0 pkgdesc="Firefox web browser (extended support release)" url="https://www.mozilla.org/firefox/" arch="all" @@ -41,8 +41,8 @@ source="https://ftp.mozilla.org/pub/firefox/releases/$_ffxver/source/firefox-$_f mozilla-build-arm.patch ppc32-fix.patch rust-32bit.patch - rust-config.patch - seccomp-membarrier.patch + seccomp-musl.patch + seccomp-time64.patch shut-up-warning.patch skia-sucks1.patch skia-sucks2.patch @@ -121,6 +121,16 @@ ldpath="$_mozappdir" # - CVE-2020-6821 # - CVE-2020-6822 # - CVE-2020-6825 +# 68.8.0-r0: +# - CVE-2020-6831 +# - CVE-2020-12387 +# - CVE-2020-12392 +# - CVE-2020-12395 +# 68.9.0-r0: +# - CVE-2020-12399 +# - CVE-2020-12405 +# - CVE-2020-12406 +# - CVE-2020-12410 unpack() { default_unpack @@ -236,7 +246,7 @@ package() { EOF } -sha512sums="a3ddcf8ffe5f568b30b1fc9ddcaa5cebe600bf11ce353c09507d5466f999022d45a0dee9a08f53f37b10202a2e2ce4c180743cd6a2ca38dfea1c3e4487b18593 firefox-68.7.0esr.source.tar.xz +sha512sums="98431800d80f7c680aef9eede29df8217810912a319a7f7f8c2e637c43ecd4f4e29223a417afb2a6315e825f979453ff6e6b5a575649aba5cc63ce5956375bb8 firefox-68.9.0esr.source.tar.xz 16e814e8dcffc707b595ca2919bd2fa3db0d15794c63d977364652c4a5b92e90e72b8c9e1cc83b5020398bd90a1b397dbdd7cb931c49f1aa4af6ef95414b43e0 Python-2.7.16.tar.xz f82758d279cd12a1b30a9b36ac3c265cfb137df3db7ae185f2c538504e46fa70ace1b051fce847356851062b5cc9cd741a6d33d54f8cd103aa0c8272cb19ccc4 mozconfig ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53f94c76e722ba0bab73e28d83ec12d3e672554712e6b08613 bad-google-code.patch @@ -247,8 +257,8 @@ de8e3b15cd7dffb0eca5a729434986e5916234914cdc5fdcdbbc67d8bb439a535ed932293518dd74 e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch 06a3f4ee6d3726adf3460952fcbaaf24bb15ef8d15b3357fdd1766c7a62b00bd53a1e943b5df7f4e1a69f4fae0d44b64fae1e027d7812499c77894975969ea10 ppc32-fix.patch 7c615703dc9b8427eeadd13bc9beda02e1c3d986cac1167feaf48fdfdcc15b7456460d4d58f301054cf459242ee75bbcd76bf67e26c2a443bc5655975d24ca1b rust-32bit.patch -45613d476e85fe333ef8091acce4806803953c1a99de4f03ff577cf20c5a1a3d635d0589e1490da104ef80721f4f1b1d35045af3c6892c1a468fa84095f27ad8 rust-config.patch -36369f2e237e894b2f9e70ffa0579bb3cddf1efa638a36b3469e9f529c28d7b72611fa426c5534d93094a8deb1376f43f6661447072dc6dfc6191ca5eebd4604 seccomp-membarrier.patch +efc77a320850e10e8b99e6fb5d3dd28a3044e287fd87efbdf95807de26a6885235b2d994743cb374345d91a0353abd70a5790b829e37b717b77605e24d4f7f98 seccomp-musl.patch +4b20dfa3ef3d470af069a274c53ea35c67d2d123f1b543ee243e7038ed94f5a1a6121f1f67713a9442e246b979c042f11efc7a6c32d0b8d3fd2c448dd1258733 seccomp-time64.patch 39ddb15d1453a8412275c36fc8db3befc69dffd4a362e932d280fb7fd1190db595a2af9b468ee49e0714f5e9df6e48eb5794122a64fa9f30d689de8693acbb15 shut-up-warning.patch e751ffab263f03d4c74feebc617e3af115b1b53cf54fe16c3acc585eec67773f37aa8de4c19599fa6478179b01439025112ef2b759aa9923c9900e7081cb65a9 skia-sucks1.patch 9152bd3e6dc446337e6a2ed602279c620aedecc796ba28e777854c4f41fcf3067f9ebd086a4b63a6b76c2e69ec599ac6435b8eeda4f7488b1c45f69113facba4 skia-sucks2.patch diff --git a/user/firefox-esr/rust-config.patch b/user/firefox-esr/rust-config.patch deleted file mode 100644 index eab72a0e4..000000000 --- a/user/firefox-esr/rust-config.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -urw firefox-68.0-old/build/moz.configure/rust.configure firefox-68.0/build/moz.configure/rust.configure ---- firefox-68.0-old/build/moz.configure/rust.configure 2019-07-07 15:56:29.345963800 +0000 -+++ firefox-68.0/build/moz.configure/rust.configure 2019-07-07 16:19:25.990645334 +0000 -@@ -193,12 +193,16 @@ - ambiguous = set() - per_raw_os = {} - for t in out: -+ if 'fuchsia' in t: continue - t = split_triplet(t, allow_unknown=True) - endianness = t.endianness - if t.cpu.startswith('thumb') and endianness not in ('big', 'little'): - endianness = 'little' - key = (t.cpu, endianness, t.os) - if key in per_os: -+ # hax to allow Adélie toolchains to work -+ if 'foxkit' in per_os[key].alias: -+ continue - previous = per_os[key] - per_raw_os[(previous.cpu, previous.endianness, - previous.raw_os)] = previous diff --git a/user/firefox-esr/seccomp-membarrier.patch b/user/firefox-esr/seccomp-membarrier.patch deleted file mode 100644 index be1744113..000000000 --- a/user/firefox-esr/seccomp-membarrier.patch +++ /dev/null @@ -1,12 +0,0 @@ -musl ldso issues a membarrier when setting up TLS - ---- firefox-68.7.0/security/sandbox/linux/SandboxFilter.cpp 2020-04-03 19:30:03.000000000 +0000 -+++ firefox-68.7.0/security/sandbox/linux/SandboxFilter.cpp 2020-04-19 04:59:30.280000000 +0000 -@@ -529,6 +529,7 @@ class SandboxPolicyCommon : public Sandb - - // ipc::Shmem; also, glibc when creating threads: - case __NR_mprotect: -+ case __NR_membarrier: - return Allow(); - - // madvise hints used by malloc; see bug 1303813 and bug 1364533 diff --git a/user/firefox-esr/seccomp-musl.patch b/user/firefox-esr/seccomp-musl.patch new file mode 100644 index 000000000..edd4a3024 --- /dev/null +++ b/user/firefox-esr/seccomp-musl.patch @@ -0,0 +1,49 @@ +Backport of https://hg.mozilla.org/mozilla-central/rev/a0be746532f437055e4190cc8db802ad1239405e + +diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp +--- a/security/sandbox/linux/SandboxFilter.cpp ++++ b/security/sandbox/linux/SandboxFilter.cpp +@@ -419,16 +419,20 @@ class SandboxPolicyCommon : public Sandb + case __NR_faccessat: + return Trap(AccessAtTrap, mBroker); + CASES_FOR_stat: + return Trap(StatTrap, mBroker); + CASES_FOR_lstat: + return Trap(LStatTrap, mBroker); + CASES_FOR_fstatat: + return Trap(StatAtTrap, mBroker); ++ // Used by new libc and Rust's stdlib, if available. ++ // We don't have broker support yet so claim it does not exist. ++ case __NR_statx: ++ return Error(ENOSYS); + case __NR_chmod: + return Trap(ChmodTrap, mBroker); + case __NR_link: + return Trap(LinkTrap, mBroker); + case __NR_mkdir: + return Trap(MkdirTrap, mBroker); + case __NR_symlink: + return Trap(SymlinkTrap, mBroker); +@@ -538,16 +542,20 @@ class SandboxPolicyCommon : public Sandb + .ElseIf(advice == MADV_HUGEPAGE, Allow()) + .ElseIf(advice == MADV_NOHUGEPAGE, Allow()) + #ifdef MOZ_ASAN + .ElseIf(advice == MADV_DONTDUMP, Allow()) + #endif + .Else(InvalidSyscall()); + } + ++ // musl libc will set this up in pthreads support. ++ case __NR_membarrier: ++ return Allow(); ++ + // Signal handling + #if defined(ANDROID) || defined(MOZ_ASAN) + case __NR_sigaltstack: + #endif + CASES_FOR_sigreturn: + CASES_FOR_sigprocmask: + CASES_FOR_sigaction: + return Allow(); + + diff --git a/user/firefox-esr/seccomp-time64.patch b/user/firefox-esr/seccomp-time64.patch new file mode 100644 index 000000000..72cc28b5d --- /dev/null +++ b/user/firefox-esr/seccomp-time64.patch @@ -0,0 +1,112 @@ +This drops the use of the chromium sandbox syscall headers which were +defining syscall numbers if they were undefined. This masked the time64 +issue initially since while musl renamed several of the time32 syscall +numbers to catch breakage like this, these headers were silently +bringing them back. I did this by comparing the syscall numbers provided +by the chromium and musl headers and redefining the generic names to +their time64 counterparts. + +For gettimeofday and settimeofday there does not appear to be a time64 +counterpart so I have defined them as the time32 versions. For +settimeofday this should not matter (the seccomp filter will block this +by virture of not being on the whitelist - no content process needs to +set the time anyway). + +It is not possible to entirely block the usage of time32 syscalls +because musl uses them internally when it can or in fallback paths. + +I did not check the MIPS headers since we don't currently ship a MIPS +port, so in the future those includes should be examined and dropped +too... + +--- firefox-68.8.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_syscalls.h 2020-04-29 16:49:45.000000000 -0500 ++++ firefox-68.8.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_syscalls.h 2020-05-20 03:09:47.369457646 -0500 +@@ -8,18 +8,7 @@ + + #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ + #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ +- +-#if defined(__x86_64__) +-#include "sandbox/linux/system_headers/x86_64_linux_syscalls.h" +-#endif +- +-#if defined(__i386__) +-#include "sandbox/linux/system_headers/x86_32_linux_syscalls.h" +-#endif +- +-#if defined(__arm__) && defined(__ARM_EABI__) +-#include "sandbox/linux/system_headers/arm_linux_syscalls.h" +-#endif ++#include <sys/syscall.h> + + #if defined(__mips__) && (_MIPS_SIM == _ABIO32) + #include "sandbox/linux/system_headers/mips_linux_syscalls.h" +@@ -33,5 +22,36 @@ + #include "sandbox/linux/system_headers/arm64_linux_syscalls.h" + #endif + ++#if !defined(__NR_clock_getres) && defined(__NR_clock_getres_time64) ++#define __NR_clock_getres __NR_clock_getres_time64 ++#endif ++#if !defined(__NR_clock_gettime) && defined(__NR_clock_gettime64) ++#define __NR_clock_gettime __NR_clock_gettime64 ++#endif ++#if !defined(__NR_clock_nanosleep) && defined(__NR_clock_nanosleep_time64) ++#define __NR_clock_nanosleep __NR_clock_nanosleep_time64 ++#endif ++#if !defined(__NR_clock_settime) && defined(__NR_clock_settime64) ++#define __NR_clock_settime __NR_clock_settime64 ++#endif ++#if !defined(__NR_gettimeofday) && defined(__NR_gettimeofday_time32) ++#define __NR_gettimeofday __NR_gettimeofday_time32 ++#endif ++#if !defined(__NR_settimeofday) && defined(__NR_settimeofday_time32) ++#define __NR_settimeofday __NR_settimeofday_time32 ++#endif ++#if !defined(__NR_timer_gettime) && defined(__NR_timer_gettime64) ++#define __NR_timer_gettime __NR_timer_gettime64 ++#endif ++#if !defined(__NR_timer_settime) && defined(__NR_timer_settime64) ++#define __NR_timer_settime __NR_timer_settime64 ++#endif ++#if !defined(__NR_timerfd_gettime) && defined(__NR_timerfd_gettime64) ++#define __NR_timerfd_gettime __NR_timerfd_gettime64 ++#endif ++#if !defined(__NR_timerfd_settime) && defined(__NR_timerfd_settime64) ++#define __NR_timerfd_settime __NR_timerfd_settime64 ++#endif ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ + +--- firefox-68.8.0/security/sandbox/linux/SandboxFilter.cpp 2020-04-29 16:49:45.000000000 -0500 ++++ firefox-68.8.0/security/sandbox/linux/SandboxFilter.cpp 2020-05-19 23:33:27.829642593 -0500 +@@ -478,6 +478,9 @@ class SandboxPolicyCommon : public Sandb + + // Thread synchronization + case __NR_futex: ++#ifdef __NR_futex_time64 ++ case __NR_futex_time64: ++#endif + // FIXME: This could be more restrictive.... + return Allow(); + +@@ -488,6 +491,9 @@ class SandboxPolicyCommon : public Sandb + case __NR_epoll_pwait: + case __NR_epoll_ctl: + case __NR_ppoll: ++#ifdef __NR_ppoll_time64 ++ case __NR_ppoll_time64: ++#endif + case __NR_poll: + return Allow(); + +@@ -1017,6 +1023,9 @@ class ContentSandboxPolicy : public Sand + + CASES_FOR_select: + case __NR_pselect6: ++#ifdef __NR_pselect6_time64 ++ case __NR_pselect6_time64: ++#endif + return Allow(); + + CASES_FOR_getdents: diff --git a/legacy/glfw/APKBUILD b/user/glfw/APKBUILD index ab55f9771..ab55f9771 100644 --- a/legacy/glfw/APKBUILD +++ b/user/glfw/APKBUILD diff --git a/user/horizon/APKBUILD b/user/horizon/APKBUILD new file mode 100644 index 000000000..6c3278bc1 --- /dev/null +++ b/user/horizon/APKBUILD @@ -0,0 +1,136 @@ +# Contributor: A. Wilcox <awilfox@adelielinux.org> +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=horizon +pkgver=0.9.2 +pkgrel=0 +pkgdesc="Installation tools for Adélie Linux" +url="https://horizon.adelielinux.org/" +arch="all" +options="!archcheck !check" # Unpackaged dependency ruby-aruba. +license="AGPL-3.0+" +depends="" +checkdepends="ruby-aruba ruby-rspec valgrind" +# Second group is the Qt5 UI deps. +makedepends="bcnm-dev boost-dev cmake curl-dev eudev-dev libarchive-dev + linux-headers parted-dev skalibs-dev util-linux-dev + + libcap-dev libx11-dev libxkbfile-dev qt5-qtbase-dev" +subpackages="$pkgname-image $pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-qt5 + $pkgname-tools $pkgname-wizard $pkgname-boot" +source="https://distfiles.adelielinux.org/source/horizon-$pkgver.tar.xz" + +build() { + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + cmake \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=True \ + -DBUILD_TOOLS=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-format-truncation" \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + -DINSTALL=ON \ + ${CMAKE_CROSSOPTS} \ + -Bbuild + make -C build + + cmake \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=False \ + -DBUILD_TOOLS=OFF \ + -DBUILD_UI=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-format-truncation" \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + -DINSTALL=OFF \ + ${CMAKE_CROSSOPTS} \ + -Bbuild-wizard + make -C build-wizard +} + +check() { + CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test +} + +package() { + make DESTDIR="$pkgdir" -C build install +} + +image() { + pkgdesc="Tools for generating images using HorizonScript" + depends="mtools" + mkdir -p "$subpkgdir"/usr/bin + mkdir -p "$subpkgdir"/usr/lib + mkdir -p "$subpkgdir"/usr/share/horizon + + mv "$pkgdir"/usr/bin/hscript-image "$subpkgdir"/usr/bin/ + mv "$pkgdir"/usr/lib/libhi-backends.so "$subpkgdir"/usr/lib/ + mv "$pkgdir"/usr/share/horizon/iso "$subpkgdir"/usr/share/horizon/ +} + +qt5() { + pkgdesc="Qt 5 installation wizard for Adélie Linux" + depends="horizon" + mkdir -p "$subpkgdir"/etc/horizon + mkdir -p "$subpkgdir"/usr/bin + mkdir -p "$subpkgdir"/var/log/horizon + + for _bin in horizon-ppc64-detect horizon-qt5 horizon-run-qt5; do + mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/ + done +} + +tools() { + pkgdesc="Tools for authoring HorizonScript files" + mkdir -p "$subpkgdir"/usr/bin + + for _bin in hscript-fromjson hscript-simulate hscript-validate; do + mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/ + done +} + +wizard() { + pkgdesc="Wizard to generate a HorizonScript for another computer" + + make DESTDIR="$subpkgdir" -C "$builddir"/build-wizard install + rm -r "$subpkgdir"/usr/include + rm -r "$subpkgdir"/usr/lib + rm -r "$subpkgdir"/usr/share +} + +boot() { + pkgdesc="Boot to Horizon" + depends="horizon-qt5 horizon kwin qt5ct sddm + netsurf partitionmanager xterm" + + mkdir -p "$subpkgdir"/etc/profile.d + mkdir -p "$subpkgdir"/etc/sddm.conf.d + mkdir -p "$subpkgdir"/etc/xdg/qt5ct + mkdir -p "$subpkgdir"/usr/bin + mkdir -p "$subpkgdir"/usr/share/qt5ct/qss + mkdir -p "$subpkgdir"/usr/share/xsessions + + cat >"$subpkgdir"/etc/profile.d/horizon-qt5.sh <<PROFILE +#!/bin/sh +export QT_QUICK_BACKEND=software +export QT_QPA_PLATFORMTHEME=qt5ct +PROFILE + chmod 755 "$subpkgdir"/etc/profile.d/horizon-qt5.sh + + install -D -m644 "$builddir"/boot/horizon.sddm.conf \ + "$subpkgdir"/etc/sddm.conf.d/horizon.conf + + install -D -m755 "$builddir"/boot/start-horizon-qt5 \ + "$subpkgdir"/usr/bin/start-horizon-qt5 + + install -D -m644 "$builddir"/boot/qt5ct.conf \ + "$subpkgdir"/etc/xdg/qt5ct/qt5ct.conf + install -D -m644 "$builddir"/boot/horizon.qss \ + "$subpkgdir"/usr/share/qt5ct/qss/horizon.qss + + install -D -m644 "$builddir"/boot/horizon-session.desktop \ + "$subpkgdir"/usr/share/xsessions/horizon.desktop +} + +sha512sums="ef7ad97508dd70bd8d179e844c8d619ff9802fbb4812bddd677fe5ed945cadad416667995a4a358dfe9b426b9c40f9b847ce5aa11e44357b7952fecbc37184fc horizon-0.9.2.tar.xz" diff --git a/user/horizon/fix-qt-runner.patch b/user/horizon/fix-qt-runner.patch new file mode 100644 index 000000000..39cab1181 --- /dev/null +++ b/user/horizon/fix-qt-runner.patch @@ -0,0 +1,25 @@ +From 9f737dbab8b9ed9fa57bdf15542cc00a8363d98b Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Thu, 4 Jun 2020 21:29:37 -0500 +Subject: [PATCH] Qt UI: Ensure log is opened when built in release modes + +--- + ui/qt5/runner/executepage.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ui/qt5/runner/executepage.cc b/ui/qt5/runner/executepage.cc +index 999731a..d5788df 100644 +--- a/ui/qt5/runner/executepage.cc ++++ b/ui/qt5/runner/executepage.cc +@@ -48,7 +48,7 @@ ExecutePage::ExecutePage(QWidget *parent) : HorizonWizardPage(parent) { + }); + + log.setFileName("/var/log/horizon/executor.log"); +- Q_ASSERT(log.open(QFile::Append)); ++ log.open(QFile::Append); + + this->current = Prepare; + markRunning(this->current); +-- +2.25.4 + diff --git a/user/libffcall/APKBUILD b/user/libffcall/APKBUILD new file mode 100644 index 000000000..48b16a78f --- /dev/null +++ b/user/libffcall/APKBUILD @@ -0,0 +1,42 @@ +# Contributor: Carlo Landmeter <clandmeter@gmail.com> +# Contributor: Will Sinatra <wpsinatra@gmail.com> +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=libffcall +pkgver=2.2 +pkgrel=0 +pkgdesc="C library for implementing foreign function calls in embedded interpreters" +url="https://www.gnu.org/software/libffcall" +arch="all" +license="GPL-2.0+" +depends="" +makedepends="" +subpackages="$pkgname-dev $pkgname-doc" +source="https://ftp.gnu.org/gnu/libffcall/libffcall-$pkgver.tar.gz + ppc64.patch + " + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + # Fails to build if building in parallel + make -j1 +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" htmldir=/usr/share/doc/ffcall install + +} + +sha512sums="b9d3ca4c67ab92915a8183d850153e585dcb58ceb2199a104426a7aae363d37017b1226440acd18a2db0cc207e044f71e932857189964261e8eaa6de5cef1731 libffcall-2.2.tar.gz +db7fae1d2f0d95003186671fd89b097b4abf6184d3001e34dd93419640502b9cd5cf32aef4839d6a4208f4aed793c70f9a4367f12adde21372dc131b111238fe ppc64.patch" diff --git a/user/libffcall/ppc64.patch b/user/libffcall/ppc64.patch new file mode 100644 index 000000000..74525987b --- /dev/null +++ b/user/libffcall/ppc64.patch @@ -0,0 +1,1685 @@ +--- libffcall-2.2/avcall/avcall-powerpc64.c.old 2018-09-17 16:47:43.000000000 +0000 ++++ libffcall-2.2/avcall/avcall-powerpc64.c 2020-05-11 23:06:57.534813743 +0000 +@@ -181,111 +181,111 @@ + /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */ + if (l->rsize > 0 && l->rsize <= 16) { + void* raddr = l->raddr; +- #if 0 /* Unoptimized */ ++ #if 1 /* Unoptimized */ + if (l->rsize == 1) { + ((unsigned char *)raddr)[0] = (unsigned char)(iret); + } else + if (l->rsize == 2) { +- ((unsigned char *)raddr)[0] = (unsigned char)(iret); +- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); ++ ((unsigned char *)raddr)[1] = (unsigned char)(iret); ++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>8); + } else + if (l->rsize == 3) { +- ((unsigned char *)raddr)[0] = (unsigned char)(iret); ++ ((unsigned char *)raddr)[2] = (unsigned char)(iret); + ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); +- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); ++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>16); + } else + if (l->rsize == 4) { +- ((unsigned char *)raddr)[0] = (unsigned char)(iret); +- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); +- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); +- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); ++ ((unsigned char *)raddr)[3] = (unsigned char)(iret); ++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>8); ++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>16); ++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>24); + } else + if (l->rsize == 5) { +- ((unsigned char *)raddr)[0] = (unsigned char)(iret); +- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); ++ ((unsigned char *)raddr)[4] = (unsigned char)(iret); ++ ((unsigned char *)raddr)[3] = (unsigned char)(iret>>8); + ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); +- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); +- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); ++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>24); ++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>32); + } else + if (l->rsize == 6) { +- ((unsigned char *)raddr)[0] = (unsigned char)(iret); +- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); +- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); +- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); +- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); +- ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40); ++ ((unsigned char *)raddr)[5] = (unsigned char)(iret); ++ ((unsigned char *)raddr)[4] = (unsigned char)(iret>>8); ++ ((unsigned char *)raddr)[3] = (unsigned char)(iret>>16); ++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>24); ++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>32); ++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>40); + } else + if (l->rsize == 7) { +- ((unsigned char *)raddr)[0] = (unsigned char)(iret); +- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); +- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); ++ ((unsigned char *)raddr)[6] = (unsigned char)(iret); ++ ((unsigned char *)raddr)[5] = (unsigned char)(iret>>8); ++ ((unsigned char *)raddr)[4] = (unsigned char)(iret>>16); + ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); +- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); +- ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40); +- ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48); ++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>32); ++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>40); ++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>48); + } else + if (l->rsize >= 8 && l->rsize <= 16) { +- ((unsigned char *)raddr)[0] = (unsigned char)(iret); +- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); +- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); +- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); +- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); +- ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40); +- ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48); +- ((unsigned char *)raddr)[7] = (unsigned char)(iret>>56); ++ ((unsigned char *)raddr)[7] = (unsigned char)(iret); ++ ((unsigned char *)raddr)[6] = (unsigned char)(iret>>8); ++ ((unsigned char *)raddr)[5] = (unsigned char)(iret>>16); ++ ((unsigned char *)raddr)[4] = (unsigned char)(iret>>24); ++ ((unsigned char *)raddr)[3] = (unsigned char)(iret>>32); ++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>40); ++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>48); ++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>56); + if (l->rsize == 8) { + } else + if (l->rsize == 9) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + } else + if (l->rsize == 10) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); +- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); + } else + if (l->rsize == 11) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); +- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); +- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); ++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); + } else + if (l->rsize == 12) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); +- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); +- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); +- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); ++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); ++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); + } else + if (l->rsize == 13) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); +- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); +- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); +- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); +- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); ++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); ++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); ++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); + } else + if (l->rsize == 14) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); +- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); +- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); +- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); +- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); +- ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); ++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); ++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); ++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); ++ ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16); + } else + if (l->rsize == 15) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); +- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); +- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); +- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); +- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); +- ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40); +- ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); ++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); ++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); ++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); ++ ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16); ++ ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8); + } else + if (l->rsize == 16) { +- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); +- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); +- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); +- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); +- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); +- ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40); +- ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48); +- ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); ++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); ++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); ++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); ++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); ++ ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16); ++ ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8); ++ ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2); + } + } + #else /* Optimized: fewer conditional jumps, fewer memory accesses */ +--- libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:04.000000000 +0000 ++++ libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S 2020-05-11 23:07:17.992574561 +0000 +@@ -1,44 +1,52 @@ + .file "avcall-powerpc64.c" +- .machine power4 + .abiversion 2 +- .section ".toc","aw" + .section ".text" + .align 2 + .p2align 4,,15 + .globl avcall_call + .type avcall_call, @function + avcall_call: +-0: addis 2,12,.TOC.-0b@ha +- addi 2,2,.TOC.-0b@l ++.LFB0: ++ .cfi_startproc ++.LCF0: ++0: addis 2,12,.TOC.-.LCF0@ha ++ addi 2,2,.TOC.-.LCF0@l + .localentry avcall_call,.-avcall_call + mflr 0 + std 30,-16(1) + std 31,-8(1) ++ .cfi_register 65, 0 ++ .cfi_offset 30, -16 ++ .cfi_offset 31, -8 + mr 30,3 + std 0,16(1) +- stdu 1,-112(1) +- ld 3,48(3) +- ld 9,40(30) ++ stdu 1,-128(1) ++ .cfi_def_cfa_offset 128 ++ .cfi_offset 65, 16 + mr 31,1 ++ .cfi_def_cfa_register 31 ++ ld 3,48(3) + ld 10,0(1) ++ ld 9,-28688(13) ++ std 9,104(31) ++ li 9,0 ++ ld 9,40(30) ++ stdu 10,-2048(1) + subf 9,3,9 +- stdu 10,-2064(1) + sradi 9,9,3 + cmpwi 7,9,8 + ble 7,.L6 +- addi 10,9,-9 +- addi 8,1,96 +- addi 9,3,56 +- rldicl 10,10,0,32 +- addi 8,8,-8 +- addi 10,10,8 +- sldi 10,10,3 +- add 10,3,10 ++ addi 8,9,-9 ++ addi 7,1,96 ++ addi 10,3,56 ++ rldic 8,8,3,29 ++ addi 9,7,-8 ++ add 7,7,8 + .p2align 4,,15 + .L5: +- ldu 7,8(9) +- cmpld 7,10,9 +- stdu 7,8(8) ++ ldu 8,8(10) ++ stdu 8,8(9) ++ cmpld 7,7,9 + bne 7,.L5 + .L6: + ld 10,64(30) +@@ -114,191 +122,210 @@ + ld 2,24(1) + lwz 9,24(30) + cmplwi 7,9,1 +- beq 7,.L19 ++ beq 7,.L20 + cmpdi 7,9,0 +- beq 7,.L50 ++ beq 7,.L68 + cmplwi 7,9,2 +- beq 7,.L45 ++ beq 7,.L62 + cmplwi 7,9,3 +- beq 7,.L45 ++ beq 7,.L62 + cmplwi 7,9,4 +- beq 7,.L45 ++ beq 7,.L62 + cmplwi 7,9,5 +- beq 7,.L46 ++ beq 7,.L63 + cmplwi 7,9,6 +- beq 7,.L46 ++ beq 7,.L63 + cmplwi 7,9,7 +- beq 7,.L47 ++ beq 7,.L64 + cmplwi 7,9,8 +- beq 7,.L47 ++ beq 7,.L64 + cmplwi 7,9,9 +- beq 7,.L50 ++ beq 7,.L68 + cmplwi 7,9,10 +- beq 7,.L50 ++ beq 7,.L68 + cmplwi 7,9,11 +- beq 7,.L50 ++ beq 7,.L68 + cmplwi 7,9,12 +- beq 7,.L50 ++ beq 7,.L68 + cmplwi 7,9,13 +- beq 7,.L52 ++ beq 7,.L71 + cmplwi 7,9,14 +- beq 7,.L53 ++ beq 7,.L72 + cmplwi 7,9,15 +- beq 7,.L50 ++ beq 7,.L68 + cmplwi 7,9,16 +- bne 7,.L19 ++ bne 7,.L20 + lwz 9,0(30) +- rldicl. 10,9,55,63 +- beq 0,.L19 ++ andi. 9,9,0x200 ++ beq 0,.L20 + ld 10,32(30) + addi 9,10,-1 + cmpldi 7,9,15 +- bgt 7,.L19 +- ld 8,16(30) +- cmpldi 7,10,8 +- rldicl 9,8,0,61 +- rldicr 8,8,0,60 +- add 10,10,9 +- bgt 7,.L35 ++ bgt 7,.L20 ++ cmpldi 7,10,1 ++ ld 9,16(30) ++ rlwinm 8,3,0,0xff ++ beq 7,.L69 ++ cmpldi 7,10,2 ++ beq 7,.L73 ++ cmpldi 7,10,3 ++ rldicl 8,3,48,56 ++ beq 7,.L74 ++ cmpldi 7,10,4 ++ beq 7,.L75 ++ cmpldi 7,10,5 ++ rldicl 8,3,32,56 ++ beq 7,.L76 ++ cmpldi 7,10,6 ++ rldicl 7,3,24,56 ++ beq 7,.L77 ++ cmpldi 7,10,7 ++ rldicl 6,3,16,56 ++ beq 7,.L78 ++ std 3,0(9) ++ ld 10,32(30) + cmpldi 7,10,8 +- bgt 7,.L36 +- slwi 10,10,3 +- li 7,2 +- ld 6,0(8) +- slwi 9,9,3 +- addi 10,10,-1 +- sld 10,7,10 +- li 7,1 +- sld 7,7,9 +- sld 9,3,9 +- subf 10,7,10 +- xor 9,9,6 +- and 9,10,9 +- xor 9,9,6 +- std 9,0(8) +-.L19: +- addi 1,31,112 ++ beq 7,.L20 ++ cmpldi 7,10,9 ++ beq 7,.L79 ++ cmpldi 7,10,10 ++ beq 7,.L80 ++ cmpldi 7,10,11 ++ beq 7,.L81 ++ cmpldi 7,10,12 ++ beq 7,.L82 ++ cmpldi 7,10,13 ++ beq 7,.L83 ++ cmpldi 7,10,14 ++ beq 7,.L84 ++ cmpldi 7,10,15 ++ beq 7,.L85 ++ cmpldi 7,10,16 ++ bne 7,.L20 ++ std 4,8(9) ++ .p2align 4,,15 ++.L20: ++ ld 9,104(31) ++ ld 10,-28688(13) ++ xor. 9,9,10 ++ li 10,0 + li 3,0 ++ bne 0,.L86 ++ addi 1,31,128 ++ .cfi_remember_state ++ .cfi_def_cfa 1, 0 + ld 0,16(1) + ld 30,-16(1) + ld 31,-8(1) + mtlr 0 ++ .cfi_restore 65 ++ .cfi_restore 31 ++ .cfi_restore 30 + blr + .p2align 4,,15 +-.L50: ++.L68: ++ .cfi_restore_state + ld 9,16(30) + std 3,0(9) +- addi 1,31,112 +- li 3,0 +- ld 0,16(1) +- ld 30,-16(1) +- ld 31,-8(1) +- mtlr 0 +- blr ++ b .L20 + .p2align 4,,15 +-.L45: ++.L62: + ld 9,16(30) + stb 3,0(9) +- addi 1,31,112 +- li 3,0 +- ld 0,16(1) +- ld 30,-16(1) +- ld 31,-8(1) +- mtlr 0 +- blr +-.L46: ++ b .L20 ++.L63: + ld 9,16(30) + sth 3,0(9) +- b .L19 +-.L47: ++ b .L20 ++.L64: + ld 9,16(30) + stw 3,0(9) +- b .L19 +-.L52: ++ b .L20 ++.L71: + ld 9,16(30) + stfs 1,0(9) +- b .L19 +-.L53: ++ b .L20 ++.L72: + ld 9,16(30) + stfd 1,0(9) +- b .L19 +-.L36: +- rldicl 9,9,0,32 +- slwi 10,10,3 +- ld 11,0(8) +- ld 4,8(8) +- li 7,2 +- mulli 6,9,-8 +- addi 10,10,-65 +- slwi 9,9,3 +- sld 10,7,10 +- sld 5,3,9 +- li 7,-1 +- addi 6,6,64 +- addi 10,10,-1 +- sld 7,7,9 +- srad 3,3,6 +- xor 6,5,11 +- xor 9,3,4 +- and 7,7,6 +- and 9,10,9 +- xor 10,7,11 +- xor 9,9,4 +- std 10,0(8) +- std 9,8(8) +- b .L19 +-.L35: +- rldicl 9,9,0,32 +- ld 11,0(8) +- li 6,-1 +- cmpldi 7,10,16 +- slwi 5,9,3 +- sld 7,3,5 +- sld 6,6,5 +- xor 7,7,11 +- and 7,6,7 +- xor 7,7,11 +- std 7,0(8) +- ble 7,.L54 +- mulli 9,9,-8 +- ld 11,16(8) +- slwi 10,10,3 +- li 7,2 +- addi 10,10,-129 +- addi 9,9,64 +- sld 7,7,10 +- srad 6,4,9 +- srad 3,3,9 +- addi 7,7,-1 +- sld 9,4,5 +- xor 10,6,11 +- or 9,3,9 +- and 10,7,10 +- std 9,8(8) +- xor 10,10,11 +- std 10,16(8) +- b .L19 +-.L54: +- mulli 9,9,-4 +- slwi 10,10,3 +- ld 11,8(8) +- sld 4,4,5 +- addi 10,10,-65 +- li 6,2 +- addi 9,9,32 +- sld 10,6,10 +- srad 3,3,9 +- srad 9,3,9 +- or 7,9,4 +- addi 9,10,-1 +- xor 10,7,11 +- and 9,10,9 +- xor 9,9,11 +- std 9,8(8) +- b .L19 ++ b .L20 ++.L86: ++ bl __stack_chk_fail ++ nop ++.L74: ++ sth 3,1(9) ++.L69: ++ stb 8,0(9) ++ b .L20 ++.L85: ++ srdi 7,4,32 ++ sradi 8,4,24 ++ sradi 10,4,16 ++ sradi 4,4,8 ++ stw 7,8(9) ++ stb 8,12(9) ++ stb 10,13(9) ++ stb 4,14(9) ++ b .L20 ++.L76: ++ stw 3,1(9) ++ stb 8,0(9) ++ b .L20 ++.L75: ++ stw 3,0(9) ++ b .L20 ++.L73: ++ sth 3,0(9) ++ b .L20 ++.L84: ++ srdi 8,4,32 ++ sradi 10,4,24 ++ sradi 4,4,16 ++ stw 8,8(9) ++ stb 10,12(9) ++ stb 4,13(9) ++ b .L20 ++.L83: ++ srdi 10,4,32 ++ sradi 4,4,24 ++ stw 10,8(9) ++ stb 4,12(9) ++ b .L20 ++.L82: ++ srdi 4,4,32 ++ stw 4,8(9) ++ b .L20 ++.L81: ++ srdi 10,4,48 ++ sradi 4,4,40 ++ sth 10,8(9) ++ stb 4,10(9) ++ b .L20 ++.L80: ++ srdi 4,4,48 ++ sth 4,8(9) ++ b .L20 ++.L79: ++ sradi 4,4,56 ++ stb 4,8(9) ++ b .L20 ++.L78: ++ stw 3,3(9) ++ stb 8,2(9) ++ stb 7,1(9) ++ stb 6,0(9) ++ b .L20 ++.L77: ++ stw 3,2(9) ++ stb 8,1(9) ++ stb 7,0(9) ++ b .L20 + .long 0 + .byte 0,0,0,1,128,2,0,0 ++ .cfi_endproc ++.LFE0: + .size avcall_call,.-avcall_call ++ .gnu_attribute 4, 9 + #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ + .section .note.GNU-stack,"",@progbits + #endif +--- libffcall-2.2/vacall/vacall-powerpc64.c.old 2020-05-11 23:11:15.566571148 +0000 ++++ libffcall-2.2/vacall/vacall-powerpc64.c 2020-05-11 23:16:52.489693582 +0000 +@@ -140,111 +140,111 @@ + if (list.flags & __VA_REGISTER_STRUCT_RETURN) { + /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */ + if (list.rsize > 0 && list.rsize <= 16) { +- #if 0 /* Unoptimized */ ++ #if 1 /* Unoptimized */ + if (list.rsize == 1) { + iret = (__vaword)((unsigned char *) list.raddr)[0]; + } else + if (list.rsize == 2) { +- iret = ((__vaword)((unsigned char *) list.raddr)[0]) +- | ((__vaword)((unsigned char *) list.raddr)[1] << 8); ++ iret = ((__vaword)((unsigned char *) list.raddr)[1]) ++ | ((__vaword)((unsigned char *) list.raddr)[0] << 8); + } else + if (list.rsize == 3) { +- iret = ((__vaword)((unsigned char *) list.raddr)[0]) ++ iret = ((__vaword)((unsigned char *) list.raddr)[2]) + | ((__vaword)((unsigned char *) list.raddr)[1] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[2] << 16); ++ | ((__vaword)((unsigned char *) list.raddr)[0] << 16); + } else + if (list.rsize == 4) { +- iret = ((__vaword)((unsigned char *) list.raddr)[0]) +- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[3] << 24); ++ iret = ((__vaword)((unsigned char *) list.raddr)[3]) ++ | ((__vaword)((unsigned char *) list.raddr)[2] << 8) ++ | ((__vaword)((unsigned char *) list.raddr)[1] << 16) ++ | ((__vaword)((unsigned char *) list.raddr)[0] << 24); + } else + if (list.rsize == 5) { +- iret = ((__vaword)((unsigned char *) list.raddr)[0]) +- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) ++ iret = ((__vaword)((unsigned char *) list.raddr)[4]) ++ | ((__vaword)((unsigned char *) list.raddr)[3] << 8) + | ((__vaword)((unsigned char *) list.raddr)[2] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[3] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[4] << 32); ++ | ((__vaword)((unsigned char *) list.raddr)[1] << 24) ++ | ((__vaword)((unsigned char *) list.raddr)[0] << 32); + } else + if (list.rsize == 6) { +- iret = ((__vaword)((unsigned char *) list.raddr)[0]) +- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[3] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[4] << 32) +- | ((__vaword)((unsigned char *) list.raddr)[5] << 40); ++ iret = ((__vaword)((unsigned char *) list.raddr)[5]) ++ | ((__vaword)((unsigned char *) list.raddr)[4] << 8) ++ | ((__vaword)((unsigned char *) list.raddr)[3] << 16) ++ | ((__vaword)((unsigned char *) list.raddr)[2] << 24) ++ | ((__vaword)((unsigned char *) list.raddr)[1] << 32) ++ | ((__vaword)((unsigned char *) list.raddr)[0] << 40); + } else + if (list.rsize == 7) { +- iret = ((__vaword)((unsigned char *) list.raddr)[0]) +- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) ++ iret = ((__vaword)((unsigned char *) list.raddr)[6]) ++ | ((__vaword)((unsigned char *) list.raddr)[5] << 8) ++ | ((__vaword)((unsigned char *) list.raddr)[4] << 16) + | ((__vaword)((unsigned char *) list.raddr)[3] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[4] << 32) +- | ((__vaword)((unsigned char *) list.raddr)[5] << 40) +- | ((__vaword)((unsigned char *) list.raddr)[6] << 48); ++ | ((__vaword)((unsigned char *) list.raddr)[2] << 32) ++ | ((__vaword)((unsigned char *) list.raddr)[1] << 40) ++ | ((__vaword)((unsigned char *) list.raddr)[0] << 48); + } else + if (list.rsize >= 8 && list.rsize <= 16) { +- iret = ((__vaword)((unsigned char *) list.raddr)[0]) +- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[3] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[4] << 32) +- | ((__vaword)((unsigned char *) list.raddr)[5] << 40) +- | ((__vaword)((unsigned char *) list.raddr)[6] << 48) +- | ((__vaword)((unsigned char *) list.raddr)[7] << 56); ++ iret = ((__vaword)((unsigned char *) list.raddr)[7]) ++ | ((__vaword)((unsigned char *) list.raddr)[6] << 8) ++ | ((__vaword)((unsigned char *) list.raddr)[5] << 16) ++ | ((__vaword)((unsigned char *) list.raddr)[4] << 24) ++ | ((__vaword)((unsigned char *) list.raddr)[3] << 32) ++ | ((__vaword)((unsigned char *) list.raddr)[2] << 40) ++ | ((__vaword)((unsigned char *) list.raddr)[1] << 48) ++ | ((__vaword)((unsigned char *) list.raddr)[0] << 56); + if (list.rsize == 8) { + } else + if (list.rsize == 9) { +- iret2 = (__vaword)((unsigned char *) list.raddr)[8]; ++ iret2 = (__vaword)((unsigned char *) list.raddr)[8] << 56; + } else + if (list.rsize == 10) { +- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) +- | ((__vaword)((unsigned char *) list.raddr)[9] << 8); ++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48); + } else + if (list.rsize == 11) { +- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) +- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[10] << 16); ++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40); + } else + if (list.rsize == 12) { +- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) +- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[11] << 24); ++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32); + } else + if (list.rsize == 13) { +- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) +- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[12] << 32); ++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24); + } else + if (list.rsize == 14) { +- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) +- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[12] << 32) +- | ((__vaword)((unsigned char *) list.raddr)[13] << 40); ++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24) ++ | ((__vaword)((unsigned char *) list.raddr)[13] << 16); + } else + if (list.rsize == 15) { +- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) +- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[12] << 32) +- | ((__vaword)((unsigned char *) list.raddr)[13] << 40) +- | ((__vaword)((unsigned char *) list.raddr)[14] << 48); ++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24) ++ | ((__vaword)((unsigned char *) list.raddr)[13] << 16) ++ | ((__vaword)((unsigned char *) list.raddr)[14] << 8); + } else + if (list.rsize == 16) { +- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) +- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) +- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) +- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) +- | ((__vaword)((unsigned char *) list.raddr)[12] << 32) +- | ((__vaword)((unsigned char *) list.raddr)[13] << 40) +- | ((__vaword)((unsigned char *) list.raddr)[14] << 48) +- | ((__vaword)((unsigned char *) list.raddr)[15] << 56); ++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24) ++ | ((__vaword)((unsigned char *) list.raddr)[13] << 16) ++ | ((__vaword)((unsigned char *) list.raddr)[14] << 8) ++ | ((__vaword)((unsigned char *) list.raddr)[15]); + } + } + #else /* Optimized: fewer conditional jumps, fewer memory accesses */ +--- libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:06.000000000 +0000 ++++ libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:18:00.842212129 +0000 +@@ -1,9 +1,8 @@ + .file "vacall-powerpc64.c" +- .machine power4 + .abiversion 2 +- .section ".toc","aw" + .section ".text" + .section ".toc","aw" ++ .align 3 + .LC0: + .quad vacall_function + .section ".text" +@@ -12,40 +11,50 @@ + .globl vacall_receiver + .type vacall_receiver, @function + vacall_receiver: +-0: addis 2,12,.TOC.-0b@ha +- addi 2,2,.TOC.-0b@l ++.LFB0: ++ .cfi_startproc ++.LCF0: ++0: addis 2,12,.TOC.-.LCF0@ha ++ addi 2,2,.TOC.-.LCF0@l + .localentry vacall_receiver,.-vacall_receiver + mflr 0 + std 31,-8(1) ++ std 30,-16(1) + addis 11,2,.LC0@toc@ha +- ld 12,.LC0@toc@l(11) +- li 11,0 + std 0,16(1) + stdu 1,-224(1) +- mr 31,1 +- ld 0,0(12) ++ .cfi_def_cfa_offset 224 ++ .cfi_offset 65, 16 ++ .cfi_offset 31, -8 ++ .cfi_offset 30, -16 ++ li 0,0 ++ ld 12,.LC0@toc@l(11) + std 2,24(1) ++ mr 31,1 ++ .cfi_def_cfa_register 31 ++ addi 11,31,256 ++ ld 30,-28688(13) ++ std 30,200(31) ++ li 30,0 ++ std 6,280(31) ++ ld 6,0(12) + std 9,304(31) + li 9,0 + std 3,256(31) +- addi 3,31,32 + std 4,264(31) ++ stfd 1,96(31) + std 5,272(31) +- mtctr 0 +- stw 9,32(31) +- std 6,280(31) + std 7,288(31) + std 8,296(31) ++ mtctr 6 + std 10,312(31) +- stfd 1,96(31) +- addi 9,31,256 + stfd 2,104(31) + stfd 3,112(31) + stfd 4,120(31) ++ mr 12,6 + stfd 5,128(31) +- mr 12,0 +- std 9,56(31) + stfd 6,136(31) ++ addi 3,31,32 + stfd 7,144(31) + stfd 8,152(31) + stfd 9,160(31) +@@ -53,173 +62,232 @@ + stfd 11,176(31) + stfd 12,184(31) + stfd 13,192(31) +- std 11,64(31) +- stw 11,72(31) +- stw 11,88(31) ++ stw 0,32(31) ++ std 11,56(31) ++ std 9,64(31) ++ stw 9,72(31) ++ stw 9,88(31) + bctrl + ld 2,24(1) + lwz 9,72(31) + cmpdi 7,9,0 + beq 7,.L1 + cmplwi 7,9,1 +- beq 7,.L27 ++ beq 7,.L41 + cmplwi 7,9,2 +- beq 7,.L30 ++ beq 7,.L45 + cmplwi 7,9,3 +- beq 7,.L27 ++ beq 7,.L41 + cmplwi 7,9,4 +- beq 7,.L31 ++ beq 7,.L46 + cmplwi 7,9,5 +- beq 7,.L32 ++ beq 7,.L47 + cmplwi 7,9,6 +- beq 7,.L33 ++ beq 7,.L48 + cmplwi 7,9,7 +- beq 7,.L34 ++ beq 7,.L49 + cmplwi 7,9,8 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,9 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,10 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,11 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,12 +- beq 7,.L35 ++ beq 7,.L50 + cmplwi 7,9,13 +- beq 7,.L36 ++ beq 7,.L51 + cmplwi 7,9,14 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,15 + bne 7,.L1 + lwz 9,32(31) +- rldicl. 10,9,54,63 ++ andi. 9,9,0x400 + beq 0,.L1 +- ld 9,80(31) +- addi 10,9,-1 +- cmpldi 7,10,15 ++ ld 10,80(31) ++ addi 9,10,-1 ++ cmpldi 7,9,15 + bgt 7,.L1 ++ cmpldi 7,10,1 + ld 8,64(31) +- cmpldi 7,9,8 +- rldicl 10,8,0,61 +- rldicr 8,8,0,60 +- add 9,9,10 +- bgt 7,.L17 +- cmpldi 7,9,8 +- slwi 9,9,3 +- bgt 7,.L18 +- ld 7,0(8) +- addi 9,9,-1 +- li 8,2 +- slwi 10,10,3 +- sld 9,8,9 +- addi 9,9,-1 +- and 9,9,7 +- srad 3,9,10 ++ lbz 9,0(8) ++ beq 7,.L52 ++ cmpldi 7,10,2 ++ beq 7,.L53 ++ cmpldi 7,10,3 ++ lbz 7,1(8) ++ lbz 6,2(8) ++ beq 7,.L54 ++ cmpldi 7,10,4 ++ beq 7,.L55 ++ cmpldi 7,10,5 ++ beq 7,.L56 ++ cmpldi 7,10,6 ++ beq 7,.L57 ++ cmpldi 7,10,7 ++ beq 7,.L58 ++ cmpldi 7,10,8 ++ ld 3,0(8) ++ beq 7,.L1 ++ cmpldi 7,10,9 ++ lbz 9,8(8) ++ sldi 9,9,56 ++ beq 7,.L59 ++ lbz 7,9(8) ++ cmpldi 7,10,10 ++ sldi 7,7,48 ++ or 7,7,9 ++ beq 7,.L60 ++ cmpldi 7,10,11 ++ lbz 9,10(8) ++ sldi 9,9,40 ++ beq 7,.L43 ++ cmpldi 7,10,12 ++ lbz 6,11(8) ++ sldi 6,6,32 ++ beq 7,.L61 ++ cmpldi 7,10,13 ++ lbz 5,12(8) ++ sldi 5,5,24 ++ beq 7,.L62 ++ cmpldi 7,10,14 ++ lbz 11,13(8) ++ sldi 11,11,16 ++ beq 7,.L63 ++ cmpldi 7,10,15 ++ beq 7,.L64 ++ ld 4,8(8) ++ .p2align 4,,15 + .L1: ++ ld 9,200(31) ++ ld 10,-28688(13) ++ xor. 9,9,10 ++ li 10,0 ++ bne 0,.L65 + addi 1,31,224 ++ .cfi_remember_state ++ .cfi_def_cfa 1, 0 + ld 0,16(1) ++ ld 30,-16(1) + ld 31,-8(1) + mtlr 0 ++ .cfi_restore 65 ++ .cfi_restore 31 ++ .cfi_restore 30 + blr + .p2align 4,,15 +-.L27: +- addi 1,31,224 ++.L41: ++ .cfi_restore_state + lbz 3,40(31) +- ld 0,16(1) +- ld 31,-8(1) +- mtlr 0 +- blr ++ b .L1 + .p2align 4,,15 +-.L30: +- lbz 9,40(31) +- extsb 3,9 ++.L45: ++ lbz 3,40(31) ++ extsb 3,3 + b .L1 + .p2align 4,,15 +-.L28: +- ld 3,40(31) ++.L48: ++ lwa 3,40(31) + b .L1 + .p2align 4,,15 +-.L31: ++.L46: + lha 3,40(31) + b .L1 + .p2align 4,,15 +-.L32: ++.L47: + lhz 3,40(31) + b .L1 + .p2align 4,,15 +-.L33: +- lwa 3,40(31) +- b .L1 +- .p2align 4,,15 +-.L35: +- lfs 1,40(31) ++.L42: ++ ld 3,40(31) + b .L1 + .p2align 4,,15 +-.L34: ++.L49: + lwz 3,40(31) + b .L1 +-.L36: ++.L50: ++ lfs 1,40(31) ++ b .L1 ++.L51: + lfd 1,40(31) + b .L1 +-.L17: +- cmpldi 7,9,16 +- rldicl 10,10,0,32 +- slwi 9,9,3 +- ble 7,.L37 +- li 7,2 +- addi 9,9,-129 +- ld 11,16(8) +- ld 5,0(8) +- mulli 6,10,-8 +- sld 9,7,9 +- ld 7,8(8) +- addi 8,9,-1 +- slwi 9,10,3 +- addi 6,6,64 +- and 10,8,11 +- srad 8,5,9 +- sld 5,7,6 +- srad 9,7,9 +- sld 10,10,6 +- or 3,8,5 +- or 4,10,9 +- b .L1 +-.L18: +- rldicl 10,10,0,32 +- li 7,2 +- ld 6,8(8) +- ld 8,0(8) +- addi 9,9,-65 +- sld 9,7,9 +- mulli 7,10,-8 +- slwi 10,10,3 +- addi 9,9,-1 +- srad 10,8,10 +- and 9,9,6 +- addi 7,7,64 +- sld 9,9,7 +- or 3,9,10 +- b .L1 +-.L37: +- li 7,2 +- addi 9,9,-65 +- ld 5,8(8) +- ld 6,0(8) +- sld 9,7,9 +- mulli 7,10,-4 +- addi 9,9,-1 +- addi 7,7,32 +- and 8,9,5 +- slwi 9,10,3 +- sld 10,8,7 +- srad 6,6,9 +- srad 4,8,9 +- sld 7,10,7 +- or 3,6,7 ++.L65: ++ bl __stack_chk_fail ++ nop ++.L64: ++ or 4,9,6 ++ lbz 9,14(8) ++ or 4,4,5 ++ sldi 9,9,8 ++ or 4,4,11 ++ or 4,4,9 ++ or 4,4,7 ++ b .L1 ++.L63: ++ or 4,9,6 ++ or 4,4,5 ++ or 4,4,11 ++ or 4,4,7 ++ b .L1 ++.L55: ++ lwz 3,0(8) ++ b .L1 ++.L54: ++ sldi 7,7,8 ++ sldi 9,9,16 ++ or 9,7,9 ++ or 3,9,6 ++ b .L1 ++.L53: ++ lhz 3,0(8) ++ b .L1 ++.L52: ++ mr 3,9 ++ b .L1 ++.L62: ++ or 9,9,6 ++ or 4,9,5 ++ or 4,4,7 ++ b .L1 ++.L61: ++ or 9,9,6 ++.L43: ++ or 4,9,7 ++ b .L1 ++.L60: ++ mr 4,7 ++ b .L1 ++.L59: ++ mr 4,9 ++ b .L1 ++.L58: ++ sldi 6,6,32 ++ sldi 7,7,40 ++ lwz 3,3(8) ++ sldi 9,9,48 ++ or 7,6,7 ++ or 3,7,3 ++ or 3,3,9 ++ b .L1 ++.L57: ++ sldi 7,7,32 ++ sldi 9,9,40 ++ lwz 3,2(8) ++ or 9,7,9 ++ or 3,9,3 ++ b .L1 ++.L56: ++ lwz 3,1(8) ++ sldi 9,9,32 ++ or 3,3,9 + b .L1 + .long 0 +- .byte 0,0,0,1,128,1,0,0 ++ .byte 0,0,0,1,128,2,0,0 ++ .cfi_endproc ++.LFE0: + .size vacall_receiver,.-vacall_receiver ++ .gnu_attribute 4, 9 + #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ + .section .note.GNU-stack,"",@progbits + #endif +--- libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:08.000000000 +0000 ++++ libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:26:54.443785997 +0000 +@@ -1,45 +1,56 @@ + .file "vacall-powerpc64.c" +- .machine power4 + .abiversion 2 +- .section ".toc","aw" + .section ".text" + .align 2 + .p2align 4,,15 + .type callback_receiver, @function + callback_receiver: +-0: addis 2,12,.TOC.-0b@ha +- addi 2,2,.TOC.-0b@l ++.LFB0: ++ .cfi_startproc ++.LCF0: ++0: addis 2,12,.TOC.-.LCF0@ha ++ addi 2,2,.TOC.-.LCF0@l + .localentry callback_receiver,.-callback_receiver + mflr 0 +- std 30,-16(1) ++ std 28,-32(1) ++ std 29,-24(1) + std 31,-8(1) ++ std 30,-16(1) + std 0,16(1) +- stdu 1,-224(1) +- li 0,0 +- ld 30,0(11) ++ stdu 1,-240(1) ++ .cfi_def_cfa_offset 240 ++ .cfi_offset 65, 16 ++ .cfi_offset 28, -32 ++ .cfi_offset 29, -24 ++ .cfi_offset 31, -8 ++ .cfi_offset 30, -16 ++ li 28,0 ++ std 2,24(1) + mr 31,1 +- std 3,256(31) +- std 4,264(31) +- addi 4,31,32 +- ld 3,8(11) +- std 9,304(31) +- mtctr 30 ++ .cfi_def_cfa_register 31 ++ addi 29,31,272 ++ ld 0,-28688(13) ++ std 0,200(31) ++ li 0,0 ++ ld 0,0(11) ++ std 9,320(31) + li 9,0 +- std 5,272(31) +- std 6,280(31) +- std 7,288(31) +- std 8,296(31) +- stw 9,32(31) +- std 10,312(31) + stfd 1,96(31) ++ std 3,272(31) ++ std 4,280(31) ++ std 5,288(31) + stfd 2,104(31) +- mr 12,30 +- addi 9,31,256 ++ mtctr 0 ++ std 6,296(31) ++ std 7,304(31) ++ std 8,312(31) ++ std 10,328(31) + stfd 3,112(31) + stfd 4,120(31) + stfd 5,128(31) + stfd 6,136(31) +- std 9,56(31) ++ mr 12,0 ++ addi 4,31,32 + stfd 7,144(31) + stfd 8,152(31) + stfd 9,160(31) +@@ -47,195 +58,266 @@ + stfd 11,176(31) + stfd 12,184(31) + stfd 13,192(31) +- std 0,64(31) +- stw 0,72(31) +- stw 0,88(31) +- std 2,24(1) ++ ld 3,8(11) ++ stw 28,32(31) ++ std 9,64(31) ++ stw 9,72(31) ++ stw 9,88(31) ++ std 29,56(31) + bctrl + ld 2,24(1) + lwz 9,72(31) + cmpdi 7,9,0 + beq 7,.L1 + cmplwi 7,9,1 +- beq 7,.L27 ++ beq 7,.L41 + cmplwi 7,9,2 +- beq 7,.L30 ++ beq 7,.L45 + cmplwi 7,9,3 +- beq 7,.L27 ++ beq 7,.L41 + cmplwi 7,9,4 +- beq 7,.L31 ++ beq 7,.L46 + cmplwi 7,9,5 +- beq 7,.L32 ++ beq 7,.L47 + cmplwi 7,9,6 +- beq 7,.L33 ++ beq 7,.L48 + cmplwi 7,9,7 +- beq 7,.L34 ++ beq 7,.L49 + cmplwi 7,9,8 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,9 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,10 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,11 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,12 +- beq 7,.L35 ++ beq 7,.L50 + cmplwi 7,9,13 +- beq 7,.L36 ++ beq 7,.L51 + cmplwi 7,9,14 +- beq 7,.L28 ++ beq 7,.L42 + cmplwi 7,9,15 + bne 7,.L1 + lwz 9,32(31) +- rldicl. 10,9,54,63 ++ andi. 9,9,0x400 + beq 0,.L1 +- ld 9,80(31) +- addi 10,9,-1 +- cmpldi 7,10,15 ++ ld 10,80(31) ++ addi 9,10,-1 ++ cmpldi 7,9,15 + bgt 7,.L1 ++ cmpldi 7,10,1 + ld 8,64(31) +- cmpldi 7,9,8 +- rldicl 10,8,0,61 +- rldicr 8,8,0,60 +- add 9,9,10 +- bgt 7,.L17 +- cmpldi 7,9,8 +- slwi 9,9,3 +- bgt 7,.L18 +- ld 7,0(8) +- addi 9,9,-1 +- li 8,2 +- slwi 10,10,3 +- sld 9,8,9 +- addi 9,9,-1 +- and 9,9,7 +- srad 3,9,10 ++ lbz 9,0(8) ++ beq 7,.L52 ++ cmpldi 7,10,2 ++ beq 7,.L53 ++ cmpldi 7,10,3 ++ lbz 7,1(8) ++ lbz 6,2(8) ++ beq 7,.L54 ++ cmpldi 7,10,4 ++ beq 7,.L55 ++ cmpldi 7,10,5 ++ beq 7,.L56 ++ cmpldi 7,10,6 ++ beq 7,.L57 ++ cmpldi 7,10,7 ++ beq 7,.L58 ++ cmpldi 7,10,8 ++ ld 3,0(8) ++ beq 7,.L1 ++ cmpldi 7,10,9 ++ lbz 9,8(8) ++ sldi 9,9,56 ++ beq 7,.L59 ++ lbz 7,9(8) ++ cmpldi 7,10,10 ++ sldi 7,7,48 ++ or 7,7,9 ++ beq 7,.L60 ++ cmpldi 7,10,11 ++ lbz 9,10(8) ++ sldi 9,9,40 ++ beq 7,.L43 ++ cmpldi 7,10,12 ++ lbz 6,11(8) ++ sldi 6,6,32 ++ beq 7,.L61 ++ cmpldi 7,10,13 ++ lbz 5,12(8) ++ sldi 5,5,24 ++ beq 7,.L62 ++ cmpldi 7,10,14 ++ lbz 0,13(8) ++ sldi 0,0,16 ++ beq 7,.L63 ++ cmpldi 7,10,15 ++ beq 7,.L64 ++ ld 4,8(8) ++ .p2align 4,,15 + .L1: +- addi 1,31,224 ++ ld 9,200(31) ++ ld 10,-28688(13) ++ xor. 9,9,10 ++ li 10,0 ++ bne 0,.L65 ++ addi 1,31,240 ++ .cfi_remember_state ++ .cfi_def_cfa 1, 0 + ld 0,16(1) ++ ld 28,-32(1) ++ ld 29,-24(1) + ld 30,-16(1) + ld 31,-8(1) + mtlr 0 ++ .cfi_restore 65 ++ .cfi_restore 31 ++ .cfi_restore 30 ++ .cfi_restore 29 ++ .cfi_restore 28 + blr + .p2align 4,,15 +-.L27: +- addi 1,31,224 ++.L41: ++ .cfi_restore_state + lbz 3,40(31) +- ld 0,16(1) +- ld 30,-16(1) +- ld 31,-8(1) +- mtlr 0 +- blr ++ b .L1 + .p2align 4,,15 +-.L30: +- lbz 9,40(31) +- extsb 3,9 ++.L45: ++ lbz 3,40(31) ++ extsb 3,3 + b .L1 + .p2align 4,,15 +-.L28: +- ld 3,40(31) ++.L48: ++ lwa 3,40(31) + b .L1 + .p2align 4,,15 +-.L31: ++.L46: + lha 3,40(31) + b .L1 + .p2align 4,,15 +-.L32: ++.L47: + lhz 3,40(31) + b .L1 + .p2align 4,,15 +-.L33: +- lwa 3,40(31) +- b .L1 +- .p2align 4,,15 +-.L35: +- lfs 1,40(31) ++.L42: ++ ld 3,40(31) + b .L1 + .p2align 4,,15 +-.L34: ++.L49: + lwz 3,40(31) + b .L1 +-.L36: ++.L50: ++ lfs 1,40(31) ++ b .L1 ++.L51: + lfd 1,40(31) + b .L1 +-.L17: +- cmpldi 7,9,16 +- rldicl 10,10,0,32 +- slwi 9,9,3 +- ble 7,.L37 +- li 7,2 +- addi 9,9,-129 +- ld 0,16(8) +- ld 5,0(8) +- mulli 6,10,-8 +- sld 9,7,9 +- ld 7,8(8) +- addi 8,9,-1 +- slwi 9,10,3 +- addi 6,6,64 +- and 10,8,0 +- srad 8,5,9 +- sld 5,7,6 +- srad 9,7,9 +- sld 10,10,6 +- or 3,8,5 +- or 4,10,9 +- b .L1 +-.L18: +- rldicl 10,10,0,32 +- li 7,2 +- ld 6,8(8) +- ld 8,0(8) +- addi 9,9,-65 +- sld 9,7,9 +- mulli 7,10,-8 +- slwi 10,10,3 +- addi 9,9,-1 +- srad 10,8,10 +- and 9,9,6 +- addi 7,7,64 +- sld 9,9,7 +- or 3,9,10 +- b .L1 +-.L37: +- li 7,2 +- addi 9,9,-65 +- ld 5,8(8) +- ld 6,0(8) +- sld 9,7,9 +- mulli 7,10,-4 +- addi 9,9,-1 +- addi 7,7,32 +- and 8,9,5 +- slwi 9,10,3 +- sld 10,8,7 +- srad 6,6,9 +- srad 4,8,9 +- sld 7,10,7 +- or 3,6,7 ++.L65: ++ bl __stack_chk_fail ++ nop ++.L64: ++ or 4,9,6 ++ lbz 9,14(8) ++ or 4,4,5 ++ sldi 9,9,8 ++ or 4,4,0 ++ or 4,4,9 ++ or 4,4,7 ++ b .L1 ++.L63: ++ or 4,9,6 ++ or 4,4,5 ++ or 4,4,0 ++ or 4,4,7 ++ b .L1 ++.L55: ++ lwz 3,0(8) ++ b .L1 ++.L54: ++ sldi 7,7,8 ++ sldi 9,9,16 ++ or 9,7,9 ++ or 3,9,6 ++ b .L1 ++.L53: ++ lhz 3,0(8) ++ b .L1 ++.L52: ++ mr 3,9 ++ b .L1 ++.L62: ++ or 9,9,6 ++ or 4,9,5 ++ or 4,4,7 ++ b .L1 ++.L61: ++ or 9,9,6 ++.L43: ++ or 4,9,7 ++ b .L1 ++.L60: ++ mr 4,7 ++ b .L1 ++.L59: ++ mr 4,9 ++ b .L1 ++.L58: ++ sldi 6,6,32 ++ sldi 7,7,40 ++ lwz 3,3(8) ++ sldi 9,9,48 ++ or 7,6,7 ++ or 3,7,3 ++ or 3,3,9 ++ b .L1 ++.L57: ++ sldi 7,7,32 ++ sldi 9,9,40 ++ lwz 3,2(8) ++ or 9,7,9 ++ or 3,9,3 ++ b .L1 ++.L56: ++ lwz 3,1(8) ++ sldi 9,9,32 ++ or 3,3,9 + b .L1 + .long 0 +- .byte 0,0,0,1,128,2,0,0 ++ .byte 0,0,0,1,128,4,0,0 ++ .cfi_endproc ++.LFE0: + .size callback_receiver,.-callback_receiver + .align 2 + .p2align 4,,15 + .globl callback_get_receiver + .type callback_get_receiver, @function + callback_get_receiver: +-0: addis 2,12,.TOC.-0b@ha +- addi 2,2,.TOC.-0b@l ++.LFB1: ++ .cfi_startproc ++.LCF1: ++0: addis 2,12,.TOC.-.LCF1@ha ++ addi 2,2,.TOC.-.LCF1@l + .localentry callback_get_receiver,.-callback_get_receiver + std 31,-8(1) + stdu 1,-48(1) ++ .cfi_def_cfa_offset 48 ++ .cfi_offset 31, -8 + addis 3,2,callback_receiver@toc@ha + addi 3,3,callback_receiver@toc@l + mr 31,1 ++ .cfi_def_cfa_register 31 + addi 1,31,48 ++ .cfi_def_cfa 1, 0 + ld 31,-8(1) ++ .cfi_restore 31 + blr + .long 0 + .byte 0,0,0,0,128,1,0,0 ++ .cfi_endproc ++.LFE1: + .size callback_get_receiver,.-callback_get_receiver ++ .gnu_attribute 4, 9 + #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ + .section .note.GNU-stack,"",@progbits + #endif diff --git a/user/libsigsegv/APKBUILD b/user/libsigsegv/APKBUILD new file mode 100644 index 000000000..a99ee7075 --- /dev/null +++ b/user/libsigsegv/APKBUILD @@ -0,0 +1,38 @@ +# Contributor: Carlo Landmeter <clandmeter@gmail.com> +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=libsigsegv +pkgver=2.12 +pkgrel=0 +pkgdesc="A library for handling page faults in user mode" +url="https://www.gnu.org/software/libsigsegv" +arch="all" +license="GPL-2.0+" +depends="" +makedepends="" +subpackages="$pkgname-dev" +source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz + musl-ppc32.patch + " + +build() { + ./configure \ + --prefix=/usr \ + --build=$CBUILD \ + --host=$CHOST \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --enable-shared + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums="27986e8aaf4357ed131032aa7c281a5a28c5759530c62bb76f034aea33959547dcaae805e06347a1f532f0488b72fbbbdac4400f74e8d3f2128511526e8a5913 libsigsegv-2.12.tar.gz +fba3bf8679619d9e363bf42e476960dd73cc9a01915773193d6b6d2ca76ee5240a9284982d00bc40601c6da3210c08eb90e61661404ccaf017144ccc36b25762 musl-ppc32.patch" diff --git a/user/libsigsegv/musl-ppc32.patch b/user/libsigsegv/musl-ppc32.patch new file mode 100644 index 000000000..75e10a45f --- /dev/null +++ b/user/libsigsegv/musl-ppc32.patch @@ -0,0 +1,10 @@ +--- libsigsegv-2.12/src/fault-linux-powerpc.h.old 2017-03-04 15:28:15.000000000 +0000 ++++ libsigsegv-2.12/src/fault-linux-powerpc.h 2020-05-11 21:49:56.190783142 +0000 +@@ -33,6 +33,6 @@ + # if 0 + # define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1] + # else +-# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1] ++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gregs[1] + # endif + #endif diff --git a/user/mtools/APKBUILD b/user/mtools/APKBUILD new file mode 100644 index 000000000..34b0b8730 --- /dev/null +++ b/user/mtools/APKBUILD @@ -0,0 +1,32 @@ +# Maintainer: Max Rees <maxcrees@me.com> +pkgname=mtools +pkgver=4.0.24 +pkgrel=0 +pkgdesc="Utilities to access MS-DOS disks without mounting them" +url="https://www.gnu.org/software/mtools/" +arch="all" +options="!check" # No test suite. +license="GPL-3.0+" +depends="" +makedepends="" +subpackages="$pkgname-doc" +source="https://ftp.gnu.org/gnu/mtools/mtools-$pkgver.tar.bz2" + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$pkgdir" install + install -Dm644 -t "$pkgdir"/etc mtools.conf + sed -i -e 's/^SAMPLE FILE$/#&/' "$pkgdir"/etc/mtools.conf +} + +sha512sums="b74becc4f696315cfabc016d1746e744b43e366de73bf1bffeec4fbab1e4815967594de8acb4af01f89d36a925f93672efbac205b89540161bd53ab7edebcf04 mtools-4.0.24.tar.bz2" diff --git a/user/net-snmp/APKBUILD b/user/net-snmp/APKBUILD index 3fc1bceb4..8dea420b2 100644 --- a/user/net-snmp/APKBUILD +++ b/user/net-snmp/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: pkgname=net-snmp pkgver=5.8 -pkgrel=0 +pkgrel=1 pkgdesc="Simple Network Management Protocol" url="http://www.net-snmp.org/" arch="all" @@ -74,7 +74,7 @@ package() { install -m644 -D "$srcdir"/snmpd.confd "$pkgdir"/etc/conf.d/snmpd install -m644 -D "$srcdir"/snmptrapd.confd \ "$pkgdir"/etc/conf.d/snmptrapd - install -m644 -D EXAMPLE.conf "$pkgdir"/etc/snmp/snmpd.conf + install -m600 -D EXAMPLE.conf "$pkgdir"/etc/snmp/snmpd.conf echo "authCommunity log,execute,net public" > "$pkgdir"/etc/snmp/snmptrapd.conf mkdir -p "$pkgdir"/var/lib/net-snmp find "$pkgdir" -name perllocal.pod -delete diff --git a/user/netqmail/0005-CVE-2005-1513.patch b/user/netqmail/0005-CVE-2005-1513.patch new file mode 100644 index 000000000..3b3876cb3 --- /dev/null +++ b/user/netqmail/0005-CVE-2005-1513.patch @@ -0,0 +1,19 @@ +diff -rNU3 netqmail-1.06.old/alloc.c netqmail-1.06/alloc.c +--- netqmail-1.06.old/alloc.c 1998-06-15 10:53:16.000000000 +0000 ++++ netqmail-1.06/alloc.c 2020-05-21 11:33:24.689739728 +0000 +@@ -1,3 +1,4 @@ ++#include <limits.h> + #include "alloc.h" + #include "error.h" + extern char *malloc(); +@@ -15,6 +16,10 @@ + unsigned int n; + { + char *x; ++ if (n >= (INT_MAX >> 3)) { ++ errno = error_nomem; ++ return 0; ++ } + n = ALIGNMENT + n - (n & (ALIGNMENT - 1)); /* XXX: could overflow */ + if (n <= avail) { avail -= n; return space + avail; } + x = malloc(n); diff --git a/user/netqmail/APKBUILD b/user/netqmail/APKBUILD index 551895f83..45b92dbc8 100644 --- a/user/netqmail/APKBUILD +++ b/user/netqmail/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Laurent Bercot <ska-adelie@skarnet.org> pkgname=netqmail pkgver=1.06 -pkgrel=6 +pkgrel=7 pkgdesc="The qmail mail transfer agent (community version)" url="http://www.netqmail.org/" arch="all" @@ -19,6 +19,7 @@ source="http://www.netqmail.org/$pkgname-$pkgver.tar.gz 0002-qbiffutmpx-20170820.patch 0003-qmailremote-20170716.patch 0004-notifyfd.patch + 0005-CVE-2005-1513.patch qmail.run smtpd.run smtpsd.run @@ -106,6 +107,7 @@ ad126cad5c0d35351919ad87022fd94b910519d91cf82f38c158f423bbfc1b82455844a791ba0c69 b3af9c29e6d46daa2a1b9f677c6f32892d5f8c9b8d5c2bdd6f34b106dd5ad41394c05a5ebe145c6e29b4ced4482f08b2d09e7818fd309123c0d087600500e336 0002-qbiffutmpx-20170820.patch cbebdc72c7cc5c437531c9277534ae552c6d044a83b36e3f3ce60ab5563c55eb814d6c543cc0997abab73075d1b517cc0929dd65674d468d517b0ca38196e2b4 0003-qmailremote-20170716.patch b32a8a36c8ab8872abd4f1a117482f064a6d631a6bb2ba75cafe61743bef09f923d26935d9514eec33a7dec5aeb3d0b517d677e55924859d2db5233bc11f9f11 0004-notifyfd.patch +ac8406c1d16ce2e55e47bc83ca6e095833a54de73cecee222cad3fcececa518386b95a11cb0c9c2dcc6851bae28aa539b11069305aa887a291177bf177ee7b01 0005-CVE-2005-1513.patch 954a905bac5e3bc49f180dc0de7f6ee4c4ae8f94dd400ee4b06d3c944f1ff1cfc44bddccb07ae439f2523ad06fcb89023e57d091737da88f836013757794e931 qmail.run c0cd244af4d8186305c51b0e93960bdb1ea6ce40f1adf20c4f72419aa7498e35649590919ebd16547a0313676bf9171c9efea2ff8ac3a5c773b18473a972a977 smtpd.run 719c4ce5ad93cddeafbb734cffeec3fd959d3f374e44e1f34e9a25d638303dd97df41642d3df5c7a069a8db47d1e31c32a16ecd2d04b72860c4e00bbba0c9fcf smtpsd.run diff --git a/user/thunderbird/APKBUILD b/user/thunderbird/APKBUILD index 1270dcbc3..fc2887d63 100644 --- a/user/thunderbird/APKBUILD +++ b/user/thunderbird/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=thunderbird -pkgver=68.7.0 +pkgver=68.9.0 pkgrel=0 pkgdesc="Email client from Mozilla" url="https://www.thunderbird.net/" @@ -36,7 +36,6 @@ source="https://archive.mozilla.org/pub/thunderbird/releases/$pkgver/source/thun fix-mutex-build.patch fix-seccomp-bpf.patch mozilla-build-arm.patch - rust-config.patch shut-up-warning.patch skia-sucks1.patch skia-sucks2.patch @@ -70,6 +69,12 @@ ldpath="$_mozappdir" # - CVE-2020-6821 # - CVE-2020-6822 # - CVE-2020-6825 +# 68.9.0-r0: +# - CVE-2020-6831 +# - CVE-2020-12387 +# - CVE-2020-12392 +# - CVE-2020-12395 +# - CVE-2020-12397 unpack() { default_unpack @@ -164,7 +169,7 @@ package() { ${pkgdir}/usr/share/applications/thunderbird.desktop } -sha512sums="fae763030b7a54930291a10f298b7fa4ffc400849082f576556b9040d095f1007ae686daf1241dff8b73bac35c14acf21c156a18a3e16d62a7719c6cc34e4d1f thunderbird-68.7.0.source.tar.xz +sha512sums="891472c95ba6ff46061131504e89010da512a84b0e1dea0482e603fd4c87f11e099280a245c7dd9fc9320c48229c26602565c089d86f1a1f4271b29b6fc606f0 thunderbird-68.9.0.source.tar.xz 16e814e8dcffc707b595ca2919bd2fa3db0d15794c63d977364652c4a5b92e90e72b8c9e1cc83b5020398bd90a1b397dbdd7cb931c49f1aa4af6ef95414b43e0 Python-2.7.16.tar.xz 5519234df2934ac2f3d76c8cad7e4f0fe15cf83ea4beb32c6489d8b7839b3ebea88bdb342e0d2a9c1c7c95e9455d234b0a5aa0e73446fd8027b520f080a2bb5b mozconfig ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53f94c76e722ba0bab73e28d83ec12d3e672554712e6b08613 bad-google-code.patch @@ -172,7 +177,6 @@ ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53 c0b2bf43206c2a5154e560ef30189a1062ae856861b39f52ce69002390ff9972d43e387bfd2bf8d2ab3cac621987bc042c8c0a8b4cf90ae05717ca7705271880 fix-mutex-build.patch 70863b985427b9653ce5e28d6064f078fb6d4ccf43dd1b68e72f97f44868fc0ce063161c39a4e77a0a1a207b7365d5dc7a7ca5e68c726825eba814f2b93e2f5d fix-seccomp-bpf.patch e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch -45613d476e85fe333ef8091acce4806803953c1a99de4f03ff577cf20c5a1a3d635d0589e1490da104ef80721f4f1b1d35045af3c6892c1a468fa84095f27ad8 rust-config.patch 39ddb15d1453a8412275c36fc8db3befc69dffd4a362e932d280fb7fd1190db595a2af9b468ee49e0714f5e9df6e48eb5794122a64fa9f30d689de8693acbb15 shut-up-warning.patch e751ffab263f03d4c74feebc617e3af115b1b53cf54fe16c3acc585eec67773f37aa8de4c19599fa6478179b01439025112ef2b759aa9923c9900e7081cb65a9 skia-sucks1.patch 9152bd3e6dc446337e6a2ed602279c620aedecc796ba28e777854c4f41fcf3067f9ebd086a4b63a6b76c2e69ec599ac6435b8eeda4f7488b1c45f69113facba4 skia-sucks2.patch diff --git a/user/thunderbird/rust-config.patch b/user/thunderbird/rust-config.patch deleted file mode 100644 index eab72a0e4..000000000 --- a/user/thunderbird/rust-config.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -urw firefox-68.0-old/build/moz.configure/rust.configure firefox-68.0/build/moz.configure/rust.configure ---- firefox-68.0-old/build/moz.configure/rust.configure 2019-07-07 15:56:29.345963800 +0000 -+++ firefox-68.0/build/moz.configure/rust.configure 2019-07-07 16:19:25.990645334 +0000 -@@ -193,12 +193,16 @@ - ambiguous = set() - per_raw_os = {} - for t in out: -+ if 'fuchsia' in t: continue - t = split_triplet(t, allow_unknown=True) - endianness = t.endianness - if t.cpu.startswith('thumb') and endianness not in ('big', 'little'): - endianness = 'little' - key = (t.cpu, endianness, t.os) - if key in per_os: -+ # hax to allow Adélie toolchains to work -+ if 'foxkit' in per_os[key].alias: -+ continue - previous = per_os[key] - per_raw_os[(previous.cpu, previous.endianness, - previous.raw_os)] = previous diff --git a/user/ttf-jetbrains-mono/APKBUILD b/user/ttf-jetbrains-mono/APKBUILD new file mode 100644 index 000000000..54857a62a --- /dev/null +++ b/user/ttf-jetbrains-mono/APKBUILD @@ -0,0 +1,25 @@ +# Contributor: Jonas Vautherin <jonas.vautherin@protonmail.ch> +# Maintainer: Jonas Vautherin <jonas.vautherin@protonmail.ch> +pkgname=ttf-jetbrains-mono +pkgver=1.0.6 +pkgrel=0 +pkgdesc="A typeface for developers" +url="https://www.jetbrains.com/lp/mono" +arch="noarch" +options="!check" # No test suite +license="Apache-2.0" +depends="fontconfig" +makedepends="" +source="https://github.com/JetBrains/JetBrainsMono/releases/download/v${pkgver}/JetBrainsMono-${pkgver}.zip" +builddir="$srcdir/JetBrainsMono-$pkgver" + +package() { + mkdir -p "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-} + + cd ttf + for i in *.ttf; do + install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-} + done +} + +sha512sums="c7d980f8aa16f0773510d71c1b96bdf0d6adc73bef188a50b789517eb4c5eae98fa4feffc0d75f504a31b913d5531f03a709cb87584171f37af662e3c88e4561 JetBrainsMono-1.0.6.zip" diff --git a/user/wimlib/APKBUILD b/user/wimlib/APKBUILD new file mode 100644 index 000000000..a8268910a --- /dev/null +++ b/user/wimlib/APKBUILD @@ -0,0 +1,29 @@ +# Contributor: CyberLeo <cyberleo@cyberleo.net> +# Maintainer: CyberLeo <cyberleo@cyberleo.net> +pkgname=wimlib +pkgver=1.13.1 +pkgrel=0 +pkgdesc="Windows Imaging (WIM) archive manipulation library and tools" +url="https://wimlib.net/" +arch="all" +license="(GPL-2.0 OR LGPL-2.1) AND CC0" +depends="" +makedepends="libxml2-dev fuse-dev ntfs-3g ntfs-3g-dev" +subpackages="$pkgname-doc $pkgname-dev $pkgname-libs" +source="https://wimlib.net/downloads/wimlib-$pkgver.tar.gz" + +build() { + ./configure \ + --prefix=/usr + make +} + +check() { + PATH="/usr/sbin:${PATH}" make check +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums="a874eafa979e715adf06398371380f06ae42370392473b2eb8aca969b2019664b187f3f2bfa74819bc1d85db4977a08e915c69efc67e77e933c82e6bbcda0243 wimlib-1.13.1.tar.gz" diff --git a/user/wireguard-module/APKBUILD b/user/wireguard-module/APKBUILD index 7fac2165c..3ac5683cf 100644 --- a/user/wireguard-module/APKBUILD +++ b/user/wireguard-module/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Luis Ressel <aranea@aixah.de> -# Maintainer: Luis Ressel <aranea@aixah.de> +# Maintainer: Laurent Bercot <ska-adelie@skarnet.org> _kver="5.4.5-mc0" -pkgver=1.0.20200401 +pkgver=1.0.20200506 pkgrel=0 _pkgname="wireguard-module" pkgname="$_pkgname-$_kver" @@ -39,4 +39,4 @@ _patch() { "$builddir"/kernel-tree-scripts/create-patch.sh > "$subpkgdir/usr/share/wireguard/wireguard-$pkgver.patch" } -sha512sums="894da609c7102eb1d076a4a7bdaa96c7d5f0d64b4b86fdf01068ac5f4af966652e7ad7f18b1295a7fc4447f53b55a9ec45f1b3f36f0f9df7fb08836dfdff89f0 wireguard-linux-compat-1.0.20200401.tar.xz" +sha512sums="39a27a515919933dbed71624be3f8f3f512073b522e1e16248c9eda749dd72a3db5a02d85d29855160eb182415f489a4c02c1659ef9589507c99dbfe74ea3074 wireguard-linux-compat-1.0.20200506.tar.xz" diff --git a/user/wireguard-tools/APKBUILD b/user/wireguard-tools/APKBUILD index db64e132e..219a91836 100644 --- a/user/wireguard-tools/APKBUILD +++ b/user/wireguard-tools/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Luis Ressel <aranea@aixah.de> -# Maintainer: Luis Ressel <aranea@aixah.de> +# Maintainer: Laurent Bercot <ska-adelie@skarnet.org> pkgname=wireguard-tools -pkgver=1.0.20200319 +pkgver=1.0.20200513 pkgrel=0 pkgdesc="Userland tools for the WireGuard VPN" url="https://www.wireguard.com/" @@ -29,4 +29,4 @@ bashcomp() { mv "$pkgdir/usr/share/bash-completion" "$subpkgdir/usr/share/" } -sha512sums="d5bcd153f9b10f184b9a1bf9a81f33a9713ab4863ab5aa190eac60e92919756c8fecbb0d3cfb83bae20ac78fc43fdd7168f37294cdd7c5ee21f2a1b2db5fdf41 wireguard-tools-1.0.20200319.tar.xz" +sha512sums="4d27b262350b6b47843a323c2e7ab8d2bdd48065c265778abdec85b3f6fc92aa9af77d76e368df9cc8e435eae1c0ce50fed52e1d78db54358c1884d34be08d2c wireguard-tools-1.0.20200513.tar.xz" |