]> git.armaanb.net Git - asd-repo.git/commitdiff
Adapt for asd linux
authorArmaan Bhojwani <me@armaanb.net>
Thu, 8 Jul 2021 21:28:56 +0000 (21:28 +0000)
committerArmaan Bhojwani <me@armaanb.net>
Mon, 12 Jul 2021 22:58:51 +0000 (18:58 -0400)
969 files changed:
LICENSE
README
core/asd/build [new file with mode: 0755]
core/asd/checksums [new file with mode: 0644]
core/asd/depends [new file with mode: 0644]
core/asd/sources [new file with mode: 0644]
core/asd/version [new file with mode: 0644]
core/baseinit/build
core/baseinit/checksums
core/baseinit/depends [deleted file]
core/baseinit/sources
core/baseinit/version
core/baselayout/build [new file with mode: 0755]
core/baselayout/checksums [new file with mode: 0644]
core/baselayout/files/crypttab [new file with mode: 0644]
core/baselayout/files/fstab [new file with mode: 0644]
core/baselayout/files/group [new file with mode: 0644]
core/baselayout/files/host.conf [new file with mode: 0644]
core/baselayout/files/hosts [new file with mode: 0644]
core/baselayout/files/issue [new file with mode: 0644]
core/baselayout/files/mime.types [new file with mode: 0644]
core/baselayout/files/os-release [new file with mode: 0644]
core/baselayout/files/passwd [new file with mode: 0644]
core/baselayout/files/profile [new file with mode: 0644]
core/baselayout/files/securetty [new file with mode: 0644]
core/baselayout/files/shadow [new file with mode: 0644]
core/baselayout/files/shells [new file with mode: 0644]
core/baselayout/sources [new file with mode: 0644]
core/baselayout/version [new file with mode: 0644]
core/bmake/build [deleted file]
core/bmake/checksums [deleted file]
core/bmake/sources [deleted file]
core/bmake/version [deleted file]
core/busybox/checksums
core/busybox/files/config
core/busybox/patches/modprobe-kernel-version.patch
core/busybox/version
core/byacc/depends [deleted file]
core/bzip2/build [new file with mode: 0755]
core/bzip2/checksums [new file with mode: 0644]
core/bzip2/sources [new file with mode: 0644]
core/bzip2/version [new file with mode: 0644]
core/catgirl/build [new file with mode: 0755]
core/catgirl/checksums [new file with mode: 0644]
core/catgirl/depends [new file with mode: 0644]
core/catgirl/sources [new file with mode: 0644]
core/catgirl/version [new file with mode: 0644]
core/cmake/build [new file with mode: 0755]
core/cmake/checksums [new file with mode: 0644]
core/cmake/depends [new file with mode: 0644]
core/cmake/patches/cmake-no-execinfo.patch [new file with mode: 0644]
core/cmake/sources [new file with mode: 0644]
core/cmake/version [new file with mode: 0644]
core/curl/build [new file with mode: 0755]
core/curl/checksums [new file with mode: 0644]
core/curl/depends [new file with mode: 0644]
core/curl/sources [new file with mode: 0644]
core/curl/version [new file with mode: 0644]
core/cyrus-sasl/build [new file with mode: 0755]
core/cyrus-sasl/checksums [new file with mode: 0644]
core/cyrus-sasl/depends [new file with mode: 0644]
core/cyrus-sasl/sources [new file with mode: 0644]
core/cyrus-sasl/version [new file with mode: 0644]
core/efibootmgr/build [new file with mode: 0755]
core/efibootmgr/checksums [new file with mode: 0644]
core/efibootmgr/depends [new file with mode: 0644]
core/efibootmgr/sources [new file with mode: 0644]
core/efibootmgr/version [new file with mode: 0644]
core/efivar/build [new file with mode: 0755]
core/efivar/checksums [new file with mode: 0644]
core/efivar/depends [new file with mode: 0644]
core/efivar/patches/00-b98ba8921010d03f46704a476c69861515deb1ca.patch [new file with mode: 0644]
core/efivar/patches/01-c3c553db85ff10890209d0fe48fb4856ad68e4e0.patch [new file with mode: 0644]
core/efivar/patches/02-0dad6d78a7fb5f6c5fb4a1d646040539db6cf865.patch [new file with mode: 0644]
core/efivar/patches/03-fdb803402fb32fa6d020bac57a40c7efe4aabb7d.patch [new file with mode: 0644]
core/efivar/patches/04-4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e.patch [new file with mode: 0644]
core/efivar/sources [new file with mode: 0644]
core/efivar/version [new file with mode: 0644]
core/expat/build [new file with mode: 0755]
core/expat/checksums [new file with mode: 0644]
core/expat/sources [new file with mode: 0644]
core/expat/version [new file with mode: 0644]
core/git/build
core/git/depends
core/git/version
core/gnupg2/build [new file with mode: 0755]
core/gnupg2/checksums [new file with mode: 0644]
core/gnupg2/depends [new file with mode: 0644]
core/gnupg2/sources [new file with mode: 0644]
core/gnupg2/version [new file with mode: 0644]
core/gzip/build [new file with mode: 0755]
core/gzip/checksums [new file with mode: 0644]
core/gzip/sources [new file with mode: 0644]
core/gzip/version [new file with mode: 0644]
core/isync/build [new file with mode: 0755]
core/isync/checksums [new file with mode: 0644]
core/isync/depends [new file with mode: 0644]
core/isync/sources [new file with mode: 0644]
core/isync/version [new file with mode: 0644]
core/libassuan/build [new file with mode: 0755]
core/libassuan/checksums [new file with mode: 0644]
core/libassuan/depends [new file with mode: 0644]
core/libassuan/sources [new file with mode: 0644]
core/libassuan/version [new file with mode: 0644]
core/libedit/build [new file with mode: 0755]
core/libedit/checksums [new file with mode: 0644]
core/libedit/depends [new file with mode: 0644]
core/libedit/sources [new file with mode: 0644]
core/libedit/version [new file with mode: 0644]
core/libevent/build [new file with mode: 0755]
core/libevent/checksums [new file with mode: 0644]
core/libevent/sources [new file with mode: 0644]
core/libevent/version [new file with mode: 0644]
core/libffi/build [new file with mode: 0755]
core/libffi/checksums [new file with mode: 0644]
core/libffi/depends [new file with mode: 0644]
core/libffi/sources [new file with mode: 0644]
core/libffi/version [new file with mode: 0644]
core/libgcrypt/build [new file with mode: 0755]
core/libgcrypt/checksums [new file with mode: 0644]
core/libgcrypt/depends [new file with mode: 0644]
core/libgcrypt/sources [new file with mode: 0644]
core/libgcrypt/version [new file with mode: 0644]
core/libgpg-error/build [new file with mode: 0755]
core/libgpg-error/checksums [new file with mode: 0644]
core/libgpg-error/sources [new file with mode: 0644]
core/libgpg-error/version [new file with mode: 0644]
core/libksba/build [new file with mode: 0755]
core/libksba/checksums [new file with mode: 0644]
core/libksba/sources [new file with mode: 0644]
core/libksba/version [new file with mode: 0644]
core/libressl/build [new file with mode: 0755]
core/libressl/checksums [new file with mode: 0644]
core/libressl/files/update-certdata.sh [new file with mode: 0755]
core/libressl/post-install [new file with mode: 0755]
core/libressl/sources [new file with mode: 0644]
core/libressl/version [new file with mode: 0644]
core/libtermkey/build [new file with mode: 0755]
core/libtermkey/checksums [new file with mode: 0644]
core/libtermkey/depends [new file with mode: 0644]
core/libtermkey/patches/static-no-libtool.patch [new file with mode: 0644]
core/libtermkey/sources [new file with mode: 0644]
core/libtermkey/version [new file with mode: 0644]
core/libudev-zero/build [new file with mode: 0755]
core/libudev-zero/checksums [new file with mode: 0644]
core/libudev-zero/depends [new file with mode: 0644]
core/libudev-zero/sources [new file with mode: 0644]
core/libudev-zero/version [new file with mode: 0644]
core/libuuid/build [deleted file]
core/libuuid/checksums [deleted file]
core/libuuid/depends [deleted file]
core/libuuid/sources [deleted file]
core/libuuid/version [deleted file]
core/links/build [new file with mode: 0755]
core/links/checksums [new file with mode: 0644]
core/links/depends [new file with mode: 0644]
core/links/sources [new file with mode: 0644]
core/links/version [new file with mode: 0644]
core/linux-headers/build [new file with mode: 0755]
core/linux-headers/checksums [new file with mode: 0644]
core/linux-headers/sources [new file with mode: 0644]
core/linux-headers/version [new file with mode: 0644]
core/llvm/checksums
core/llvm/files/c99
core/llvm/sources
core/llvm/version
core/lua/build [deleted file]
core/lua/checksums [deleted file]
core/lua/depends [deleted file]
core/lua/files/lua.pc [deleted file]
core/lua/sources [deleted file]
core/lua/version [deleted file]
core/make/build [new file with mode: 0755]
core/make/checksums [new file with mode: 0644]
core/make/sources [new file with mode: 0644]
core/make/version [new file with mode: 0644]
core/man-pages/build [new file with mode: 0755]
core/man-pages/checksums [new file with mode: 0644]
core/man-pages/sources [new file with mode: 0644]
core/man-pages/version [new file with mode: 0644]
core/mandoc/build [new file with mode: 0755]
core/mandoc/checksums [new file with mode: 0644]
core/mandoc/depends [new file with mode: 0644]
core/mandoc/patches/mandoc-no-warn.patch [new file with mode: 0644]
core/mandoc/sources [new file with mode: 0644]
core/mandoc/version [new file with mode: 0644]
core/musl/build [new file with mode: 0755]
core/musl/checksums [new file with mode: 0644]
core/musl/files/cdefs.h [new file with mode: 0755]
core/musl/files/getconf.c [new file with mode: 0644]
core/musl/files/getent.c [new file with mode: 0644]
core/musl/files/queue.h [new file with mode: 0755]
core/musl/files/tree.h [new file with mode: 0755]
core/musl/sources [new file with mode: 0644]
core/musl/version [new file with mode: 0644]
core/mutt/build [new file with mode: 0755]
core/mutt/checksums [new file with mode: 0644]
core/mutt/depends [new file with mode: 0644]
core/mutt/sources [new file with mode: 0644]
core/mutt/version [new file with mode: 0644]
core/ncurses/version
core/npth/build [new file with mode: 0755]
core/npth/checksums [new file with mode: 0644]
core/npth/sources [new file with mode: 0644]
core/npth/version [new file with mode: 0644]
core/opendoas/checksums
core/opendoas/files/doas.conf
core/opendoas/version
core/perl/build [new file with mode: 0755]
core/perl/checksums [new file with mode: 0644]
core/perl/depends [new file with mode: 0644]
core/perl/sources [new file with mode: 0644]
core/perl/version [new file with mode: 0644]
core/pkgconf/build [new file with mode: 0755]
core/pkgconf/checksums [new file with mode: 0644]
core/pkgconf/sources [new file with mode: 0644]
core/pkgconf/version [new file with mode: 0644]
core/samurai/build [new file with mode: 0755]
core/samurai/checksums [new file with mode: 0644]
core/samurai/sources [new file with mode: 0644]
core/samurai/version [new file with mode: 0644]
core/sqlite/build [new file with mode: 0755]
core/sqlite/checksums [new file with mode: 0644]
core/sqlite/depends [new file with mode: 0644]
core/sqlite/sources [new file with mode: 0644]
core/sqlite/version [new file with mode: 0644]
core/syslinux/build [deleted file]
core/syslinux/checksums [deleted file]
core/syslinux/depends [deleted file]
core/syslinux/patches/0018-prevent-pow-optimization.patch [deleted file]
core/syslinux/patches/fcommon.patch [deleted file]
core/syslinux/sources [deleted file]
core/syslinux/version [deleted file]
core/tzdata/build [new file with mode: 0755]
core/tzdata/checksums [new file with mode: 0644]
core/tzdata/sources [new file with mode: 0644]
core/tzdata/version [new file with mode: 0644]
core/ugrep/build [new file with mode: 0755]
core/ugrep/checksums [new file with mode: 0644]
core/ugrep/depends [new file with mode: 0644]
core/ugrep/files/egrep [new file with mode: 0644]
core/ugrep/files/fgrep [new file with mode: 0644]
core/ugrep/sources [new file with mode: 0644]
core/ugrep/version [new file with mode: 0644]
core/vis-min/build [new file with mode: 0755]
core/vis-min/checksums [new file with mode: 0644]
core/vis-min/depends [new file with mode: 0644]
core/vis-min/patches/soft-wrap.patch [new file with mode: 0644]
core/vis-min/sources [new file with mode: 0644]
core/vis-min/version [new file with mode: 0644]
core/vis/build [deleted file]
core/vis/checksums [deleted file]
core/vis/depends [deleted file]
core/vis/patches/soft-wrap.patch [deleted file]
core/vis/sources [deleted file]
core/vis/version [deleted file]
core/xz/build [new file with mode: 0755]
core/xz/checksums [new file with mode: 0644]
core/xz/sources [new file with mode: 0644]
core/xz/version [new file with mode: 0644]
core/zlib/build [new file with mode: 0755]
core/zlib/checksums [new file with mode: 0644]
core/zlib/sources [new file with mode: 0644]
core/zlib/version [new file with mode: 0644]
core/zstd/build [new file with mode: 0755]
core/zstd/checksums [new file with mode: 0644]
core/zstd/sources [new file with mode: 0644]
core/zstd/version [new file with mode: 0644]
desktop/colorpicker/build [deleted file]
desktop/colorpicker/depends [deleted file]
desktop/colorpicker/sources [deleted file]
desktop/colorpicker/version [deleted file]
desktop/gobject-introspection/build [deleted file]
desktop/gobject-introspection/depends [deleted file]
desktop/gobject-introspection/sources [deleted file]
desktop/gobject-introspection/version [deleted file]
desktop/gstreamer/build [deleted file]
desktop/gstreamer/checksums [deleted file]
desktop/gstreamer/depends [deleted file]
desktop/gstreamer/sources [deleted file]
desktop/gstreamer/version [deleted file]
desktop/gtk+3/build [deleted file]
desktop/gtk+3/checksums [deleted file]
desktop/gtk+3/depends [deleted file]
desktop/gtk+3/post-install [deleted file]
desktop/gtk+3/sources [deleted file]
desktop/gtk+3/version [deleted file]
desktop/mesa/build [deleted file]
desktop/mesa/checksums [deleted file]
desktop/mesa/depends [deleted file]
desktop/mesa/sources [deleted file]
desktop/mesa/version [deleted file]
desktop/mini-xdg-utils/build [deleted file]
desktop/mini-xdg-utils/checksums [deleted file]
desktop/mini-xdg-utils/depends [deleted file]
desktop/mini-xdg-utils/sources [deleted file]
desktop/mini-xdg-utils/version [deleted file]
desktop/motif/build [deleted file]
desktop/motif/checksums [deleted file]
desktop/motif/depends [deleted file]
desktop/motif/sources [deleted file]
desktop/motif/version [deleted file]
desktop/mpv/build [deleted file]
desktop/mpv/checksums [deleted file]
desktop/mpv/depends [deleted file]
desktop/mpv/sources [deleted file]
desktop/mpv/version [deleted file]
desktop/qt5/build [deleted file]
desktop/qt5/checksums [deleted file]
desktop/qt5/depends [deleted file]
desktop/qt5/files/qt.conf [deleted file]
desktop/qt5/patches/clang-socklen-match-gcc.patch [deleted file]
desktop/qt5/patches/libressl.patch [deleted file]
desktop/qt5/sources [deleted file]
desktop/qt5/version [deleted file]
desktop/skeous-gtk-theme/build [deleted file]
desktop/skeous-gtk-theme/checksums [deleted file]
desktop/skeous-gtk-theme/depends [deleted file]
desktop/skeous-gtk-theme/sources [deleted file]
desktop/skeous-gtk-theme/version [deleted file]
desktop/webkit2gtk/build [deleted file]
desktop/webkit2gtk/checksums [deleted file]
desktop/webkit2gtk/depends [deleted file]
desktop/webkit2gtk/sources [deleted file]
desktop/webkit2gtk/version [deleted file]
desktop/xvile/build [deleted file]
desktop/xvile/checksums [deleted file]
desktop/xvile/depends [deleted file]
desktop/xvile/sources [deleted file]
desktop/xvile/version [deleted file]
extra/acpid/build [new file with mode: 0755]
extra/acpid/checksums [new file with mode: 0644]
extra/acpid/depends [new file with mode: 0644]
extra/acpid/files/acpid.run [new file with mode: 0644]
extra/acpid/sources [new file with mode: 0644]
extra/acpid/version [new file with mode: 0644]
extra/ag/build [deleted file]
extra/ag/checksums [deleted file]
extra/ag/depends [deleted file]
extra/ag/sources [deleted file]
extra/ag/version [deleted file]
extra/alsa-lib/build [new file with mode: 0755]
extra/alsa-lib/checksums [new file with mode: 0644]
extra/alsa-lib/depends [new file with mode: 0644]
extra/alsa-lib/sources [new file with mode: 0644]
extra/alsa-lib/version [new file with mode: 0644]
extra/alsa-utils/build [new file with mode: 0755]
extra/alsa-utils/checksums [new file with mode: 0644]
extra/alsa-utils/depends [new file with mode: 0644]
extra/alsa-utils/sources [new file with mode: 0644]
extra/alsa-utils/version [new file with mode: 0644]
extra/aspell/depends [deleted file]
extra/aspell/version
extra/atk/build [new file with mode: 0755]
extra/atk/checksums [new file with mode: 0644]
extra/atk/depends [new file with mode: 0644]
extra/atk/sources [new file with mode: 0644]
extra/atk/version [new file with mode: 0644]
extra/bmake/build [new file with mode: 0755]
extra/bmake/checksums [new file with mode: 0644]
extra/bmake/sources [new file with mode: 0644]
extra/bmake/version [new file with mode: 0644]
extra/cairo/build [new file with mode: 0755]
extra/cairo/checksums [new file with mode: 0644]
extra/cairo/depends [new file with mode: 0644]
extra/cairo/sources [new file with mode: 0644]
extra/cairo/version [new file with mode: 0644]
extra/ccache/version
extra/checkpassword/depends [deleted file]
extra/checkpassword/sources
extra/chorizo/build [new file with mode: 0755]
extra/chorizo/checksums [new file with mode: 0644]
extra/chorizo/depends [new file with mode: 0644]
extra/chorizo/sources [new file with mode: 0644]
extra/chorizo/version [new file with mode: 0644]
extra/clac/depends [deleted file]
extra/cmake/build [deleted file]
extra/cmake/checksums [deleted file]
extra/cmake/depends [deleted file]
extra/cmake/patches/cmake-no-execinfo.patch [deleted file]
extra/cmake/sources [deleted file]
extra/cmake/version [deleted file]
extra/colorpicker/build [new file with mode: 0755]
extra/colorpicker/depends [new file with mode: 0644]
extra/colorpicker/sources [new file with mode: 0644]
extra/colorpicker/version [new file with mode: 0644]
extra/dejavu-ttf/build [new file with mode: 0755]
extra/dejavu-ttf/checksums [new file with mode: 0644]
extra/dejavu-ttf/post-install [new file with mode: 0755]
extra/dejavu-ttf/sources [new file with mode: 0644]
extra/dejavu-ttf/version [new file with mode: 0644]
extra/dhcpcd/build [new file with mode: 0755]
extra/dhcpcd/checksums [new file with mode: 0644]
extra/dhcpcd/depends [new file with mode: 0644]
extra/dhcpcd/files/dhcpcd.run [new file with mode: 0644]
extra/dhcpcd/sources [new file with mode: 0644]
extra/dhcpcd/version [new file with mode: 0644]
extra/dmenu/build [new file with mode: 0755]
extra/dmenu/checksums [new file with mode: 0644]
extra/dmenu/depends [new file with mode: 0644]
extra/dmenu/sources [new file with mode: 0644]
extra/dmenu/version [new file with mode: 0644]
extra/dtfl/sources
extra/dwm/build [new file with mode: 0755]
extra/dwm/checksums [new file with mode: 0644]
extra/dwm/depends [new file with mode: 0644]
extra/dwm/sources [new file with mode: 0644]
extra/dwm/version [new file with mode: 0644]
extra/e2fsprogs/build [new file with mode: 0755]
extra/e2fsprogs/checksums [new file with mode: 0644]
extra/e2fsprogs/sources [new file with mode: 0644]
extra/e2fsprogs/version [new file with mode: 0644]
extra/enchant/depends [deleted file]
extra/ffmpeg/build [new file with mode: 0755]
extra/ffmpeg/checksums [new file with mode: 0644]
extra/ffmpeg/depends [new file with mode: 0644]
extra/ffmpeg/sources [new file with mode: 0644]
extra/ffmpeg/version [new file with mode: 0644]
extra/file/build [new file with mode: 0755]
extra/file/checksums [new file with mode: 0644]
extra/file/depends [new file with mode: 0644]
extra/file/sources [new file with mode: 0644]
extra/file/version [new file with mode: 0644]
extra/flex/build [new file with mode: 0755]
extra/flex/checksums [new file with mode: 0644]
extra/flex/depends [new file with mode: 0644]
extra/flex/sources [new file with mode: 0644]
extra/flex/version [new file with mode: 0644]
extra/fontconfig/build [new file with mode: 0755]
extra/fontconfig/checksums [new file with mode: 0644]
extra/fontconfig/depends [new file with mode: 0644]
extra/fontconfig/post-install [new file with mode: 0755]
extra/fontconfig/sources [new file with mode: 0644]
extra/fontconfig/version [new file with mode: 0644]
extra/fortune/build [deleted file]
extra/fortune/checksums [deleted file]
extra/fortune/depends [deleted file]
extra/fortune/files/kiss [deleted file]
extra/fortune/sources [deleted file]
extra/fortune/version [deleted file]
extra/freetype-harfbuzz/build [new file with mode: 0755]
extra/freetype-harfbuzz/checksums [new file with mode: 0644]
extra/freetype-harfbuzz/depends [new file with mode: 0644]
extra/freetype-harfbuzz/sources [new file with mode: 0644]
extra/freetype-harfbuzz/version [new file with mode: 0644]
extra/fribidi/build [new file with mode: 0755]
extra/fribidi/checksums [new file with mode: 0644]
extra/fribidi/sources [new file with mode: 0644]
extra/fribidi/version [new file with mode: 0644]
extra/gcc/sources
extra/gdk-pixbuf/build [new file with mode: 0755]
extra/gdk-pixbuf/checksums [new file with mode: 0644]
extra/gdk-pixbuf/depends [new file with mode: 0644]
extra/gdk-pixbuf/post-install [new file with mode: 0755]
extra/gdk-pixbuf/sources [new file with mode: 0644]
extra/gdk-pixbuf/version [new file with mode: 0644]
extra/giflib/build [new file with mode: 0755]
extra/giflib/checksums [new file with mode: 0644]
extra/giflib/sources [new file with mode: 0644]
extra/giflib/version [new file with mode: 0644]
extra/girara/build [new file with mode: 0755]
extra/girara/checksums [new file with mode: 0644]
extra/girara/depends [new file with mode: 0644]
extra/girara/sources [new file with mode: 0644]
extra/girara/version [new file with mode: 0644]
extra/glib-networking/build [new file with mode: 0755]
extra/glib-networking/checksums [new file with mode: 0644]
extra/glib-networking/depends [new file with mode: 0644]
extra/glib-networking/sources [new file with mode: 0644]
extra/glib-networking/version [new file with mode: 0644]
extra/glib/build [new file with mode: 0755]
extra/glib/checksums [new file with mode: 0644]
extra/glib/depends [new file with mode: 0644]
extra/glib/sources [new file with mode: 0644]
extra/glib/version [new file with mode: 0644]
extra/gnutls/build [new file with mode: 0755]
extra/gnutls/checksums [new file with mode: 0644]
extra/gnutls/depends [new file with mode: 0644]
extra/gnutls/sources [new file with mode: 0644]
extra/gnutls/version [new file with mode: 0644]
extra/gobject-introspection/build [new file with mode: 0755]
extra/gobject-introspection/depends [new file with mode: 0644]
extra/gobject-introspection/sources [new file with mode: 0644]
extra/gobject-introspection/version [new file with mode: 0644]
extra/gperf/build [new file with mode: 0755]
extra/gperf/checksums [new file with mode: 0644]
extra/gperf/sources [new file with mode: 0644]
extra/gperf/version [new file with mode: 0644]
extra/gstreamer/build [new file with mode: 0755]
extra/gstreamer/checksums [new file with mode: 0644]
extra/gstreamer/depends [new file with mode: 0644]
extra/gstreamer/sources [new file with mode: 0644]
extra/gstreamer/version [new file with mode: 0644]
extra/gtk+3/build [new file with mode: 0755]
extra/gtk+3/checksums [new file with mode: 0644]
extra/gtk+3/depends [new file with mode: 0644]
extra/gtk+3/post-install [new file with mode: 0755]
extra/gtk+3/sources [new file with mode: 0644]
extra/gtk+3/version [new file with mode: 0644]
extra/harfbuzz-icu/build [new file with mode: 0755]
extra/harfbuzz-icu/checksums [new file with mode: 0644]
extra/harfbuzz-icu/depends [new file with mode: 0644]
extra/harfbuzz-icu/sources [new file with mode: 0644]
extra/harfbuzz-icu/version [new file with mode: 0644]
extra/icu/build [new file with mode: 0755]
extra/icu/checksums [new file with mode: 0644]
extra/icu/sources [new file with mode: 0644]
extra/icu/version [new file with mode: 0644]
extra/intltool/build [deleted file]
extra/intltool/checksums [deleted file]
extra/intltool/depends [deleted file]
extra/intltool/sources [deleted file]
extra/intltool/version [deleted file]
extra/isync/build [deleted file]
extra/isync/checksums [deleted file]
extra/isync/depends [deleted file]
extra/isync/sources [deleted file]
extra/isync/version [deleted file]
extra/jetbrainsmono-nf/depends [deleted file]
extra/joe/version
extra/json-c/build [new file with mode: 0755]
extra/json-c/checksums [new file with mode: 0644]
extra/json-c/depends [new file with mode: 0644]
extra/json-c/sources [new file with mode: 0644]
extra/json-c/version [new file with mode: 0644]
extra/lame/build [new file with mode: 0755]
extra/lame/checksums [new file with mode: 0644]
extra/lame/sources [new file with mode: 0644]
extra/lame/version [new file with mode: 0644]
extra/lcms/build [new file with mode: 0755]
extra/lcms/checksums [new file with mode: 0644]
extra/lcms/depends [new file with mode: 0644]
extra/lcms/sources [new file with mode: 0644]
extra/lcms/version [new file with mode: 0644]
extra/libass/build [new file with mode: 0755]
extra/libass/checksums [new file with mode: 0644]
extra/libass/depends [new file with mode: 0644]
extra/libass/sources [new file with mode: 0644]
extra/libass/version [new file with mode: 0644]
extra/libdrm/build [new file with mode: 0755]
extra/libdrm/checksums [new file with mode: 0644]
extra/libdrm/depends [new file with mode: 0644]
extra/libdrm/sources [new file with mode: 0644]
extra/libdrm/version [new file with mode: 0644]
extra/libelf/build [new file with mode: 0755]
extra/libelf/checksums [new file with mode: 0644]
extra/libelf/depends [new file with mode: 0644]
extra/libelf/files/error.h [new file with mode: 0644]
extra/libelf/sources [new file with mode: 0644]
extra/libelf/version [new file with mode: 0644]
extra/libepoxy/build [new file with mode: 0755]
extra/libepoxy/checksums [new file with mode: 0644]
extra/libepoxy/depends [new file with mode: 0644]
extra/libepoxy/sources [new file with mode: 0644]
extra/libepoxy/version [new file with mode: 0644]
extra/libevdev/build [new file with mode: 0755]
extra/libevdev/checksums [new file with mode: 0644]
extra/libevdev/depends [new file with mode: 0644]
extra/libevdev/sources [new file with mode: 0644]
extra/libevdev/version [new file with mode: 0644]
extra/libexif/build [new file with mode: 0755]
extra/libexif/checksums [new file with mode: 0644]
extra/libexif/sources [new file with mode: 0644]
extra/libexif/version [new file with mode: 0644]
extra/libinput/build [new file with mode: 0755]
extra/libinput/checksums [new file with mode: 0644]
extra/libinput/depends [new file with mode: 0644]
extra/libinput/post-install [new file with mode: 0755]
extra/libinput/sources [new file with mode: 0644]
extra/libinput/version [new file with mode: 0644]
extra/libjpeg-turbo/build [new file with mode: 0755]
extra/libjpeg-turbo/checksums [new file with mode: 0644]
extra/libjpeg-turbo/depends [new file with mode: 0644]
extra/libjpeg-turbo/sources [new file with mode: 0644]
extra/libjpeg-turbo/version [new file with mode: 0644]
extra/libogg/build [new file with mode: 0755]
extra/libogg/checksums [new file with mode: 0644]
extra/libogg/sources [new file with mode: 0644]
extra/libogg/version [new file with mode: 0644]
extra/libpng/build [new file with mode: 0755]
extra/libpng/checksums [new file with mode: 0644]
extra/libpng/depends [new file with mode: 0644]
extra/libpng/patches/libpng-1.6.37-apng.patch [new file with mode: 0644]
extra/libpng/sources [new file with mode: 0644]
extra/libpng/version [new file with mode: 0644]
extra/libpsl/build [new file with mode: 0755]
extra/libpsl/checksums [new file with mode: 0644]
extra/libpsl/depends [new file with mode: 0644]
extra/libpsl/sources [new file with mode: 0644]
extra/libpsl/version [new file with mode: 0644]
extra/libsoup/build [new file with mode: 0755]
extra/libsoup/checksums [new file with mode: 0644]
extra/libsoup/depends [new file with mode: 0644]
extra/libsoup/sources [new file with mode: 0644]
extra/libsoup/version [new file with mode: 0644]
extra/libvorbis/build [new file with mode: 0755]
extra/libvorbis/checksums [new file with mode: 0644]
extra/libvorbis/depends [new file with mode: 0644]
extra/libvorbis/sources [new file with mode: 0644]
extra/libvorbis/version [new file with mode: 0644]
extra/libvpx/build [new file with mode: 0755]
extra/libvpx/checksums [new file with mode: 0644]
extra/libvpx/depends [new file with mode: 0644]
extra/libvpx/files/vp8_rtcd.h [new file with mode: 0644]
extra/libvpx/files/vp9_rtcd.h [new file with mode: 0644]
extra/libvpx/files/vpx_dsp_rtcd.h [new file with mode: 0644]
extra/libvpx/files/vpx_scale_rtcd.h [new file with mode: 0644]
extra/libvpx/patches/fix-busybox-diff.patch [new file with mode: 0644]
extra/libvpx/sources [new file with mode: 0644]
extra/libvpx/version [new file with mode: 0644]
extra/libwebp/build [new file with mode: 0755]
extra/libwebp/checksums [new file with mode: 0644]
extra/libwebp/depends [new file with mode: 0644]
extra/libwebp/sources [new file with mode: 0644]
extra/libwebp/version [new file with mode: 0644]
extra/libxml2/build [new file with mode: 0755]
extra/libxml2/checksums [new file with mode: 0644]
extra/libxml2/depends [new file with mode: 0644]
extra/libxml2/sources [new file with mode: 0644]
extra/libxml2/version [new file with mode: 0644]
extra/libxslt/build [new file with mode: 0755]
extra/libxslt/checksums [new file with mode: 0644]
extra/libxslt/depends [new file with mode: 0644]
extra/libxslt/sources [new file with mode: 0644]
extra/libxslt/version [new file with mode: 0644]
extra/lpeg/build [new file with mode: 0755]
extra/lpeg/checksums [new file with mode: 0644]
extra/lpeg/depends [new file with mode: 0644]
extra/lpeg/patches/build-static-lib.patch [new file with mode: 0644]
extra/lpeg/sources [new file with mode: 0644]
extra/lpeg/version [new file with mode: 0644]
extra/lua/build [new file with mode: 0755]
extra/lua/checksums [new file with mode: 0644]
extra/lua/files/lua.pc [new file with mode: 0644]
extra/lua/sources [new file with mode: 0644]
extra/lua/version [new file with mode: 0644]
extra/lzo/build [new file with mode: 0755]
extra/lzo/checksums [new file with mode: 0644]
extra/lzo/sources [new file with mode: 0644]
extra/lzo/version [new file with mode: 0644]
extra/m4/build [new file with mode: 0755]
extra/m4/checksums [new file with mode: 0644]
extra/m4/sources [new file with mode: 0644]
extra/m4/version [new file with mode: 0644]
extra/mesa/build [new file with mode: 0755]
extra/mesa/checksums [new file with mode: 0644]
extra/mesa/depends [new file with mode: 0644]
extra/mesa/sources [new file with mode: 0644]
extra/mesa/version [new file with mode: 0644]
extra/meson/build [new file with mode: 0755]
extra/meson/checksums [new file with mode: 0644]
extra/meson/depends [new file with mode: 0644]
extra/meson/sources [new file with mode: 0644]
extra/meson/version [new file with mode: 0644]
extra/mini-xdg-utils/build [new file with mode: 0755]
extra/mini-xdg-utils/checksums [new file with mode: 0644]
extra/mini-xdg-utils/sources [new file with mode: 0644]
extra/mini-xdg-utils/version [new file with mode: 0644]
extra/motif/build [new file with mode: 0755]
extra/motif/checksums [new file with mode: 0644]
extra/motif/depends [new file with mode: 0644]
extra/motif/sources [new file with mode: 0644]
extra/motif/version [new file with mode: 0644]
extra/mpv/build [new file with mode: 0755]
extra/mpv/checksums [new file with mode: 0644]
extra/mpv/depends [new file with mode: 0644]
extra/mpv/sources [new file with mode: 0644]
extra/mpv/version [new file with mode: 0644]
extra/mtdev/build [new file with mode: 0755]
extra/mtdev/checksums [new file with mode: 0644]
extra/mtdev/depends [new file with mode: 0644]
extra/mtdev/sources [new file with mode: 0644]
extra/mtdev/version [new file with mode: 0644]
extra/mu/version
extra/mutt/build [deleted file]
extra/mutt/checksums [deleted file]
extra/mutt/depends [deleted file]
extra/mutt/sources [deleted file]
extra/mutt/version [deleted file]
extra/nasm/build [new file with mode: 0755]
extra/nasm/checksums [new file with mode: 0644]
extra/nasm/sources [new file with mode: 0644]
extra/nasm/version [new file with mode: 0644]
extra/ncdu/build [new file with mode: 0755]
extra/ncdu/checksums [new file with mode: 0644]
extra/ncdu/depends [new file with mode: 0644]
extra/ncdu/sources [new file with mode: 0644]
extra/ncdu/version [new file with mode: 0644]
extra/nettle/build [new file with mode: 0755]
extra/nettle/checksums [new file with mode: 0644]
extra/nettle/sources [new file with mode: 0644]
extra/nettle/version [new file with mode: 0644]
extra/openconnect/depends [deleted file]
extra/openjpeg/build [new file with mode: 0755]
extra/openjpeg/checksums [new file with mode: 0644]
extra/openjpeg/depends [new file with mode: 0644]
extra/openjpeg/sources [new file with mode: 0644]
extra/openjpeg/version [new file with mode: 0644]
extra/openssh/build [new file with mode: 0755]
extra/openssh/checksums [new file with mode: 0644]
extra/openssh/depends [new file with mode: 0644]
extra/openssh/files/sshd.run [new file with mode: 0644]
extra/openssh/post-install [new file with mode: 0755]
extra/openssh/sources [new file with mode: 0644]
extra/openssh/version [new file with mode: 0644]
extra/openvpn/build [new file with mode: 0755]
extra/openvpn/checksums [new file with mode: 0644]
extra/openvpn/depends [new file with mode: 0644]
extra/openvpn/sources [new file with mode: 0644]
extra/openvpn/version [new file with mode: 0644]
extra/opus/build [new file with mode: 0755]
extra/opus/checksums [new file with mode: 0644]
extra/opus/sources [new file with mode: 0644]
extra/opus/version [new file with mode: 0644]
extra/pandoc/build [new file with mode: 0755]
extra/pandoc/checksums [new file with mode: 0644]
extra/pandoc/sources [new file with mode: 0644]
extra/pandoc/version [new file with mode: 0644]
extra/pango/build [new file with mode: 0755]
extra/pango/checksums [new file with mode: 0644]
extra/pango/depends [new file with mode: 0644]
extra/pango/sources [new file with mode: 0644]
extra/pango/version [new file with mode: 0644]
extra/pcre/build [new file with mode: 0755]
extra/pcre/checksums [new file with mode: 0644]
extra/pcre/sources [new file with mode: 0644]
extra/pcre/version [new file with mode: 0644]
extra/pkcs11-helper/build [new file with mode: 0755]
extra/pkcs11-helper/checksums [new file with mode: 0644]
extra/pkcs11-helper/depends [new file with mode: 0644]
extra/pkcs11-helper/sources [new file with mode: 0644]
extra/pkcs11-helper/version [new file with mode: 0644]
extra/poppler/build [new file with mode: 0755]
extra/poppler/checksums [new file with mode: 0644]
extra/poppler/depends [new file with mode: 0644]
extra/poppler/sources [new file with mode: 0644]
extra/poppler/version [new file with mode: 0644]
extra/qt5/build [new file with mode: 0755]
extra/qt5/checksums [new file with mode: 0644]
extra/qt5/depends [new file with mode: 0644]
extra/qt5/files/qt.conf [new file with mode: 0644]
extra/qt5/patches/clang-socklen-match-gcc.patch [new file with mode: 0644]
extra/qt5/patches/libressl.patch [new file with mode: 0644]
extra/qt5/sources [new file with mode: 0644]
extra/qt5/version [new file with mode: 0644]
extra/ruby/build [new file with mode: 0755]
extra/ruby/checksums [new file with mode: 0644]
extra/ruby/depends [new file with mode: 0644]
extra/ruby/sources [new file with mode: 0644]
extra/ruby/version [new file with mode: 0644]
extra/scdoc/build [new file with mode: 0755]
extra/scdoc/checksums [new file with mode: 0644]
extra/scdoc/sources [new file with mode: 0644]
extra/scdoc/version [new file with mode: 0644]
extra/sfeed/build [new file with mode: 0755]
extra/sfeed/checksums [new file with mode: 0644]
extra/sfeed/depends [new file with mode: 0644]
extra/sfeed/sources [new file with mode: 0644]
extra/sfeed/version [new file with mode: 0644]
extra/sfeed_curses/build [new file with mode: 0755]
extra/sfeed_curses/checksums [new file with mode: 0644]
extra/sfeed_curses/depends [new file with mode: 0644]
extra/sfeed_curses/sources [new file with mode: 0644]
extra/sfeed_curses/version [new file with mode: 0644]
extra/shellcheck-bin/build [new file with mode: 0755]
extra/shellcheck-bin/checksums [new file with mode: 0644]
extra/shellcheck-bin/sources [new file with mode: 0644]
extra/shellcheck-bin/version [new file with mode: 0644]
extra/skeous-gtk-theme/build [new file with mode: 0755]
extra/skeous-gtk-theme/checksums [new file with mode: 0644]
extra/skeous-gtk-theme/sources [new file with mode: 0644]
extra/skeous-gtk-theme/version [new file with mode: 0644]
extra/st/build [new file with mode: 0755]
extra/st/checksums [new file with mode: 0644]
extra/st/depends [new file with mode: 0644]
extra/st/sources [new file with mode: 0644]
extra/st/version [new file with mode: 0644]
extra/syncthing/version
extra/testdisk/sources
extra/tiff/build [new file with mode: 0755]
extra/tiff/checksums [new file with mode: 0644]
extra/tiff/depends [new file with mode: 0644]
extra/tiff/sources [new file with mode: 0644]
extra/tiff/version [new file with mode: 0644]
extra/tlp/version
extra/vis/build [new file with mode: 0755]
extra/vis/checksums [new file with mode: 0644]
extra/vis/depends [new file with mode: 0644]
extra/vis/patches/soft-wrap.patch [new file with mode: 0644]
extra/vis/sources [new file with mode: 0644]
extra/vis/version [new file with mode: 0644]
extra/webkitgtk/build [new file with mode: 0755]
extra/webkitgtk/checksums [new file with mode: 0644]
extra/webkitgtk/depends [new file with mode: 0644]
extra/webkitgtk/sources [new file with mode: 0644]
extra/webkitgtk/version [new file with mode: 0644]
extra/wpa_supplicant/build [new file with mode: 0755]
extra/wpa_supplicant/checksums [new file with mode: 0644]
extra/wpa_supplicant/depends [new file with mode: 0644]
extra/wpa_supplicant/files/.config [new file with mode: 0644]
extra/wpa_supplicant/post-install [new file with mode: 0755]
extra/wpa_supplicant/sources [new file with mode: 0644]
extra/wpa_supplicant/version [new file with mode: 0644]
extra/x264/build [new file with mode: 0755]
extra/x264/checksums [new file with mode: 0644]
extra/x264/depends [new file with mode: 0644]
extra/x264/patches/x264-no-bash.patch [new file with mode: 0644]
extra/x264/sources [new file with mode: 0644]
extra/x264/version [new file with mode: 0644]
extra/x265/build [new file with mode: 0755]
extra/x265/checksums [new file with mode: 0644]
extra/x265/depends [new file with mode: 0644]
extra/x265/sources [new file with mode: 0644]
extra/x265/version [new file with mode: 0644]
extra/xapian-core/version
extra/xvile/build [new file with mode: 0755]
extra/xvile/checksums [new file with mode: 0644]
extra/xvile/depends [new file with mode: 0644]
extra/xvile/sources [new file with mode: 0644]
extra/xvile/version [new file with mode: 0644]
extra/youtube-dl/build [new file with mode: 0755]
extra/youtube-dl/checksums [new file with mode: 0644]
extra/youtube-dl/depends [new file with mode: 0644]
extra/youtube-dl/sources [new file with mode: 0644]
extra/youtube-dl/version [new file with mode: 0644]
extra/zathura-pdf-poppler/build [new file with mode: 0755]
extra/zathura-pdf-poppler/checksums [new file with mode: 0644]
extra/zathura-pdf-poppler/depends [new file with mode: 0644]
extra/zathura-pdf-poppler/sources [new file with mode: 0644]
extra/zathura-pdf-poppler/version [new file with mode: 0644]
extra/zathura/build [new file with mode: 0755]
extra/zathura/checksums [new file with mode: 0644]
extra/zathura/depends [new file with mode: 0644]
extra/zathura/files/zathura.1 [new file with mode: 0644]
extra/zathura/files/zathurarc.5 [new file with mode: 0644]
extra/zathura/patches/remove_gettext.patch [new file with mode: 0644]
extra/zathura/sources [new file with mode: 0644]
extra/zathura/version [new file with mode: 0644]
extra/zeromq/build
extra/zeromq/depends [deleted file]
extra/zeromq/sources
extra/zzz/build [new file with mode: 0755]
extra/zzz/checksums [new file with mode: 0644]
extra/zzz/files/zzz [new file with mode: 0755]
extra/zzz/files/zzz.8 [new file with mode: 0644]
extra/zzz/sources [new file with mode: 0644]
extra/zzz/version [new file with mode: 0644]
wayland/foot/build [deleted file]
wayland/foot/checksums [deleted file]
wayland/foot/depends [deleted file]
wayland/foot/sources [deleted file]
wayland/foot/version [deleted file]
wayland/hikari/build [deleted file]
wayland/hikari/checksums [deleted file]
wayland/hikari/depends [deleted file]
wayland/hikari/patches/no-locker.patch [deleted file]
wayland/hikari/sources [deleted file]
wayland/hikari/version [deleted file]
wayland/inaban/build [deleted file]
wayland/inaban/depends [deleted file]
wayland/inaban/sources [deleted file]
wayland/inaban/version [deleted file]
wayland/vivarium/build [deleted file]
wayland/vivarium/checksums [deleted file]
wayland/vivarium/depends [deleted file]
wayland/vivarium/sources [deleted file]
wayland/vivarium/version [deleted file]
wayland/wayland-protocols/build [deleted file]
wayland/wayland-protocols/checksums [deleted file]
wayland/wayland-protocols/depends [deleted file]
wayland/wayland-protocols/sources [deleted file]
wayland/wayland-protocols/version [deleted file]
wayland/wayland/build [deleted file]
wayland/wayland/checksums [deleted file]
wayland/wayland/depends [deleted file]
wayland/wayland/sources [deleted file]
wayland/wayland/version [deleted file]
wayland/wlroots/build [deleted file]
wayland/wlroots/checksums [deleted file]
wayland/wlroots/depends [deleted file]
wayland/wlroots/sources [deleted file]
wayland/wlroots/version [deleted file]
xorg/brightnessctl/depends [deleted file]
xorg/brownout/build [new file with mode: 0755]
xorg/brownout/checksums [new file with mode: 0644]
xorg/brownout/depends [new file with mode: 0644]
xorg/brownout/sources [new file with mode: 0644]
xorg/brownout/version [new file with mode: 0644]
xorg/libICE/build [new file with mode: 0755]
xorg/libICE/checksums [new file with mode: 0644]
xorg/libICE/depends [new file with mode: 0644]
xorg/libICE/sources [new file with mode: 0644]
xorg/libICE/version [new file with mode: 0644]
xorg/libSM/build [new file with mode: 0755]
xorg/libSM/checksums [new file with mode: 0644]
xorg/libSM/depends [new file with mode: 0644]
xorg/libSM/sources [new file with mode: 0644]
xorg/libSM/version [new file with mode: 0644]
xorg/libXcomposite/version
xorg/libXcursor/version
xorg/libXdamage/version
xorg/libXext/version
xorg/libXrender/version
xorg/libfontenc/build [new file with mode: 0755]
xorg/libfontenc/checksums [new file with mode: 0644]
xorg/libfontenc/depends [new file with mode: 0644]
xorg/libfontenc/sources [new file with mode: 0644]
xorg/libfontenc/version [new file with mode: 0644]
xorg/libpciaccess/build [new file with mode: 0755]
xorg/libpciaccess/checksums [new file with mode: 0644]
xorg/libpciaccess/sources [new file with mode: 0644]
xorg/libpciaccess/version [new file with mode: 0644]
xorg/libxcb/build [new file with mode: 0755]
xorg/libxcb/checksums [new file with mode: 0644]
xorg/libxcb/depends [new file with mode: 0644]
xorg/libxcb/sources [new file with mode: 0644]
xorg/libxcb/version [new file with mode: 0644]
xorg/libxkbcommon/depends
xorg/libxkbcommon/version
xorg/libxkbfile/build [new file with mode: 0755]
xorg/libxkbfile/checksums [new file with mode: 0644]
xorg/libxkbfile/depends [new file with mode: 0644]
xorg/libxkbfile/sources [new file with mode: 0644]
xorg/libxkbfile/version [new file with mode: 0644]
xorg/libxshmfence/build [new file with mode: 0755]
xorg/libxshmfence/checksums [new file with mode: 0644]
xorg/libxshmfence/depends [new file with mode: 0644]
xorg/libxshmfence/sources [new file with mode: 0644]
xorg/libxshmfence/version [new file with mode: 0644]
xorg/pixman/build [new file with mode: 0755]
xorg/pixman/checksums [new file with mode: 0644]
xorg/pixman/sources [new file with mode: 0644]
xorg/pixman/version [new file with mode: 0644]
xorg/redshift/build [deleted file]
xorg/redshift/checksums [deleted file]
xorg/redshift/depends [deleted file]
xorg/redshift/sources [deleted file]
xorg/redshift/version [deleted file]
xorg/spectrwm/build
xorg/spectrwm/post-install
xorg/sx/build [new file with mode: 0755]
xorg/sx/checksums [new file with mode: 0644]
xorg/sx/depends [new file with mode: 0644]
xorg/sx/sources [new file with mode: 0644]
xorg/sx/version [new file with mode: 0644]
xorg/xcape/version
xorg/xcb-util/build [new file with mode: 0755]
xorg/xcb-util/checksums [new file with mode: 0644]
xorg/xcb-util/depends [new file with mode: 0644]
xorg/xcb-util/sources [new file with mode: 0644]
xorg/xcb-util/version [new file with mode: 0644]
xorg/xf86-input-libinput/build [new file with mode: 0755]
xorg/xf86-input-libinput/checksums [new file with mode: 0644]
xorg/xf86-input-libinput/depends [new file with mode: 0644]
xorg/xf86-input-libinput/sources [new file with mode: 0644]
xorg/xf86-input-libinput/version [new file with mode: 0644]
xorg/xorg-fonts-misc/sources
xorg/xorg-server/post-install
xorg/xorg-util-macros/depends [deleted file]
xorg/xorgproto/build [new file with mode: 0755]
xorg/xorgproto/checksums [new file with mode: 0644]
xorg/xorgproto/sources [new file with mode: 0644]
xorg/xorgproto/version [new file with mode: 0644]
xorg/xsel/version
xorg/xtrans/build [new file with mode: 0755]
xorg/xtrans/checksums [new file with mode: 0644]
xorg/xtrans/depends [new file with mode: 0644]
xorg/xtrans/sources [new file with mode: 0644]
xorg/xtrans/version [new file with mode: 0644]

diff --git a/LICENSE b/LICENSE
index 5c98fa39c77ef0226eab2a179890bead86e9bc1e..e2ac1e97244b4308ac946d3dbec993f6282e1664 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,7 @@
-Armaan's KISS repo
+MIT License
+
 Copyright Â© 2021 Armaan Bhojwani <me@armaanb.net>
+Copyright Â© 2021 KISS Linux contributors
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the "Software"),
diff --git a/README b/README
index 9581fee9e6b8fe17802ae4cdd5400394ad36b7ae..a67e42bff8d527524b7820f7245ba0f17875c94f 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1 @@
-My KISS Linux (https://k1sslinux.org) repo.
-
-These are personal builds, and may be unsuitable for other
-systems. Using "kiss fork" is reccomended. Some needed dependencies
-are in midfavila's repo (https://git.sdf.org/midfavila/kiss-mfavila).
-
-MIT License Armaan Bhojwani 2021.
+asd's central repository.
diff --git a/core/asd/build b/core/asd/build
new file mode 100755 (executable)
index 0000000..cb38005
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh -e
+
+mkdir -p "$1/usr/bin"
+cp -f asd contrib/* "$1/usr/bin/"
+
diff --git a/core/asd/checksums b/core/asd/checksums
new file mode 100644 (file)
index 0000000..e5f3f4e
--- /dev/null
@@ -0,0 +1 @@
+5c5c061a785351b913b679af6d127fa6579cc23a9599a30deff196aee04f2875
diff --git a/core/asd/depends b/core/asd/depends
new file mode 100644 (file)
index 0000000..41612c4
--- /dev/null
@@ -0,0 +1,2 @@
+curl
+git
diff --git a/core/asd/sources b/core/asd/sources
new file mode 100644 (file)
index 0000000..fd54f8a
--- /dev/null
@@ -0,0 +1 @@
+https://git.sr.ht/~armaan/asd/archive/5.4.11.tar.gz
diff --git a/core/asd/version b/core/asd/version
new file mode 100644 (file)
index 0000000..84efc7e
--- /dev/null
@@ -0,0 +1 @@
+5.4.2 1
index 1424c97dfd390bb99494794b08e00cabfddd13e2..795b37b86da9b46fd21648fb4269f5c8da4f658a 100755 (executable)
@@ -7,5 +7,4 @@ cp -R lib "$1/usr/lib"
 
 for bin in kpow kall; do
     "${CC:-cc}" -o "$1/usr/bin/$bin" "bin/$bin.c" $CFLAGS -static
-    install -Dm644 "bin/$bin.c" "$1/usr/share/doc/kiss/init/$bin.c"
 done
index 3eb46cd2ed718c0c1861e27b33984952c17d3188..3f1f6f7485a5f9e92046ad2f60289ef55be80f0e 100644 (file)
@@ -1 +1 @@
-7b06888c616c397fa2d7b4912b6782c5f93ac48ce42719757fc42d82d20358af
+2b6e841a0f3c4cc28ff26c1f7b2850dd86e76e35b2ba4546a86ed081eff72d66
diff --git a/core/baseinit/depends b/core/baseinit/depends
deleted file mode 100644 (file)
index e69de29..0000000
index c0e0582de051218d49b01464dc7b8a54f4469a3e..45fd3d82cb0dd863e13fb049496b2ab9f9bf3ca6 100644 (file)
@@ -1 +1 @@
-https://git.sr.ht/~armaan/init/archive/1.1.0.tar.gz
+https://git.sr.ht/~armaan/asd-init/archive/1.1.1.tar.gz
index 7281bb52c4e628300ac10328dc15f3133f3b4d17..e343e3f87b783b9cffe8e4b8fb5d8215320412b8 100644 (file)
@@ -1 +1 @@
-1.1.0 1
+1.1.1 1
diff --git a/core/baselayout/build b/core/baselayout/build
new file mode 100755 (executable)
index 0000000..b2de841
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh -e
+
+# Setup base directories.
+for d in boot dev etc home mnt usr var opt run; do
+    install -dm 755 "$1/$d"
+done
+
+install -dm 555  "$1/proc"
+install -dm 555  "$1/sys"
+install -dm 0750 "$1/root"
+install -dm 1777 "$1/tmp"
+
+# Setup /usr hierarchy.
+for d in bin include lib share src; do
+    install -dm 755 "$1/usr/$d"
+done
+
+# Setup manpages directories.
+for d in 1 2 3 4 5 6 7 8; do
+    install -dm 755 "$1/usr/share/man/man$d"
+done
+
+# Add symlinks.
+ln -s usr/bin "$1/bin"
+ln -s usr/bin "$1/sbin"
+ln -s bin     "$1/usr/sbin"
+ln -s usr/lib "$1/lib"
+ln -s usr/lib "$1/lib64"
+ln -s lib     "$1/usr/lib64"
+
+# Setup /var.
+for d in cache local opt log/old lib/misc empty service; do
+    install -dm 755 "$1/var/$d"
+done
+
+install -dm 1777 "$1/var/tmp"
+
+ln -s ../run      "$1/var/run"
+ln -s ../run/lock "$1/var/lock"
+
+# /etc skeleton files.
+for f in fstab group host.conf hosts issue os-release \
+         passwd profile securetty shells mime.types; do
+    install -m 644 "$f" "$1/etc"
+done
+
+for f in shadow; do
+    install -m 600 "$f" "$1/etc"
+done
+
+ln -s /proc/self/mounts "$1/etc/mtab"
diff --git a/core/baselayout/checksums b/core/baselayout/checksums
new file mode 100644 (file)
index 0000000..aea64bc
--- /dev/null
@@ -0,0 +1,13 @@
+3698c87cc3af757f0302f6d7f034350b1b22a7f25b2f71944292d0fb3de67cd7
+9cd015d9d28db93412cbb33a24f11c1b4a2655a1c45874d12666674e68cf872a
+38c9f4047ba597248ef199a77afbd36f873cfa4aeb70de90bac7f237faf2ecba
+a0fa9cd303cf7f1718f51e5624a671a418946718b790508b8988bccd542c6451
+eda9afe39a3562406f14cb8a5a142922b63e68467d3ba4821c02eaa142d9c4da
+1c2c9fd7e2a7d481d822da22aaccacbde4968a2e2de2490aff21e337ba990777
+0bde8ace73d58897e85c82eb96690bbfd1a4231949d3523d5950ba1910b08892
+8ed55584e0a4a9e8b47f32e9a5c8f7bb2e0def6bf59561318ad48180a9fab98e
+7762b65442cd3e930d9b4ec470e01bc53938bc5ed3d7aedeed47977b78f54843
+752a2a7ed8ca419979b07fd76b4c5cbd77df13b729f6723179239b34ab74bba9
+7e47176cd83b91bdbc3a0b10ae5d5c093b81a9c8c0c1fb714f5438381124c760
+7325a401007ec02596c143788277be46c3e89c98a79cb3f3567d3bef5a9470b0
+8782af2bf81ca1e81b59d1be531565882d4e0c9a89d189706ed358375f67ca04
diff --git a/core/baselayout/files/crypttab b/core/baselayout/files/crypttab
new file mode 100644 (file)
index 0000000..196b0d6
--- /dev/null
@@ -0,0 +1,13 @@
+# crypttab: mappings for encrypted partitions
+#
+# Each mapped device will be created in /dev/mapper, so your /etc/fstab
+# should use the /dev/mapper/<name> paths for encrypted devices.
+#
+# NOTE: Do not list your root (/) partition here.
+
+# <name>       <device>         <password>              <options>
+# home         /dev/hda4        /etc/mypassword1
+# data1        /dev/hda3        /etc/mypassword2
+# data2        /dev/hda5        /etc/cryptfs.key
+# swap         /dev/hdx4        /dev/urandom            swap,cipher=aes-cbc-essiv:sha256,size=256
+# vol          /dev/hdb7        none
diff --git a/core/baselayout/files/fstab b/core/baselayout/files/fstab
new file mode 100644 (file)
index 0000000..14ababb
--- /dev/null
@@ -0,0 +1,6 @@
+# Static information about the filesystems.
+# See fstab(5) for details.
+
+# <file system> <dir> <type> <options> <dump> <pass>
+
+tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
diff --git a/core/baselayout/files/group b/core/baselayout/files/group
new file mode 100644 (file)
index 0000000..0797f31
--- /dev/null
@@ -0,0 +1,27 @@
+root:x:0:
+bin:x:1:
+sys:x:2:
+kmem:x:3:
+wheel:x:4:
+tty:x:5:
+tape:x:6:
+daemon:x:7:
+floppy:x:8:
+disk:x:9:
+lp:x:10:
+dialout:x:11:
+audio:x:12:
+video:x:13:
+utmp:x:14:
+adm:x:15:
+cdrom:x:16:
+optical:x:17:
+mail:x:18:
+storage:x:19:
+scanner:x:20:
+network:x:21:
+kvm:x:24:
+input:x:25:
+nogroup:x:99:
+users:x:100:
+xbuilder:x:101:
diff --git a/core/baselayout/files/host.conf b/core/baselayout/files/host.conf
new file mode 100644 (file)
index 0000000..db09a07
--- /dev/null
@@ -0,0 +1,4 @@
+# /etc/host.conf
+# See host.conf(5) for details.
+
+multi on
diff --git a/core/baselayout/files/hosts b/core/baselayout/files/hosts
new file mode 100644 (file)
index 0000000..e08b437
--- /dev/null
@@ -0,0 +1,10 @@
+
+#
+# /etc/hosts: static lookup table for host names
+#
+
+#<ip-address>          <hostname.domain.org>   <hostname>
+127.0.0.1              localhost.localdomain   localhost
+::1                    localhost.localdomain   localhost ip6-localhost
+
+# EOF
diff --git a/core/baselayout/files/issue b/core/baselayout/files/issue
new file mode 100644 (file)
index 0000000..77cfb4a
--- /dev/null
@@ -0,0 +1 @@
+asd Linux \r (\l)
diff --git a/core/baselayout/files/mime.types b/core/baselayout/files/mime.types
new file mode 100644 (file)
index 0000000..8af0a16
--- /dev/null
@@ -0,0 +1,1918 @@
+application/1d-interleaved-parityfec
+application/3gpp-ims+xml
+application/CSTAdata+xml
+application/EDI-Consent
+application/EDI-X12
+application/EDIFACT
+application/H224
+application/activemessage
+application/andrew-inset                                                                       ez
+application/annodex                                                                                    anx
+application/applefile
+application/applixware                                                                         aw
+application/atom+xml                                                                           atom
+application/atomcat+xml                                                                                atomcat
+application/atomdeleted+xml
+application/atomicmail
+application/atomserv+xml                                                                       atomsrv
+application/atomsvc+xml                                                                                atomsvc
+application/auth-policy+xml
+application/batch-SMTP
+application/batch-smtp
+application/bbolin                                                                                     lin
+application/beep+xml
+application/calendar+xml
+application/cals-1840
+application/ccmp+xml
+application/ccxml+xml                                                                          ccxml
+application/cdmi-capability                                                                    cdmia
+application/cdmi-container                                                                     cdmic
+application/cdmi-domain                                                                                cdmid
+application/cdmi-object                                                                                cdmio
+application/cdmi-queue                                                                         cdmiq
+application/cea-2018+xml
+application/cellml+xml
+application/cfw
+application/cnrp+xml
+application/commonground
+application/conference-info+xml
+application/cpl+xml
+application/csta+xml
+application/cstadata+xml
+application/cu-seeme                                                                           cu
+application/cybercash
+application/davmount+xml                                                                       davmount
+application/dca-rft
+application/dec-dx
+application/dialog-info+xml
+application/dicom                                                                                      dcm
+application/dns
+application/docbook+xml                                                                                dbk
+application/dskpp+xml
+application/dsptype                                                                                    tsp
+application/dssc+der                                                                           dssc
+application/dssc+xml                                                                           xdssc
+application/dvcs
+application/ecmascript                                                                         ecma es
+application/edi-consent
+application/edi-x12
+application/edifact
+application/emma+xml                                                                           emma
+application/epp+xml
+application/epub+zip                                                                           epub
+application/eshop
+application/example
+application/exi                                                                                                exi
+application/fastinfoset
+application/fastsoap
+application/fdt+xml
+application/fits
+application/font-tdpfr                                                                         pfr
+application/framework-attributes+xml
+application/futuresplash                                                                       spl
+application/ghostview
+application/gml+xml                                                                                    gml
+application/gpx+xml                                                                                    gpx
+application/gxf                                                                                                gxf
+application/gzip
+application/h224
+application/held+xml
+application/hta                                                                                                hta
+application/http
+application/hyperstudio                                                                                stk
+application/ibe-key-request+xml
+application/ibe-pkg-reply+xml
+application/ibe-pp-data
+application/iges
+application/im-iscomposing+xml
+application/index
+application/index.cmd
+application/index.obj
+application/index.response
+application/index.vnd
+application/inkml+xml                                                                          ink inkml
+application/iotp
+application/ipfix                                                                                      ipfix
+application/ipp
+application/isup
+application/java-archive                                                                       jar
+application/java-serialized-object                                                     ser
+application/java-vm                                                                                    class
+application/javascript                                                                         js
+application/json                                                                                       json
+application/jsonml+json                                                                                jsonml
+application/kpml-request+xml
+application/kpml-response+xml
+application/link-format
+application/lost+xml                                                                           lostxml
+application/lostsync+xml
+application/m3g                                                                                                m3g
+application/mac-binhex40                                                                       hqx
+application/mac-compactpro                                                                     cpt
+application/macwriteii
+application/mads+xml                                                                           mads
+application/marc                                                                                       mrc
+application/marcxml+xml                                                                                mrcx
+application/mathematica                                                                                ma mb nb nbp
+application/mathml+xml                                                                         mathml
+application/mathml-content+xml
+application/mathml-presentation+xml
+application/mbms-associated-procedure-description+xml
+application/mbms-deregister+xml
+application/mbms-envelope+xml
+application/mbms-msk+xml
+application/mbms-msk-response+xml
+application/mbms-protection-description+xml
+application/mbms-reception-report+xml
+application/mbms-register+xml
+application/mbms-register-response+xml
+application/mbms-user-service-description+xml
+application/mbox                                                                                       mbox
+application/media-policy-dataset+xml
+application/media_control+xml
+application/mediaservercontrol+xml                                                     mscml
+application/metalink+xml                                                                       metalink
+application/metalink4+xml                                                                      meta4
+application/mets+xml                                                                           mets
+application/mikey
+application/mods+xml                                                                           mods
+application/moss-keys
+application/moss-signature
+application/mosskey-data
+application/mosskey-request
+application/mp21                                                                                       m21 mp21
+application/mp4                                                                                                mp4s
+application/mpeg4-generic
+application/mpeg4-iod
+application/mpeg4-iod-xmt
+application/ms-tnef
+application/msaccess                                                                           mdb
+application/msc-ivr+xml
+application/msc-mixer+xml
+application/msword                                                                                     doc dot
+application/mxf                                                                                                mxf
+application/nasdata
+application/news-checkgroups
+application/news-groupinfo
+application/news-message-id
+application/news-transmission
+application/nlsml+xml
+application/nss
+application/ocsp-request
+application/ocsp-response
+application/octet-stream                                                                       bin bpk deploy dist distz dmg dms dump elc iso lha lrf lzh mar pkg so
+application/oda                                                                                                oda
+application/oebps-package+xml                                                          opf
+application/ogg                                                                                                ogg ogx
+application/omdoc+xml                                                                          omdoc
+application/onenote                                                                                    one onepkg onetmp onetoc onetoc2
+application/oxps                                                                                       oxps
+application/parityfec
+application/patch-ops-error+xml                                                                xer
+application/pdf                                                                                                pdf
+application/pgp-encrypted                                                                      asc pgp
+application/pgp-keys                                                                           key
+application/pgp-signature                                                                      asc pgp sig
+application/pics-rules                                                                         prf
+application/pidf+xml
+application/pidf-diff+xml
+application/pkcs10                                                                                     p10
+application/pkcs7-mime                                                                         p7c p7m
+application/pkcs7-signature                                                                    p7s
+application/pkcs8                                                                                      p8
+application/pkix-attr-cert                                                                     ac
+application/pkix-cert                                                                          cer
+application/pkix-crl                                                                           crl
+application/pkix-pkipath                                                                       pkipath
+application/pkixcmp                                                                                    pki
+application/pls+xml                                                                                    pls
+application/poc-settings+xml
+application/postscript                                                                         ai eps eps2 eps3 epsf epsi ps
+application/prs.alvestrand.titrax-sheet
+application/prs.cww                                                                                    cww
+application/prs.nprend
+application/prs.plucker
+application/prs.rdf-xml-crypt
+application/prs.xsf+xml
+application/pskc+xml                                                                           pskcxml
+application/qsig
+application/raptorfec
+application/rar                                                                                                rar
+application/rdf+xml                                                                                    rdf
+application/reginfo+xml                                                                                rif
+application/relax-ng-compact-syntax                                                    rnc
+application/remote-printing
+application/resource-lists+xml                                                         rl
+application/resource-lists-diff+xml                                                    rld
+application/riscos
+application/rlmi+xml
+application/rls-services+xml                                                           rs
+application/rpki-ghostbusters                                                          gbr
+application/rpki-manifest                                                                      mft
+application/rpki-roa                                                                           roa
+application/rpki-updown
+application/rsd+xml                                                                                    rsd
+application/rss+xml                                                                                    rss
+application/rtf                                                                                                rtf
+application/rtx
+application/samlassertion+xml
+application/samlmetadata+xml
+application/sbml+xml                                                                           sbml
+application/scvp-cv-request                                                                    scq
+application/scvp-cv-response                                                           scs
+application/scvp-vp-request                                                                    spq
+application/scvp-vp-response                                                           spp
+application/sdp                                                                                                sdp
+application/sep+xml
+application/set-payment
+application/set-payment-initiation                                                     setpay
+application/set-registration
+application/set-registration-initiation                                                setreg
+application/sgml
+application/sgml-open-catalog
+application/shf+xml                                                                                    shf
+application/sieve
+application/simple-filter+xml
+application/simple-message-summary
+application/simpleSymbolContainer
+application/simplesymbolcontainer
+application/sla                                                                                                stl
+application/slate
+application/smil                                                                                       smi smil
+application/smil+xml                                                                           smi smil
+application/smpte336m
+application/soap+fastinfoset
+application/soap+xml
+application/sparql-query                                                                       rq
+application/sparql-results+xml                                                         srx
+application/spirits-event+xml
+application/srgs                                                                                       gram
+application/srgs+xml                                                                           grxml
+application/sru+xml                                                                                    sru
+application/ssdl+xml                                                                           ssdl
+application/ssml+xml                                                                           ssml
+application/tamp-apex-update
+application/tamp-apex-update-confirm
+application/tamp-community-update
+application/tamp-community-update-confirm
+application/tamp-error
+application/tamp-sequence-adjust
+application/tamp-sequence-adjust-confirm
+application/tamp-status-query
+application/tamp-status-response
+application/tamp-update
+application/tamp-update-confirm
+application/tei+xml                                                                                    tei teicorpus
+application/thraud+xml                                                                         tfi
+application/timestamp-query
+application/timestamp-reply
+application/timestamped-data                                                           tsd
+application/tve-trigger
+application/ulpfec
+application/vcard+xml
+application/vemmi
+application/vividence.scriptfile
+application/vnd.3M.Post-it-Notes
+application/vnd.3gpp.bsf+xml
+application/vnd.3gpp.pic-bw-large                                                      plb
+application/vnd.3gpp.pic-bw-small                                                      psb
+application/vnd.3gpp.pic-bw-var                                                                pvb
+application/vnd.3gpp.sms
+application/vnd.3gpp2.bcmcsinfo+xml
+application/vnd.3gpp2.sms
+application/vnd.3gpp2.tcap                                                                     tcap
+application/vnd.3m.post-it-notes                                                       pwn
+application/vnd.FloGraphIt
+application/vnd.HandHeld-Entertainment+xml
+application/vnd.Kinar
+application/vnd.MFER
+application/vnd.Mobius.DAF
+application/vnd.Mobius.DIS
+application/vnd.Mobius.MBK
+application/vnd.Mobius.MQY
+application/vnd.Mobius.MSL
+application/vnd.Mobius.PLC
+application/vnd.Mobius.TXF
+application/vnd.Quark.QuarkXPress
+application/vnd.RenLearn.rlprint
+application/vnd.SimTech-MindMapper
+application/vnd.accpac.simply.aso                                                      aso
+application/vnd.accpac.simply.imp                                                      imp
+application/vnd.acucobol                                                                       acu
+application/vnd.acucorp                                                                                acutc atc
+application/vnd.adobe.air-application-installer-package+zip                                                                                    air
+application/vnd.adobe.formscentral.fcdt                                                fcdt
+application/vnd.adobe.fxp                                                                      fxp fxpl
+application/vnd.adobe.partial-upload
+application/vnd.adobe.xdp+xml                                                          xdp
+application/vnd.adobe.xfdf                                                                     xfdf
+application/vnd.aether.imp
+application/vnd.ah-barcode
+application/vnd.ahead.space                                                                    ahead
+application/vnd.airzip.filesecure.azf                                          azf
+application/vnd.airzip.filesecure.azs                                          azs
+application/vnd.amazon.ebook                                                           azw
+application/vnd.americandynamics.acc                                           acc
+application/vnd.amiga.ami                                                                      ami
+application/vnd.amundsen.maze+xml
+application/vnd.android.package-archive                                                apk
+application/vnd.anser-web-certificate-issue-initiation         cii
+application/vnd.anser-web-funds-transfer-initiation                    fti
+application/vnd.antix.game-component                                           atx
+application/vnd.apple.installer+xml                                                    mpkg
+application/vnd.apple.mpegurl                                                          m3u8
+application/vnd.arastra.swi                                                                    swi
+application/vnd.aristanetworks.swi                                                     swi
+application/vnd.astraea-software.iota                                          iota
+application/vnd.audiograph                                                                     aep
+application/vnd.autopackage
+application/vnd.avistar+xml
+application/vnd.balsamiq.bmml+xml
+application/vnd.blueice.multipass                                                      mpm
+application/vnd.bluetooth.ep.oob
+application/vnd.bmi                                                                                    bmi
+application/vnd.businessobjects                                                                rep
+application/vnd.cab-jscript
+application/vnd.canon-cpdl
+application/vnd.canon-lips
+application/vnd.cendio.thinlinc.clientconf
+application/vnd.century-systems.tcp_stream
+application/vnd.chemdraw+xml                                                           cdxml
+application/vnd.chipnuts.karaoke-mmd                                           mmd
+application/vnd.cinderella                                                                     cdy
+application/vnd.cirpack.isdn-ext
+application/vnd.claymore                                                                       cla
+application/vnd.cloanto.rp9                                                                    rp9
+application/vnd.clonk.c4group                                                          c4d c4f c4g c4p c4u
+application/vnd.cluetrust.cartomobile-config                           c11amc
+application/vnd.cluetrust.cartomobile-config-pkg                       c11amz
+application/vnd.collection+json
+application/vnd.collection.next+json
+application/vnd.commerce-battelle
+application/vnd.commonspace                                                                    csp
+application/vnd.comsocaller
+application/vnd.contact.cmsg                                                           cdbcmsg
+application/vnd.cosmocaller                                                                    cmc
+application/vnd.crick.clicker                                                          clkx
+application/vnd.crick.clicker.keyboard                                         clkk
+application/vnd.crick.clicker.palette                                          clkp
+application/vnd.crick.clicker.template                                         clkt
+application/vnd.crick.clicker.wordbank                                         clkw
+application/vnd.criticaltools.wbs+xml                                          wbs
+application/vnd.ctc-posml                                                                      pml
+application/vnd.ctct.ws+xml
+application/vnd.cups-pdf
+application/vnd.cups-postscript
+application/vnd.cups-ppd                                                                       ppd
+application/vnd.cups-raster
+application/vnd.cups-raw
+application/vnd.curl
+application/vnd.curl.car                                                                       car
+application/vnd.curl.pcurl                                                                     pcurl
+application/vnd.cyan.dean.root+xml
+application/vnd.cybank
+application/vnd.dart                                                                           dart
+application/vnd.data-vision.rdz                                                                rdz
+application/vnd.dece.data                                                                      uvd uvf uvvd uvvf
+application/vnd.dece.ttml+xml                                                          uvt uvvt
+application/vnd.dece.unspecified                                                       uvvx uvx
+application/vnd.dece.zip                                                                       uvvz uvz
+application/vnd.denovo.fcselayout-link                                         fe_launch
+application/vnd.dir-bi.plate-dl-nosuffix
+application/vnd.dm.delegation+xml
+application/vnd.dna                                                                                    dna
+application/vnd.dolby.mlp                                                                      mlp
+application/vnd.dolby.mobile.1
+application/vnd.dolby.mobile.2
+application/vnd.dpgraph                                                                                dpg
+application/vnd.dreamfactory                                                           dfac
+application/vnd.ds-keypoint                                                                    kpxx
+application/vnd.dtg.local
+application/vnd.dtg.local.flash
+application/vnd.dtg.local.html
+application/vnd.dvb.ait                                                                                ait
+application/vnd.dvb.dvbj
+application/vnd.dvb.esgcontainer
+application/vnd.dvb.ipdcdftnotifaccess
+application/vnd.dvb.ipdcesgaccess
+application/vnd.dvb.ipdcesgaccess2
+application/vnd.dvb.ipdcesgpdd
+application/vnd.dvb.ipdcroaming
+application/vnd.dvb.iptv.alfec-base
+application/vnd.dvb.iptv.alfec-enhancement
+application/vnd.dvb.notif-aggregate-root+xml
+application/vnd.dvb.notif-container+xml
+application/vnd.dvb.notif-generic+xml
+application/vnd.dvb.notif-ia-msglist+xml
+application/vnd.dvb.notif-ia-registration-request+xml
+application/vnd.dvb.notif-ia-registration-response+xml
+application/vnd.dvb.notif-init+xml
+application/vnd.dvb.pfr
+application/vnd.dvb.service                                                                    svc
+application/vnd.dxr
+application/vnd.dynageo                                                                                geo
+application/vnd.easykaraoke.cdgdownload
+application/vnd.ecdis-update
+application/vnd.ecowin.chart                                                           mag
+application/vnd.ecowin.filerequest
+application/vnd.ecowin.fileupdate
+application/vnd.ecowin.series
+application/vnd.ecowin.seriesrequest
+application/vnd.ecowin.seriesupdate
+application/vnd.emclient.accessrequest+xml
+application/vnd.enliven                                                                                nml
+application/vnd.eprints.data+xml
+application/vnd.epson.esf                                                                      esf
+application/vnd.epson.msf                                                                      msf
+application/vnd.epson.quickanime                                                       qam
+application/vnd.epson.salt                                                                     slt
+application/vnd.epson.ssf                                                                      ssf
+application/vnd.ericsson.quickcall
+application/vnd.eszigno3+xml                                                           es3 et3
+application/vnd.etsi.aoc+xml
+application/vnd.etsi.cug+xml
+application/vnd.etsi.iptvcommand+xml
+application/vnd.etsi.iptvdiscovery+xml
+application/vnd.etsi.iptvprofile+xml
+application/vnd.etsi.iptvsad-bc+xml
+application/vnd.etsi.iptvsad-cod+xml
+application/vnd.etsi.iptvsad-npvr+xml
+application/vnd.etsi.iptvservice+xml
+application/vnd.etsi.iptvsync+xml
+application/vnd.etsi.iptvueprofile+xml
+application/vnd.etsi.mcid+xml
+application/vnd.etsi.overload-control-policy-dataset+xml
+application/vnd.etsi.sci+xml
+application/vnd.etsi.simservs+xml
+application/vnd.etsi.tsl+xml
+application/vnd.etsi.tsl.der
+application/vnd.eudora.data
+application/vnd.ezpix-album                                                                    ez2
+application/vnd.ezpix-package                                                          ez3
+application/vnd.f-secure.mobile
+application/vnd.fdf                                                                                    fdf
+application/vnd.fdsn.mseed                                                                     mseed
+application/vnd.fdsn.seed                                                                      dataless seed
+application/vnd.ffsns
+application/vnd.fints
+application/vnd.flographit                                                                     gph
+application/vnd.fluxtime.clip                                                          ftc
+application/vnd.font-fontforge-sfd
+application/vnd.framemaker                                                                     book fm frame maker
+application/vnd.frogans.fnc                                                                    fnc
+application/vnd.frogans.ltf                                                                    ltf
+application/vnd.fsc.weblaunch                                                          fsc
+application/vnd.fujitsu.oasys                                                          oas
+application/vnd.fujitsu.oasys2                                                         oa2
+application/vnd.fujitsu.oasys3                                                         oa3
+application/vnd.fujitsu.oasysgp                                                                fg5
+application/vnd.fujitsu.oasysprs                                                       bh2
+application/vnd.fujixerox.ART-EX
+application/vnd.fujixerox.ART4
+application/vnd.fujixerox.HBPL
+application/vnd.fujixerox.art-ex
+application/vnd.fujixerox.art4
+application/vnd.fujixerox.ddd                                                          ddd
+application/vnd.fujixerox.docuworks                                                    xdw
+application/vnd.fujixerox.docuworks.binder                                     xbd
+application/vnd.fujixerox.hbpl
+application/vnd.fut-misnet
+application/vnd.fuzzysheet                                                                     fzs
+application/vnd.genomatix.tuxedo                                                       txd
+application/vnd.geocube+xml
+application/vnd.geogebra.file                                                          ggb
+application/vnd.geogebra.tool                                                          ggt
+application/vnd.geometry-explorer                                                      gex gre
+application/vnd.geonext                                                                                gxt
+application/vnd.geoplan                                                                                g2w
+application/vnd.geospace                                                                       g3w
+application/vnd.globalplatform.card-content-mgt
+application/vnd.globalplatform.card-content-mgt-response
+application/vnd.gmx                                                                                    gmx
+application/vnd.google-earth.kml+xml                                           kml
+application/vnd.google-earth.kmz                                                       kmz
+application/vnd.grafeq                                                                         gqf gqs
+application/vnd.gridmp
+application/vnd.groove-account                                                         gac
+application/vnd.groove-help                                                                    ghf
+application/vnd.groove-identity-message                                                gim
+application/vnd.groove-injector                                                                grv
+application/vnd.groove-tool-message                                                    gtm
+application/vnd.groove-tool-template                                           tpl
+application/vnd.groove-vcard                                                           vcg
+application/vnd.hal+json
+application/vnd.hal+xml                                                                                hal
+application/vnd.handheld-entertainment+xml                                     zmm
+application/vnd.hbci                                                                           hbci
+application/vnd.hcl-bireports
+application/vnd.hhe.lesson-player                                                      les
+application/vnd.hp-HPGL
+application/vnd.hp-PCL
+application/vnd.hp-PCLXL
+application/vnd.hp-hpgl                                                                                hpgl
+application/vnd.hp-hpid                                                                                hpid
+application/vnd.hp-hps                                                                         hps
+application/vnd.hp-jlyt                                                                                jlt
+application/vnd.hp-pcl                                                                         pcl
+application/vnd.hp-pclxl                                                                       pclxl
+application/vnd.httphone
+application/vnd.hydrostatix.sof-data                                           sfd-hdstx
+application/vnd.hzn-3d-crossword                                                       x3d
+application/vnd.ibm.MiniPay
+application/vnd.ibm.afplinedata
+application/vnd.ibm.electronic-media
+application/vnd.ibm.minipay                                                                    mpy
+application/vnd.ibm.modcap                                                                     afp list3820 listafp
+application/vnd.ibm.rights-management                                          irm
+application/vnd.ibm.secure-container                                           sc
+application/vnd.iccprofile                                                                     icc icm
+application/vnd.ieee.1905
+application/vnd.igloader                                                                       igl
+application/vnd.immervision-ivp                                                                ivp
+application/vnd.immervision-ivu                                                                ivu
+application/vnd.informedcontrol.rms+xml
+application/vnd.informix-visionary
+application/vnd.infotech.project
+application/vnd.infotech.project+xml
+application/vnd.innopath.wamp.notification
+application/vnd.insors.igm                                                                     igm
+application/vnd.intercon.formnet                                                       xpw xpx
+application/vnd.intergeo                                                                       i2g
+application/vnd.intertrust.digibox
+application/vnd.intertrust.nncp
+application/vnd.intu.qbo                                                                       qbo
+application/vnd.intu.qfx                                                                       qfx
+application/vnd.iptc.g2.conceptitem+xml
+application/vnd.iptc.g2.knowledgeitem+xml
+application/vnd.iptc.g2.newsitem+xml
+application/vnd.iptc.g2.newsmessage+xml
+application/vnd.iptc.g2.packageitem+xml
+application/vnd.iptc.g2.planningitem+xml
+application/vnd.ipunplugged.rcprofile                                          rcprofile
+application/vnd.irepository.package+xml                                                irp
+application/vnd.is-xpr                                                                         xpr
+application/vnd.isac.fcs                                                                       fcs
+application/vnd.jam                                                                                    jam
+application/vnd.japannet-directory-service
+application/vnd.japannet-jpnstore-wakeup
+application/vnd.japannet-payment-wakeup
+application/vnd.japannet-registration
+application/vnd.japannet-registration-wakeup
+application/vnd.japannet-setstore-wakeup
+application/vnd.japannet-verification
+application/vnd.japannet-verification-wakeup
+application/vnd.jcp.javame.midlet-rms                                          rms
+application/vnd.jisp                                                                           jisp
+application/vnd.joost.joda-archive                                                     joda
+application/vnd.jsk.isdn-ngn
+application/vnd.kahootz                                                                                ktr ktz
+application/vnd.kde.karbon                                                                     karbon
+application/vnd.kde.kchart                                                                     chrt
+application/vnd.kde.kformula                                                           kfo
+application/vnd.kde.kivio                                                                      flw
+application/vnd.kde.kontour                                                                    kon
+application/vnd.kde.kpresenter                                                         kpr kpt
+application/vnd.kde.kspread                                                                    ksp
+application/vnd.kde.kword                                                                      kwd kwt
+application/vnd.kenameaapp                                                                     htke
+application/vnd.kidspiration                                                           kia
+application/vnd.kinar                                                                          kne knp
+application/vnd.koan                                                                           skd skm skp skt
+application/vnd.kodak-descriptor                                                       sse
+application/vnd.las.las+xml                                                                    lasxml
+application/vnd.liberty-request+xml
+application/vnd.llamagraphics.life-balance.desktop                     lbd
+application/vnd.llamagraphics.life-balance.exchange+xml                lbe
+application/vnd.lotus-1-2-3                                                                    123
+application/vnd.lotus-approach                                                         apr
+application/vnd.lotus-freelance                                                                pre
+application/vnd.lotus-notes                                                                    nsf
+application/vnd.lotus-organizer                                                                org
+application/vnd.lotus-screencam                                                                scm
+application/vnd.lotus-wordpro                                                          lwp
+application/vnd.macports.portpkg                                                       portpkg
+application/vnd.marlin.drm.actiontoken+xml
+application/vnd.marlin.drm.conftoken+xml
+application/vnd.marlin.drm.license+xml
+application/vnd.marlin.drm.mdcf
+application/vnd.mcd                                                                                    mcd
+application/vnd.medcalcdata                                                                    mc1
+application/vnd.mediastation.cdkey                                                     cdkey
+application/vnd.meridian-slingshot
+application/vnd.mfer                                                                           mwf
+application/vnd.mfmp                                                                           mfm
+application/vnd.micrografx.flo                                                         flo
+application/vnd.micrografx.igx                                                         igx
+application/vnd.mif                                                                                    mif
+application/vnd.minisoft-hp3000-save
+application/vnd.mitsubishi.misty-guard.trustweb
+application/vnd.mobius.daf                                                                     daf
+application/vnd.mobius.dis                                                                     dis
+application/vnd.mobius.mbk                                                                     mbk
+application/vnd.mobius.mqy                                                                     mqy
+application/vnd.mobius.msl                                                                     msl
+application/vnd.mobius.plc                                                                     plc
+application/vnd.mobius.txf                                                                     txf
+application/vnd.mophun.application                                                     mpn
+application/vnd.mophun.certificate                                                     mpc
+application/vnd.motorola.flexsuite
+application/vnd.motorola.flexsuite.adsi
+application/vnd.motorola.flexsuite.fis
+application/vnd.motorola.flexsuite.gotap
+application/vnd.motorola.flexsuite.kmr
+application/vnd.motorola.flexsuite.ttc
+application/vnd.motorola.flexsuite.wem
+application/vnd.motorola.iprm
+application/vnd.mozilla.xul+xml                                                                xul
+application/vnd.ms-artgalry                                                                    cil
+application/vnd.ms-asf
+application/vnd.ms-cab-compressed                                                      cab
+application/vnd.ms-excel                                                                       xla xlb xlc xlm xls xlt xlw
+application/vnd.ms-excel.addin.macroEnabled.12                         xlam
+application/vnd.ms-excel.addin.macroenabled.12                         xlam
+application/vnd.ms-excel.sheet.binary.macroEnabled.12          xlsb
+application/vnd.ms-excel.sheet.binary.macroenabled.12          xlsb
+application/vnd.ms-excel.sheet.macroEnabled.12                         xlsm
+application/vnd.ms-excel.sheet.macroenabled.12                         xlsm
+application/vnd.ms-excel.template.macroEnabled.12                      xltm
+application/vnd.ms-excel.template.macroenabled.12                      xltm
+application/vnd.ms-fontobject                                                          eot
+application/vnd.ms-htmlhelp                                                                    chm
+application/vnd.ms-ims                                                                         ims
+application/vnd.ms-lrm                                                                         lrm
+application/vnd.ms-office.activeX+xml
+application/vnd.ms-officetheme                                                         thmx
+application/vnd.ms-pki.seccat                                                          cat
+application/vnd.ms-pki.stl                                                                     stl
+application/vnd.ms-playready.initiator+xml
+application/vnd.ms-powerpoint                                                          pot pps ppt
+application/vnd.ms-powerpoint.addin.macroEnabled.12                    ppam
+application/vnd.ms-powerpoint.addin.macroenabled.12                    ppam
+application/vnd.ms-powerpoint.presentation.macroEnabled.12                                                                                     pptm
+application/vnd.ms-powerpoint.presentation.macroenabled.12                                                                                     pptm
+application/vnd.ms-powerpoint.slide.macroEnabled.12                    sldm
+application/vnd.ms-powerpoint.slide.macroenabled.12                    sldm
+application/vnd.ms-powerpoint.slideshow.macroEnabled.12                ppsm
+application/vnd.ms-powerpoint.slideshow.macroenabled.12                ppsm
+application/vnd.ms-powerpoint.template.macroEnabled.12         potm
+application/vnd.ms-powerpoint.template.macroenabled.12         potm
+application/vnd.ms-project                                                                     mpp mpt
+application/vnd.ms-tnef
+application/vnd.ms-wmdrm.lic-chlg-req
+application/vnd.ms-wmdrm.lic-resp
+application/vnd.ms-wmdrm.meter-chlg-req
+application/vnd.ms-wmdrm.meter-resp
+application/vnd.ms-word.document.macroEnabled.12                       docm
+application/vnd.ms-word.document.macroenabled.12                       docm
+application/vnd.ms-word.template.macroEnabled.12                       dotm
+application/vnd.ms-word.template.macroenabled.12                       dotm
+application/vnd.ms-works                                                                       wcm wdb wks wps
+application/vnd.ms-wpl                                                                         wpl
+application/vnd.ms-xpsdocument                                                         xps
+application/vnd.mseq                                                                           mseq
+application/vnd.msign
+application/vnd.multiad.creator
+application/vnd.multiad.creator.cif
+application/vnd.music-niff
+application/vnd.musician                                                                       mus
+application/vnd.muvee.style                                                                    msty
+application/vnd.mynfc                                                                          taglet
+application/vnd.ncd.control
+application/vnd.ncd.reference
+application/vnd.nervana
+application/vnd.netfpx
+application/vnd.neurolanguage.nlu                                                      nlu
+application/vnd.nintendo.nitro.rom
+application/vnd.nitf                                                                           nitf ntf
+application/vnd.noblenet-directory                                                     nnd
+application/vnd.noblenet-sealer                                                                nns
+application/vnd.noblenet-web                                                           nnw
+application/vnd.nokia.catalogs
+application/vnd.nokia.conml+wbxml
+application/vnd.nokia.conml+xml
+application/vnd.nokia.iSDS-radio-presets
+application/vnd.nokia.iptv.config+xml
+application/vnd.nokia.isds-radio-presets
+application/vnd.nokia.landmark+wbxml
+application/vnd.nokia.landmark+xml
+application/vnd.nokia.landmarkcollection+xml
+application/vnd.nokia.n-gage.ac+xml
+application/vnd.nokia.n-gage.data                                                      ngdat
+application/vnd.nokia.n-gage.symbian.install                           n-gage
+application/vnd.nokia.ncd
+application/vnd.nokia.pcd+wbxml
+application/vnd.nokia.pcd+xml
+application/vnd.nokia.radio-preset                                                     rpst
+application/vnd.nokia.radio-presets                                                    rpss
+application/vnd.novadigm.EDM
+application/vnd.novadigm.EDX
+application/vnd.novadigm.EXT
+application/vnd.novadigm.edm                                                           edm
+application/vnd.novadigm.edx                                                           edx
+application/vnd.novadigm.ext                                                           ext
+application/vnd.ntt-local.content-share
+application/vnd.ntt-local.file-transfer
+application/vnd.ntt-local.sip-ta_remote
+application/vnd.ntt-local.sip-ta_tcp_stream
+application/vnd.oasis.opendocument.chart                                       odc
+application/vnd.oasis.opendocument.chart-template                      otc
+application/vnd.oasis.opendocument.database                                    odb
+application/vnd.oasis.opendocument.formula                                     odf
+application/vnd.oasis.opendocument.formula-template                    odft
+application/vnd.oasis.opendocument.graphics                                    odg
+application/vnd.oasis.opendocument.graphics-template           otg
+application/vnd.oasis.opendocument.image                                       odi
+application/vnd.oasis.opendocument.image-template                      oti
+application/vnd.oasis.opendocument.presentation                                odp
+application/vnd.oasis.opendocument.presentation-template                                                                                       otp
+application/vnd.oasis.opendocument.spreadsheet                         ods
+application/vnd.oasis.opendocument.spreadsheet-template                ots
+application/vnd.oasis.opendocument.text                                                odt
+application/vnd.oasis.opendocument.text-master                         odm otm
+application/vnd.oasis.opendocument.text-template                       ott
+application/vnd.oasis.opendocument.text-web                                    oth
+application/vnd.obn
+application/vnd.oftn.l10n+json
+application/vnd.oipf.contentaccessdownload+xml
+application/vnd.oipf.contentaccessstreaming+xml
+application/vnd.oipf.cspg-hexbinary
+application/vnd.oipf.dae.svg+xml
+application/vnd.oipf.dae.xhtml+xml
+application/vnd.oipf.mippvcontrolmessage+xml
+application/vnd.oipf.pae.gem
+application/vnd.oipf.spdiscovery+xml
+application/vnd.oipf.spdlist+xml
+application/vnd.oipf.ueprofile+xml
+application/vnd.oipf.userprofile+xml
+application/vnd.olpc-sugar                                                                     xo
+application/vnd.oma-scws-config
+application/vnd.oma-scws-http-request
+application/vnd.oma-scws-http-response
+application/vnd.oma.bcast.associated-procedure-parameter+xml
+application/vnd.oma.bcast.drm-trigger+xml
+application/vnd.oma.bcast.imd+xml
+application/vnd.oma.bcast.ltkm
+application/vnd.oma.bcast.notification+xml
+application/vnd.oma.bcast.provisioningtrigger
+application/vnd.oma.bcast.sgboot
+application/vnd.oma.bcast.sgdd+xml
+application/vnd.oma.bcast.sgdu
+application/vnd.oma.bcast.simple-symbol-container
+application/vnd.oma.bcast.smartcard-trigger+xml
+application/vnd.oma.bcast.sprov+xml
+application/vnd.oma.bcast.stkm
+application/vnd.oma.cab-address-book+xml
+application/vnd.oma.cab-pcc+xml
+application/vnd.oma.cab-subs-invite+xml
+application/vnd.oma.cab-user-prefs+xml
+application/vnd.oma.dcd
+application/vnd.oma.dcdc
+application/vnd.oma.dd2+xml                                                                    dd2
+application/vnd.oma.drm.risd+xml
+application/vnd.oma.group-usage-list+xml
+application/vnd.oma.pal+xml
+application/vnd.oma.poc.detailed-progress-report+xml
+application/vnd.oma.poc.final-report+xml
+application/vnd.oma.poc.groups+xml
+application/vnd.oma.poc.invocation-descriptor+xml
+application/vnd.oma.poc.optimized-progress-report+xml
+application/vnd.oma.push
+application/vnd.oma.scidm.messages+xml
+application/vnd.oma.xcap-directory+xml
+application/vnd.omads-email+xml
+application/vnd.omads-file+xml
+application/vnd.omads-folder+xml
+application/vnd.omaloc-supl-init
+application/vnd.openofficeorg.extension                                                oxt
+application/vnd.openxmlformats-officedocument.custom-properties+xml
+application/vnd.openxmlformats-officedocument.customXmlProperties+xml
+application/vnd.openxmlformats-officedocument.drawing+xml
+application/vnd.openxmlformats-officedocument.drawingml.chart+xml
+application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml
+application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml
+application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml
+application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml
+application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml
+application/vnd.openxmlformats-officedocument.extended-properties+xml
+application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml
+application/vnd.openxmlformats-officedocument.presentationml.comments+xml
+application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml
+application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml
+application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml
+application/vnd.openxmlformats-officedocument.presentationml.presProps+xml
+application/vnd.openxmlformats-officedocument.presentationml.presentation                                                      pptx
+application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml
+application/vnd.openxmlformats-officedocument.presentationml.slide                                                                     sldx
+application/vnd.openxmlformats-officedocument.presentationml.slide+xml
+application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml
+application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml
+application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml
+application/vnd.openxmlformats-officedocument.presentationml.slideshow                                                         ppsx
+application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml
+application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml
+application/vnd.openxmlformats-officedocument.presentationml.tags+xml
+application/vnd.openxmlformats-officedocument.presentationml.template                                                          potx
+application/vnd.openxmlformats-officedocument.presentationml.template.main+xml
+application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet                                                                      xlsx
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.template                                                           xltx
+application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml
+application/vnd.openxmlformats-officedocument.theme+xml
+application/vnd.openxmlformats-officedocument.themeOverride+xml
+application/vnd.openxmlformats-officedocument.vmlDrawing
+application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.document                                                                docx
+application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.template                                                                dotx
+application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml
+application/vnd.openxmlformats-package.core-properties+xml
+application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml
+application/vnd.openxmlformats-package.relationships+xml
+application/vnd.orange.indata
+application/vnd.osa.netdeploy
+application/vnd.osgeo.mapguide.package                                         mgp
+application/vnd.osgi.bundle
+application/vnd.osgi.dp                                                                                dp
+application/vnd.osgi.subsystem                                                         esa
+application/vnd.otps.ct-kip+xml
+application/vnd.palm                                                                           oprc pdb pqa
+application/vnd.paos.xml
+application/vnd.pawaafile                                                                      paw
+application/vnd.pg.format                                                                      str
+application/vnd.pg.osasli                                                                      ei6
+application/vnd.piaccess.application-licence
+application/vnd.picsel                                                                         efif
+application/vnd.pmi.widget                                                                     wg
+application/vnd.poc.group-advertisement+xml
+application/vnd.pocketlearn                                                                    plf
+application/vnd.powerbuilder6                                                          pbd
+application/vnd.powerbuilder6-s
+application/vnd.powerbuilder7
+application/vnd.powerbuilder7-s
+application/vnd.powerbuilder75
+application/vnd.powerbuilder75-s
+application/vnd.preminet
+application/vnd.previewsystems.box                                                     box
+application/vnd.proteus.magazine                                                       mgz
+application/vnd.publishare-delta-tree                                          qps
+application/vnd.pvi.ptid1                                                                      ptid
+application/vnd.pwg-multiplexed
+application/vnd.pwg-xhtml-print+xml
+application/vnd.qualcomm.brew-app-res
+application/vnd.quark.quarkxpress                                                      qwd qwt qxb qxd qxl qxt
+application/vnd.quobject-quoxdocument
+application/vnd.radisys.moml+xml
+application/vnd.radisys.msml+xml
+application/vnd.radisys.msml-audit+xml
+application/vnd.radisys.msml-audit-conf+xml
+application/vnd.radisys.msml-audit-conn+xml
+application/vnd.radisys.msml-audit-dialog+xml
+application/vnd.radisys.msml-audit-stream+xml
+application/vnd.radisys.msml-conf+xml
+application/vnd.radisys.msml-dialog+xml
+application/vnd.radisys.msml-dialog-base+xml
+application/vnd.radisys.msml-dialog-fax-detect+xml
+application/vnd.radisys.msml-dialog-fax-sendrecv+xml
+application/vnd.radisys.msml-dialog-group+xml
+application/vnd.radisys.msml-dialog-speech+xml
+application/vnd.radisys.msml-dialog-transform+xml
+application/vnd.rainstor.data
+application/vnd.rapid
+application/vnd.realvnc.bed                                                                    bed
+application/vnd.recordare.musicxml                                                     mxl
+application/vnd.recordare.musicxml+xml                                         musicxml
+application/vnd.renlearn.rlprint
+application/vnd.rig.cryptonote                                                         cryptonote
+application/vnd.rim.cod                                                                                cod
+application/vnd.rn-realmedia                                                           rm
+application/vnd.rn-realmedia-vbr                                                       rmvb
+application/vnd.route66.link66+xml                                                     link66
+application/vnd.rs-274x
+application/vnd.ruckus.download
+application/vnd.s3sms
+application/vnd.sailingtracker.track                                           st
+application/vnd.sbm.cid
+application/vnd.sbm.mid2
+application/vnd.scribus
+application/vnd.sealed.3df
+application/vnd.sealed.csf
+application/vnd.sealed.doc
+application/vnd.sealed.eml
+application/vnd.sealed.mht
+application/vnd.sealed.net
+application/vnd.sealed.ppt
+application/vnd.sealed.tiff
+application/vnd.sealed.xls
+application/vnd.sealedmedia.softseal.html
+application/vnd.sealedmedia.softseal.pdf
+application/vnd.seemail                                                                                see
+application/vnd.sema                                                                           sema
+application/vnd.semd                                                                           semd
+application/vnd.semf                                                                           semf
+application/vnd.shana.informed.formdata                                                ifm
+application/vnd.shana.informed.formtemplate                                    itp
+application/vnd.shana.informed.interchange                                     iif
+application/vnd.shana.informed.package                                         ipk
+application/vnd.simtech-mindmapper                                                     twd twds
+application/vnd.smaf                                                                           mmf
+application/vnd.smart.notebook
+application/vnd.smart.teacher                                                          teacher
+application/vnd.software602.filler.form+xml
+application/vnd.software602.filler.form-xml-zip
+application/vnd.solent.sdkm+xml                                                                sdkd sdkm
+application/vnd.spotfire.dxp                                                           dxp
+application/vnd.spotfire.sfs                                                           sfs
+application/vnd.sss-cod
+application/vnd.sss-dtf
+application/vnd.sss-ntf
+application/vnd.stardivision.calc                                                      sdc
+application/vnd.stardivision.chart                                                     sds
+application/vnd.stardivision.draw                                                      sda
+application/vnd.stardivision.impress                                           sdd sdp
+application/vnd.stardivision.math                                                      sdf smf
+application/vnd.stardivision.writer                                                    sdw vor
+application/vnd.stardivision.writer-global                                     sgl
+application/vnd.stepmania.package                                                      smzip
+application/vnd.stepmania.stepchart                                                    sm
+application/vnd.street-stream
+application/vnd.sun.wadl+xml
+application/vnd.sun.xml.calc                                                           sxc
+application/vnd.sun.xml.calc.template                                          stc
+application/vnd.sun.xml.draw                                                           sxd
+application/vnd.sun.xml.draw.template                                          std
+application/vnd.sun.xml.impress                                                                sxi
+application/vnd.sun.xml.impress.template                                       sti
+application/vnd.sun.xml.math                                                           sxm
+application/vnd.sun.xml.writer                                                         sxw
+application/vnd.sun.xml.writer.global                                          sxg
+application/vnd.sun.xml.writer.template                                                stw
+application/vnd.sus-calendar                                                           sus susp
+application/vnd.svd                                                                                    svd
+application/vnd.swiftview-ics
+application/vnd.symbian.install                                                                sis sisx
+application/vnd.syncml+xml                                                                     xsm
+application/vnd.syncml.dm+wbxml                                                                bdm
+application/vnd.syncml.dm+xml                                                          xdm
+application/vnd.syncml.dm.notification
+application/vnd.syncml.dmddf+wbxml
+application/vnd.syncml.dmddf+xml
+application/vnd.syncml.dmtnds+wbxml
+application/vnd.syncml.dmtnds+xml
+application/vnd.syncml.ds.notification
+application/vnd.tao.intent-module-archive                                      tao
+application/vnd.tcpdump.pcap                                                           cap dmp pcap
+application/vnd.tmobile-livetv                                                         tmo
+application/vnd.trid.tpt                                                                       tpt
+application/vnd.triscape.mxs                                                           mxs
+application/vnd.trueapp                                                                                tra
+application/vnd.truedoc
+application/vnd.tve-trigger
+application/vnd.ubisoft.webplayer
+application/vnd.ufdl                                                                           ufd ufdl
+application/vnd.uiq.theme                                                                      utz
+application/vnd.umajin                                                                         umj
+application/vnd.unity                                                                          unityweb
+application/vnd.uoml+xml                                                                       uoml
+application/vnd.uplanet.alert
+application/vnd.uplanet.alert-wbxml
+application/vnd.uplanet.bearer-choice
+application/vnd.uplanet.bearer-choice-wbxml
+application/vnd.uplanet.cacheop
+application/vnd.uplanet.cacheop-wbxml
+application/vnd.uplanet.channel
+application/vnd.uplanet.channel-wbxml
+application/vnd.uplanet.list
+application/vnd.uplanet.list-wbxml
+application/vnd.uplanet.listcmd
+application/vnd.uplanet.listcmd-wbxml
+application/vnd.uplanet.signal
+application/vnd.vcx                                                                                    vcx
+application/vnd.vd-study
+application/vnd.vectorworks
+application/vnd.verimatrix.vcas
+application/vnd.vidsoft.vidconference
+application/vnd.visio                                                                          vsd vss vst vsw
+application/vnd.visionary                                                                      vis
+application/vnd.vividence.scriptfile
+application/vnd.vsf                                                                                    vsf
+application/vnd.wap.sic
+application/vnd.wap.slc
+application/vnd.wap.wbxml                                                                      wbxml
+application/vnd.wap.wmlc                                                                       wmlc
+application/vnd.wap.wmlscriptc                                                         wmlsc
+application/vnd.webturbo                                                                       wtb
+application/vnd.wfa.wsc
+application/vnd.wmc
+application/vnd.wmf.bootstrap
+application/vnd.wolfram.mathematica
+application/vnd.wolfram.mathematica.package
+application/vnd.wolfram.player                                                         nbp
+application/vnd.wordperfect                                                                    wpd
+application/vnd.wordperfect5.1                                                         wp5
+application/vnd.wqd                                                                                    wqd
+application/vnd.wrq-hp3000-labelled
+application/vnd.wt.stf                                                                         stf
+application/vnd.wv.csp+wbxml
+application/vnd.wv.csp+xml
+application/vnd.wv.ssp+xml
+application/vnd.xara                                                                           xar
+application/vnd.xfdl                                                                           xfdl
+application/vnd.xfdl.webform
+application/vnd.xmi+xml
+application/vnd.xmpie.cpkg
+application/vnd.xmpie.dpkg
+application/vnd.xmpie.plan
+application/vnd.xmpie.ppkg
+application/vnd.xmpie.xlim
+application/vnd.yamaha.hv-dic                                                          hvd
+application/vnd.yamaha.hv-script                                                       hvs
+application/vnd.yamaha.hv-voice                                                                hvp
+application/vnd.yamaha.openscoreformat                                         osf
+application/vnd.yamaha.openscoreformat.osfpvg+xml                      osfpvg
+application/vnd.yamaha.remote-setup
+application/vnd.yamaha.smaf-audio                                                      saf
+application/vnd.yamaha.smaf-phrase                                                     spf
+application/vnd.yamaha.through-ngn
+application/vnd.yamaha.tunnel-udpencap
+application/vnd.yellowriver-custom-menu                                                cmp
+application/vnd.zul                                                                                    zir zirz
+application/vnd.zzazz.deck+xml                                                         zaz
+application/voicexml+xml                                                                       vxml
+application/vq-rtcpxr
+application/watcherinfo+xml
+application/whoispp-query
+application/whoispp-response
+application/widget                                                                                     wgt
+application/winhlp                                                                                     hlp
+application/wita
+application/wordperfect                                                                                wpd
+application/wordperfect5.1                                                                     wp5
+application/wsdl+xml                                                                           wsdl
+application/wspolicy+xml                                                                       wspolicy
+application/x-123                                                                                      wk
+application/x-7z-compressed                                                                    7z
+application/x-abiword                                                                          abw
+application/x-ace-compressed                                                           ace
+application/x-apple-diskimage                                                          dmg
+application/x-authorware-bin                                                           aab u32 vox x32
+application/x-authorware-map                                                           aam
+application/x-authorware-seg                                                           aas
+application/x-bcpio                                                                                    bcpio
+application/x-bittorrent                                                                       torrent
+application/x-blorb                                                                                    blb blorb
+application/x-bzip                                                                                     bz
+application/x-bzip2                                                                                    boz bz2
+application/x-cab                                                                                      cab
+application/x-cbr                                                                                      cb7 cba cbr cbt cbz
+application/x-cbz                                                                                      cbz
+application/x-cdf                                                                                      cda cdf
+application/x-cdlink                                                                           vcd
+application/x-cfs-compressed                                                           cfs
+application/x-chat                                                                                     chat
+application/x-chess-pgn                                                                                pgn
+application/x-compress
+application/x-comsol                                                                           mph
+application/x-conference                                                                       nsc
+application/x-core
+application/x-cpio                                                                                     cpio
+application/x-csh                                                                                      csh
+application/x-debian-package                                                           deb udeb
+application/x-dgc-compressed                                                           dgc
+application/x-director                                                                         cct cst cxt dcr dir dxr fgd swa w3d
+application/x-dms                                                                                      dms
+application/x-doom                                                                                     wad
+application/x-dtbncx+xml                                                                       ncx
+application/x-dtbook+xml                                                                       dtb
+application/x-dtbresource+xml                                                          res
+application/x-dvi                                                                                      dvi
+application/x-envoy                                                                                    evy
+application/x-eva                                                                                      eva
+application/x-executable
+application/x-flac                                                                                     flac
+application/x-font                                                                                     gsf pcf pcf.Z pfa pfb
+application/x-font-bdf                                                                         bdf
+application/x-font-dos
+application/x-font-framemaker
+application/x-font-ghostscript                                                         gsf
+application/x-font-libgrx
+application/x-font-linux-psf                                                           psf
+application/x-font-otf                                                                         otf
+application/x-font-pcf                                                                         pcf
+application/x-font-snf                                                                         snf
+application/x-font-speedo
+application/x-font-sunos-news
+application/x-font-ttf                                                                         ttc ttf
+application/x-font-type1                                                                       afm pfa pfb pfm
+application/x-font-vfont
+application/x-font-woff                                                                                woff
+application/x-freearc                                                                          arc
+application/x-freemind                                                                         mm
+application/x-futuresplash                                                                     spl
+application/x-ganttproject                                                                     gan
+application/x-gca-compressed                                                           gca
+application/x-glulx                                                                                    ulx
+application/x-gnumeric                                                                         gnumeric
+application/x-go-sgf                                                                           sgf
+application/x-gramps-xml                                                                       gramps
+application/x-graphing-calculator                                                      gcf
+application/x-gtar                                                                                     gtar taz tgz
+application/x-gtar-compressed                                                          taz tgz
+application/x-gzip
+application/x-hdf                                                                                      hdf
+application/x-hwp                                                                                      hwp
+application/x-ica                                                                                      ica
+application/x-info                                                                                     info
+application/x-install-instructions                                                     install
+application/x-internet-signup                                                          ins isp
+application/x-iphone                                                                           iii
+application/x-iso9660-image                                                                    iso
+application/x-jam                                                                                      jam
+application/x-java-applet
+application/x-java-bean
+application/x-java-jnlp-file                                                           jnlp
+application/x-javascript                                                                       js
+application/x-jmol                                                                                     jmz
+application/x-kchart                                                                           chrt
+application/x-kdelnk
+application/x-killustrator                                                                     kil
+application/x-koan                                                                                     skd skm skp skt
+application/x-kpresenter                                                                       kpr kpt
+application/x-kspread                                                                          ksp
+application/x-kword                                                                                    kwd kwt
+application/x-latex                                                                                    latex
+application/x-lha                                                                                      lha
+application/x-lyx                                                                                      lyx
+application/x-lzh                                                                                      lzh
+application/x-lzh-compressed                                                           lha lzh
+application/x-lzx                                                                                      lzx
+application/x-maker                                                                                    book fb fbdoc fm frame frm maker
+application/x-md5                                                                                      md5
+application/x-mie                                                                                      mie
+application/x-mif                                                                                      mif
+application/x-mobipocket-ebook                                                         mobi prc
+application/x-mpegURL                                                                          m3u8
+application/x-ms-application                                                           application
+application/x-ms-shortcut                                                                      lnk
+application/x-ms-wmd                                                                           wmd
+application/x-ms-wmz                                                                           wmz
+application/x-ms-xbap                                                                          xbap
+application/x-msaccess                                                                         mdb
+application/x-msbinder                                                                         obd
+application/x-mscardfile                                                                       crd
+application/x-msclip                                                                           clp
+application/x-msdos-program                                                                    bat com dll exe
+application/x-msdownload                                                                       bat com dll exe msi
+application/x-msi                                                                                      msi
+application/x-msmediaview                                                                      m13 m14 mvb
+application/x-msmetafile                                                                       emf emz wmf wmz
+application/x-msmoney                                                                          mny
+application/x-mspublisher                                                                      pub
+application/x-msschedule                                                                       scd
+application/x-msterminal                                                                       trm
+application/x-mswrite                                                                          wri
+application/x-netcdf                                                                           cdf nc
+application/x-ns-proxy-autoconfig                                                      dat pac
+application/x-nwc                                                                                      nwc
+application/x-nzb                                                                                      nzb
+application/x-object                                                                           o
+application/x-oz-application                                                           oza
+application/x-pkcs12                                                                           p12 pfx
+application/x-pkcs7-certificates                                                       p7b spc
+application/x-pkcs7-certreqresp                                                                p7r
+application/x-pkcs7-crl                                                                                crl
+application/x-python-code                                                                      pyc pyo
+application/x-qgis                                                                                     qgs shp shx
+application/x-quicktimeplayer                                                          qtl
+application/x-rar-compressed                                                           rar
+application/x-rdp                                                                                      rdp
+application/x-redhat-package-manager                                           rpm
+application/x-research-info-systems                                                    ris
+application/x-rss+xml                                                                          rss
+application/x-ruby                                                                                     rb
+application/x-rx
+application/x-scilab                                                                           sce sci
+application/x-scilab-xcos                                                                      xcos
+application/x-sh                                                                                       sh
+application/x-sha1                                                                                     sha1
+application/x-shar                                                                                     shar
+application/x-shellscript
+application/x-shockwave-flash                                                          swf swfl
+application/x-silverlight                                                                      scr
+application/x-silverlight-app                                                          xap
+application/x-sql                                                                                      sql
+application/x-stuffit                                                                          sit sitx
+application/x-stuffitx                                                                         sitx
+application/x-subrip                                                                           srt
+application/x-sv4cpio                                                                          sv4cpio
+application/x-sv4crc                                                                           sv4crc
+application/x-t3vm-image                                                                       t3
+application/x-tads                                                                                     gam
+application/x-tar                                                                                      tar
+application/x-tcl                                                                                      tcl
+application/x-tex                                                                                      tex
+application/x-tex-gf                                                                           gf
+application/x-tex-pk                                                                           pk
+application/x-tex-tfm                                                                          tfm
+application/x-texinfo                                                                          texi texinfo
+application/x-tgif                                                                                     obj
+application/x-trash                                                                                    % bak old sik ~
+application/x-troff                                                                                    roff t tr
+application/x-troff-man                                                                                man
+application/x-troff-me                                                                         me
+application/x-troff-ms                                                                         ms
+application/x-ustar                                                                                    ustar
+application/x-videolan
+application/x-wais-source                                                                      src
+application/x-wingz                                                                                    wz
+application/x-x509-ca-cert                                                                     crt der
+application/x-xcf                                                                                      xcf
+application/x-xfig                                                                                     fig
+application/x-xliff+xml                                                                                xlf
+application/x-xpinstall                                                                                xpi
+application/x-xz                                                                                       xz
+application/x-zmachine                                                                         z1 z2 z3 z4 z5 z6 z7 z8
+application/x400-bp
+application/xaml+xml                                                                           xaml
+application/xcap-att+xml
+application/xcap-caps+xml
+application/xcap-diff+xml                                                                      xdf
+application/xcap-el+xml
+application/xcap-error+xml
+application/xcap-ns+xml
+application/xcon-conference-info+xml
+application/xcon-conference-info-diff+xml
+application/xenc+xml                                                                           xenc
+application/xhtml+xml                                                                          xht xhtml
+application/xhtml-voice+xml
+application/xml                                                                                                xml xsd xsl
+application/xml-dtd                                                                                    dtd
+application/xml-external-parsed-entity
+application/xmpp+xml
+application/xop+xml                                                                                    xop
+application/xproc+xml                                                                          xpl
+application/xslt+xml                                                                           xslt
+application/xspf+xml                                                                           xspf
+application/xv+xml                                                                                     mxml xhvml xvm xvml
+application/yang                                                                                       yang
+application/yin+xml                                                                                    yin
+application/zip                                                                                                zip
+application/zlib
+audio/1d-interleaved-parityfec
+audio/32kadpcm
+audio/3gpp
+audio/3gpp2
+audio/AMR
+audio/AMR-WB
+audio/ATRAC-ADVANCED-LOSSLESS
+audio/ATRAC-X
+audio/ATRAC3
+audio/BV16
+audio/BV32
+audio/CN
+audio/DAT12
+audio/DV
+audio/DVI4
+audio/EVRC
+audio/EVRC-QCP
+audio/EVRC0
+audio/EVRC1
+audio/EVRCB
+audio/EVRCB0
+audio/EVRCB1
+audio/EVRCWB
+audio/EVRCWB0
+audio/EVRCWB1
+audio/G719
+audio/G722
+audio/G7221
+audio/G723
+audio/G726-16
+audio/G726-24
+audio/G726-32
+audio/G726-40
+audio/G728
+audio/G729
+audio/G7291
+audio/G729D
+audio/G729E
+audio/GSM
+audio/GSM-EFR
+audio/GSM-HR-08
+audio/L16
+audio/L20
+audio/L24
+audio/L8
+audio/LPC
+audio/MP4A-LATM
+audio/MPA
+audio/PCMA
+audio/PCMA-WB
+audio/PCMU
+audio/PCMU-WB
+audio/QCELP
+audio/RED
+audio/SMV
+audio/SMV-QCP
+audio/SMV0
+audio/UEMCLIP
+audio/VDVI
+audio/VMR-WB
+audio/ac3
+audio/adpcm                                                                                                    adp
+audio/amr                                                                                                      amr
+audio/amr-wb                                                                                           awb
+audio/amr-wb+
+audio/annodex                                                                                          axa
+audio/asc
+audio/basic                                                                                                    au snd
+audio/bv16
+audio/bv32
+audio/clearmode
+audio/cn
+audio/csound                                                                                           csd orc sco
+audio/dat12
+audio/dls
+audio/dsr-es201108
+audio/dsr-es202050
+audio/dsr-es202211
+audio/dsr-es202212
+audio/dvi4
+audio/eac3
+audio/evrc
+audio/evrc-qcp
+audio/evrc0
+audio/evrc1
+audio/evrcb
+audio/evrcb0
+audio/evrcb1
+audio/evrcwb
+audio/evrcwb0
+audio/evrcwb1
+audio/example
+audio/flac                                                                                                     flac
+audio/fwdred
+audio/g.722.1
+audio/g719
+audio/g722
+audio/g7221
+audio/g723
+audio/g726-16
+audio/g726-24
+audio/g726-32
+audio/g726-40
+audio/g728
+audio/g729
+audio/g7291
+audio/g729d
+audio/g729e
+audio/gsm
+audio/gsm-efr
+audio/iLBC
+audio/ilbc
+audio/ip-mr_v2.5
+audio/l16
+audio/l20
+audio/l24
+audio/l8
+audio/lpc
+audio/midi                                                                                                     kar mid midi rmi
+audio/mobile-xmf
+audio/mp4                                                                                                      mp4a
+audio/mp4a-latm
+audio/mpa
+audio/mpa-robust
+audio/mpeg                                                                                                     m2a m3a m4a mp2 mp2a mp3 mpega mpga
+audio/mpeg4-generic
+audio/mpegurl                                                                                          m3u
+audio/ogg                                                                                                      oga ogg opus spx
+audio/parityfec
+audio/pcma
+audio/pcma-wb
+audio/pcmu
+audio/pcmu-wb
+audio/prs.sid                                                                                          sid
+audio/qcelp
+audio/raptorfec
+audio/red
+audio/rtp-enc-aescm128
+audio/rtp-midi
+audio/rtx
+audio/s3m                                                                                                      s3m
+audio/silk                                                                                                     sil
+audio/smv
+audio/smv-qcp
+audio/smv0
+audio/sp-midi
+audio/speex
+audio/t140c
+audio/t38
+audio/telephone-event
+audio/tone
+audio/ulpfec
+audio/vdvi
+audio/vmr-wb
+audio/vnd.3gpp.iufp
+audio/vnd.4SB
+audio/vnd.4sb
+audio/vnd.CELP
+audio/vnd.audiokoz
+audio/vnd.celp
+audio/vnd.cisco.nse
+audio/vnd.cmles.radio-events
+audio/vnd.cns.anp1
+audio/vnd.cns.inf1
+audio/vnd.dece.audio                                                                           uva uvva
+audio/vnd.digital-winds                                                                                eol
+audio/vnd.dlna.adts
+audio/vnd.dolby.heaac.1
+audio/vnd.dolby.heaac.2
+audio/vnd.dolby.mlp
+audio/vnd.dolby.mps
+audio/vnd.dolby.pl2
+audio/vnd.dolby.pl2x
+audio/vnd.dolby.pl2z
+audio/vnd.dolby.pulse.1
+audio/vnd.dra                                                                                          dra
+audio/vnd.dts                                                                                          dts
+audio/vnd.dts.hd                                                                                       dtshd
+audio/vnd.dvb.file
+audio/vnd.everad.plj
+audio/vnd.hns.audio
+audio/vnd.lucent.voice                                                                         lvp
+audio/vnd.ms-playready.media.pya                                                       pya
+audio/vnd.nokia.mobile-xmf
+audio/vnd.nortel.vbk
+audio/vnd.nuera.ecelp4800                                                                      ecelp4800
+audio/vnd.nuera.ecelp7470                                                                      ecelp7470
+audio/vnd.nuera.ecelp9600                                                                      ecelp9600
+audio/vnd.octel.sbc
+audio/vnd.qcelp
+audio/vnd.rhetorex.32kadpcm
+audio/vnd.rip                                                                                          rip
+audio/vnd.sealedmedia.softseal.mpeg
+audio/vnd.vmx.cvsd
+audio/vorbis
+audio/vorbis-config
+audio/webm                                                                                                     weba
+audio/x-aac                                                                                                    aac
+audio/x-aiff                                                                                           aif aifc aiff
+audio/x-caf                                                                                                    caf
+audio/x-flac                                                                                           flac
+audio/x-gsm                                                                                                    gsm
+audio/x-matroska                                                                                       mka
+audio/x-mpegurl                                                                                                m3u
+audio/x-ms-wax                                                                                         wax
+audio/x-ms-wma                                                                                         wma
+audio/x-pn-realaudio                                                                           ra ram rm
+audio/x-pn-realaudio-plugin                                                                    rmp
+audio/x-realaudio                                                                                      ra
+audio/x-scpls                                                                                          pls
+audio/x-sd2                                                                                                    sd2
+audio/x-wav                                                                                                    wav
+audio/xm                                                                                                       xm
+chemical/x-alchemy                                                                                     alc
+chemical/x-cache                                                                                       cac cache
+chemical/x-cache-csf                                                                           csf
+chemical/x-cactvs-binary                                                                       cascii cbin ctab
+chemical/x-cdx                                                                                         cdx
+chemical/x-cerius                                                                                      cer
+chemical/x-chem3d                                                                                      c3d
+chemical/x-chemdraw                                                                                    chm
+chemical/x-cif                                                                                         cif
+chemical/x-cmdf                                                                                                cmdf
+chemical/x-cml                                                                                         cml
+chemical/x-compass                                                                                     cpa
+chemical/x-crossfire                                                                           bsd
+chemical/x-csml                                                                                                csm csml
+chemical/x-ctx                                                                                         ctx
+chemical/x-cxf                                                                                         cef cxf
+chemical/x-embl-dl-nucleotide                                                          emb embl
+chemical/x-galactic-spc                                                                                spc
+chemical/x-gamess-input                                                                                gam gamin inp
+chemical/x-gaussian-checkpoint                                                         fch fchk
+chemical/x-gaussian-cube                                                                       cub
+chemical/x-gaussian-input                                                                      gau gjc gjf
+chemical/x-gaussian-log                                                                                gal
+chemical/x-gcg8-sequence                                                                       gcg
+chemical/x-genbank                                                                                     gen
+chemical/x-hin                                                                                         hin
+chemical/x-isostar                                                                                     ist istr
+chemical/x-jcamp-dx                                                                                    dx jdx
+chemical/x-kinemage                                                                                    kin
+chemical/x-macmolecule                                                                         mcm
+chemical/x-macromodel-input                                                                    mmd mmod
+chemical/x-mdl-molfile                                                                         mol
+chemical/x-mdl-rdfile                                                                          rd
+chemical/x-mdl-rxnfile                                                                         rxn
+chemical/x-mdl-sdfile                                                                          sd sdf
+chemical/x-mdl-tgf                                                                                     tgf
+chemical/x-mmcif                                                                                       mcif
+chemical/x-mol2                                                                                                mol2
+chemical/x-molconn-Z                                                                           b
+chemical/x-mopac-graph                                                                         gpt
+chemical/x-mopac-input                                                                         dat mop mopcrt mpc zmt
+chemical/x-mopac-out                                                                           moo
+chemical/x-mopac-vib                                                                           mvb
+chemical/x-ncbi-asn1                                                                           asn
+chemical/x-ncbi-asn1-ascii                                                                     ent prt
+chemical/x-ncbi-asn1-binary                                                                    aso val
+chemical/x-ncbi-asn1-spec                                                                      asn
+chemical/x-pdb                                                                                         ent pdb
+chemical/x-rosdal                                                                                      ros
+chemical/x-swissprot                                                                           sw
+chemical/x-vamas-iso14976                                                                      vms
+chemical/x-vmd                                                                                         vmd
+chemical/x-xtel                                                                                                xtel
+chemical/x-xyz                                                                                         xyz
+image/bmp                                                                                                      bmp
+image/cgm                                                                                                      cgm
+image/example
+image/fits
+image/g3fax                                                                                                    g3
+image/gif                                                                                                      gif
+image/ief                                                                                                      ief
+image/jp2
+image/jpeg                                                                                                     jpe jpeg jpg
+image/jpm
+image/jpx
+image/ktx                                                                                                      ktx
+image/naplps
+image/pcx                                                                                                      pcx
+image/png                                                                                                      png
+image/prs.btif                                                                                         btif
+image/prs.pti
+image/pwg-raster
+image/sgi                                                                                                      sgi
+image/svg+xml                                                                                          svg svgz
+image/t38
+image/tiff                                                                                                     tif tiff
+image/tiff-fx
+image/vnd.adobe.photoshop                                                                      psd
+image/vnd.airzip.accelerator.azv
+image/vnd.cns.inf2
+image/vnd.dece.graphic                                                                         uvg uvi uvvg uvvi
+image/vnd.djvu                                                                                         djv djvu
+image/vnd.dvb.subtitle                                                                         sub
+image/vnd.dwg                                                                                          dwg
+image/vnd.dxf                                                                                          dxf
+image/vnd.fastbidsheet                                                                         fbs
+image/vnd.fpx                                                                                          fpx
+image/vnd.fst                                                                                          fst
+image/vnd.fujixerox.edmics-mmr                                                         mmr
+image/vnd.fujixerox.edmics-rlc                                                         rlc
+image/vnd.globalgraphics.pgb
+image/vnd.microsoft.icon                                                                       ico
+image/vnd.mix
+image/vnd.ms-modi                                                                                      mdi
+image/vnd.ms-photo                                                                                     wdp
+image/vnd.net-fpx                                                                                      npx
+image/vnd.radiance
+image/vnd.sealed.png
+image/vnd.sealedmedia.softseal.gif
+image/vnd.sealedmedia.softseal.jpg
+image/vnd.svf
+image/vnd.wap.wbmp                                                                                     wbmp
+image/vnd.xiff                                                                                         xif
+image/webp                                                                                                     webp
+image/x-3ds                                                                                                    3ds
+image/x-canon-cr2                                                                                      cr2
+image/x-canon-crw                                                                                      crw
+image/x-cmu-raster                                                                                     ras
+image/x-cmx                                                                                                    cmx
+image/x-coreldraw                                                                                      cdr
+image/x-coreldrawpattern                                                                       pat
+image/x-coreldrawtemplate                                                                      cdt
+image/x-corelphotopaint                                                                                cpt
+image/x-epson-erf                                                                                      erf
+image/x-freehand                                                                                       fh fh4 fh5 fh7 fhc
+image/x-icon                                                                                           ico
+image/x-jg                                                                                                     art
+image/x-jng                                                                                                    jng
+image/x-mrsid-image                                                                                    sid
+image/x-ms-bmp                                                                                         bmp
+image/x-nikon-nef                                                                                      nef
+image/x-olympus-orf                                                                                    orf
+image/x-pcx                                                                                                    pcx
+image/x-photoshop                                                                                      psd
+image/x-pict                                                                                           pct pic
+image/x-portable-anymap                                                                                pnm
+image/x-portable-bitmap                                                                                pbm
+image/x-portable-graymap                                                                       pgm
+image/x-portable-pixmap                                                                                ppm
+image/x-rgb                                                                                                    rgb
+image/x-tga                                                                                                    tga
+image/x-xbitmap                                                                                                xbm
+image/x-xpixmap                                                                                                xpm
+image/x-xwindowdump                                                                                    xwd
+inode/blockdevice
+inode/chardevice
+inode/directory
+inode/directory-locked
+inode/fifo
+inode/socket
+message/CPIM
+message/cpim
+message/delivery-status
+message/disposition-notification
+message/example
+message/external-body
+message/feedback-report
+message/global
+message/global-delivery-status
+message/global-disposition-notification
+message/global-headers
+message/http
+message/imdn+xml
+message/news
+message/partial
+message/rfc822                                                                                         eml mime
+message/s-http
+message/sip
+message/sipfrag
+message/tracking-status
+message/vnd.si.simp
+model/example
+model/iges                                                                                                     iges igs
+model/mesh                                                                                                     mesh msh silo
+model/vnd.collada+xml                                                                          dae
+model/vnd.dwf                                                                                          dwf
+model/vnd.flatland.3dml
+model/vnd.gdl                                                                                          gdl
+model/vnd.gs-gdl
+model/vnd.gs.gdl
+model/vnd.gtw                                                                                          gtw
+model/vnd.moml+xml
+model/vnd.mts                                                                                          mts
+model/vnd.parasolid.transmit.binary
+model/vnd.parasolid.transmit.text
+model/vnd.vtu                                                                                          vtu
+model/vrml                                                                                                     vrml wrl
+model/x3d+binary                                                                                       x3db x3dbz
+model/x3d+vrml                                                                                         x3dv x3dvz
+model/x3d+xml                                                                                          x3d x3dz
+multipart/alternative
+multipart/appledouble
+multipart/byteranges
+multipart/digest
+multipart/encrypted
+multipart/example
+multipart/form-data
+multipart/header-set
+multipart/mixed
+multipart/parallel
+multipart/related
+multipart/report
+multipart/signed
+multipart/voice-message
+text/cache-manifest                                                                                    appcache
+text/calendar                                                                                          ics icz ifb
+text/comma-separated-values                                                                    csv
+text/css                                                                                                       css
+text/csv                                                                                                       csv
+text/directory
+text/dns
+text/ecmascript
+text/english
+text/enriched
+text/example
+text/h323                                                                                                      323
+text/html                                                                                                      htm html shtml
+text/iuls                                                                                                      uls
+text/javascript
+text/mathml                                                                                                    mml
+text/n3                                                                                                                n3
+text/parityfec
+text/plain                                                                                                     asc brf conf def diff in list log pot srt text txt
+text/prs.fallenstein.rst
+text/prs.lines.tag                                                                                     dsc
+text/red
+text/rfc822-headers
+text/richtext                                                                                          rtx
+text/rtf                                                                                                       rtf
+text/rtp-enc-aescm128
+text/rtx
+text/scriptlet                                                                                         sct wsc
+text/sgml                                                                                                      sgm sgml
+text/t140
+text/tab-separated-values                                                                      tsv
+text/texmacs                                                                                           tm ts
+text/troff                                                                                                     man me ms roff t tr
+text/turtle                                                                                                    ttl
+text/ulpfec
+text/uri-list                                                                                          uri uris urls
+text/vcard                                                                                                     vcard
+text/vnd.DMClientScript
+text/vnd.IPTC.NITF
+text/vnd.IPTC.NewsML
+text/vnd.abc
+text/vnd.curl                                                                                          curl
+text/vnd.curl.dcurl                                                                                    dcurl
+text/vnd.curl.mcurl                                                                                    mcurl
+text/vnd.curl.scurl                                                                                    scurl
+text/vnd.dmclientscript
+text/vnd.dvb.subtitle                                                                          sub
+text/vnd.esmertec.theme-descriptor
+text/vnd.flatland.3dml
+text/vnd.fly                                                                                           fly
+text/vnd.fmi.flexstor                                                                          flx
+text/vnd.graphviz                                                                                      gv
+text/vnd.in3d.3dml                                                                                     3dml
+text/vnd.in3d.spot                                                                                     spot
+text/vnd.iptc.newsml
+text/vnd.iptc.nitf
+text/vnd.latex-z
+text/vnd.motorola.reflex
+text/vnd.ms-mediapackage
+text/vnd.net2phone.commcenter.command
+text/vnd.si.uricatalogue
+text/vnd.sun.j2me.app-descriptor                                                       jad
+text/vnd.trolltech.linguist
+text/vnd.wap.si
+text/vnd.wap.sl
+text/vnd.wap.wml                                                                                       wml
+text/vnd.wap.wmlscript                                                                         wmls
+text/x-asm                                                                                                     asm s
+text/x-bibtex                                                                                          bib
+text/x-boo                                                                                                     boo
+text/x-c                                                                                                       c cc cpp cxx dic h hh
+text/x-c++hdr                                                                                          h++ hh hpp hxx
+text/x-c++src                                                                                          c++ cc cpp cxx
+text/x-chdr                                                                                                    h
+text/x-component                                                                                       htc
+text/x-crontab
+text/x-csh                                                                                                     csh
+text/x-csrc                                                                                                    c
+text/x-diff                                                                                                    diff patch
+text/x-dsrc                                                                                                    d
+text/x-fortran                                                                                         f f77 f90 for
+text/x-haskell                                                                                         hs
+text/x-java                                                                                                    java
+text/x-java-source                                                                                     java
+text/x-lilypond                                                                                                ly
+text/x-literate-haskell                                                                                lhs
+text/x-makefile
+text/x-moc                                                                                                     moc
+text/x-nfo                                                                                                     nfo
+text/x-opml                                                                                                    opml
+text/x-pascal                                                                                          p pas
+text/x-pcs-gcd                                                                                         gcd
+text/x-perl                                                                                                    pl pm
+text/x-psp                                                                                                     psp
+text/x-python                                                                                          py
+text/x-scala                                                                                           scala
+text/x-server-parsed-html
+text/x-setext                                                                                          etx
+text/x-sfv                                                                                                     sfv
+text/x-sh                                                                                                      sh
+text/x-tcl                                                                                                     tcl tk
+text/x-tex                                                                                                     cls ltx sty tex
+text/x-uuencode                                                                                                uu
+text/x-vcalendar                                                                                       vcs
+text/x-vcard                                                                                           vcf
+text/xml
+text/xml-external-parsed-entity
+video/1d-interleaved-parityfec
+video/3gpp                                                                                                     3gp
+video/3gpp-tt
+video/3gpp2                                                                                                    3g2
+video/BMPEG
+video/BT656
+video/CelB
+video/DV
+video/H261
+video/H263
+video/H263-1998
+video/H263-2000
+video/H264
+video/H264-RCDO
+video/H264-SVC
+video/JPEG
+video/MJ2
+video/MP1S
+video/MP2P
+video/MP2T                                                                                                     ts
+video/MP4V-ES
+video/MPV
+video/SMPTE292M
+video/annodex                                                                                          axv
+video/bmpeg
+video/bt656
+video/celb
+video/dl                                                                                                       dl
+video/dv                                                                                                       dif dv
+video/example
+video/fli                                                                                                      fli
+video/gl                                                                                                       gl
+video/h261                                                                                                     h261
+video/h263                                                                                                     h263
+video/h263-1998
+video/h263-2000
+video/h264                                                                                                     h264
+video/jpeg                                                                                                     jpgv
+video/jpeg2000
+video/jpm                                                                                                      jpgm jpm
+video/mj2                                                                                                      mj2 mjp2
+video/mp1s
+video/mp2p
+video/mp2t
+video/mp4                                                                                                      mp4 mp4v mpg4
+video/mp4v-es
+video/mpeg                                                                                                     m1v m2v mpe mpeg mpg
+video/mpeg4-generic
+video/mpv
+video/nv
+video/ogg                                                                                                      ogv
+video/parityfec
+video/pointer
+video/quicktime                                                                                                mov qt
+video/raptorfec
+video/raw
+video/rtp-enc-aescm128
+video/rtx
+video/smpte292m
+video/ulpfec
+video/vc1
+video/vnd.CCTV
+video/vnd.cctv
+video/vnd.dece.hd                                                                                      uvh uvvh
+video/vnd.dece.mobile                                                                          uvm uvvm
+video/vnd.dece.mp4
+video/vnd.dece.pd                                                                                      uvp uvvp
+video/vnd.dece.sd                                                                                      uvs uvvs
+video/vnd.dece.video                                                                           uvv uvvv
+video/vnd.directv.mpeg
+video/vnd.directv.mpeg-tts
+video/vnd.dlna.mpeg-tts
+video/vnd.dvb.file                                                                                     dvb
+video/vnd.fvt                                                                                          fvt
+video/vnd.hns.video
+video/vnd.iptvforum.1dparityfec-1010
+video/vnd.iptvforum.1dparityfec-2005
+video/vnd.iptvforum.2dparityfec-1010
+video/vnd.iptvforum.2dparityfec-2005
+video/vnd.iptvforum.ttsavc
+video/vnd.iptvforum.ttsmpeg2
+video/vnd.motorola.video
+video/vnd.motorola.videop
+video/vnd.mpegurl                                                                                      m4u mxu
+video/vnd.ms-playready.media.pyv                                                       pyv
+video/vnd.mts
+video/vnd.nokia.interleaved-multimedia
+video/vnd.nokia.videovoip
+video/vnd.objectvideo
+video/vnd.sealed.mpeg1
+video/vnd.sealed.mpeg4
+video/vnd.sealed.swf
+video/vnd.sealedmedia.softseal.mov
+video/vnd.uvvu.mp4                                                                                     uvu uvvu
+video/vnd.vivo                                                                                         viv
+video/webm                                                                                                     webm
+video/x-f4v                                                                                                    f4v
+video/x-fli                                                                                                    fli
+video/x-flv                                                                                                    flv
+video/x-la-asf                                                                                         lsf lsx
+video/x-m4v                                                                                                    m4v
+video/x-matroska                                                                                       mk3d mks mkv mpv
+video/x-mng                                                                                                    mng
+video/x-ms-asf                                                                                         asf asx
+video/x-ms-vob                                                                                         vob
+video/x-ms-wm                                                                                          wm
+video/x-ms-wmv                                                                                         wmv
+video/x-ms-wmx                                                                                         wmx
+video/x-ms-wvx                                                                                         wvx
+video/x-msvideo                                                                                                avi
+video/x-sgi-movie                                                                                      movie
+video/x-smv                                                                                                    smv
+x-conference/x-cooltalk                                                                                ice
+x-epoc/x-sisx-app                                                                                      sisx
+x-world/x-vrml                                                                                         vrm vrml wrl
diff --git a/core/baselayout/files/os-release b/core/baselayout/files/os-release
new file mode 100644 (file)
index 0000000..ddf8164
--- /dev/null
@@ -0,0 +1,4 @@
+NAME="asd Linux"
+PRETTY_NAME="asd Linux"
+ID=asd
+BUILD_ID=rolling
diff --git a/core/baselayout/files/passwd b/core/baselayout/files/passwd
new file mode 100644 (file)
index 0000000..1edbef6
--- /dev/null
@@ -0,0 +1,2 @@
+root:x:0:0:root:/root:/bin/sh
+nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
diff --git a/core/baselayout/files/profile b/core/baselayout/files/profile
new file mode 100644 (file)
index 0000000..49075ce
--- /dev/null
@@ -0,0 +1,15 @@
+# /etc/profile
+#
+# System wide environment and startup programs.
+
+export PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
+
+# Set default umask.
+umask 022
+
+# Load profiles from /etc/profile.d
+for file in /etc/profile.d/*.sh; do
+    [ -r "$file" ] && . "$file"
+done
+
+unset file
diff --git a/core/baselayout/files/securetty b/core/baselayout/files/securetty
new file mode 100644 (file)
index 0000000..7014604
--- /dev/null
@@ -0,0 +1,26 @@
+console
+vc/1
+vc/2
+vc/3
+vc/4
+vc/5
+vc/6
+vc/7
+vc/8
+vc/9
+vc/10
+vc/11
+tty1
+tty2
+tty3
+tty4
+tty5
+tty6
+tty7
+tty8
+tty9
+tty10
+tty11
+ttyS0
+ttyAMA0
+ttyUSB0
diff --git a/core/baselayout/files/shadow b/core/baselayout/files/shadow
new file mode 100644 (file)
index 0000000..9af03d3
--- /dev/null
@@ -0,0 +1 @@
+root:!:14871::::::
diff --git a/core/baselayout/files/shells b/core/baselayout/files/shells
new file mode 100644 (file)
index 0000000..15eb394
--- /dev/null
@@ -0,0 +1,4 @@
+# Pathnames of valid login shells.
+# See shells(5) for details.
+
+/bin/sh
diff --git a/core/baselayout/sources b/core/baselayout/sources
new file mode 100644 (file)
index 0000000..abe0bf0
--- /dev/null
@@ -0,0 +1,13 @@
+files/crypttab
+files/fstab
+files/group
+files/host.conf
+files/hosts
+files/issue
+files/mime.types
+files/os-release
+files/passwd
+files/profile
+files/securetty
+files/shadow
+files/shells
diff --git a/core/baselayout/version b/core/baselayout/version
new file mode 100644 (file)
index 0000000..2fb73a0
--- /dev/null
@@ -0,0 +1 @@
+1 1
diff --git a/core/bmake/build b/core/bmake/build
deleted file mode 100755 (executable)
index aaa026f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh -e
-
-cd bmake
-
-sed -i 's/build) op_test/build) /' boot-strap
-sed -i 's/     op_test//' boot-strap
-
-export CFLAGS="$CFLAGS -static"
-export LDFLAGS="$LDFLAGS -static"
-
-./boot-strap --with-default-sys-path=/usr/share/mk op=build
-INSTALL=install ./boot-strap --prefix=/usr --with-mksrc=/usr/share/mk --install-destdir="$1" op=install
-
-rm -rf "$1/usr/share/man/cat1"
-install -Dm644 bmake.1 "$1/usr/share/man/man1/bmake.1"
-ln -s bmake "$1/usr/bin/make"
diff --git a/core/bmake/checksums b/core/bmake/checksums
deleted file mode 100644 (file)
index 2e2ee57..0000000
+++ /dev/null
@@ -1 +0,0 @@
-aa97b2f602fd31a71336ce97c54a1c74c2b3437fb24100830c1fff15cbd9ff3e
diff --git a/core/bmake/sources b/core/bmake/sources
deleted file mode 100644 (file)
index a0210b4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-http://www.crufty.net/ftp/pub/sjg/bmake-20210621.tar.gz bmake/
diff --git a/core/bmake/version b/core/bmake/version
deleted file mode 100644 (file)
index ef4a9ae..0000000
+++ /dev/null
@@ -1 +0,0 @@
-20210621 1
index bed084a8fff2508a882b348e234aaa8a3b9889b0..07c013361c9e9ab769cfd852f5b3b2e4a283b640 100644 (file)
@@ -1,5 +1,5 @@
 b0409da19243f364e401dc91e345e230dbcb83938a1815a788d0a549f43886d1
-715727926c872bb4985e532dd76c800e3f5646d3f0092eb1fec2847474038598
+a828929eb24b37c6dc7daca126154250d6db241d84e7925587b6731eacfaa97a
 3764993c00fbae89f43b1ac991ebc96774afcd7aa663a434539a5f154c8d991e
 814dea14ac612125e97dcc1d619219b2c9dfc14850bf48d858421fb2c98eca12
 11fe9cdb031d0c387dfb366dc9cdbabadd129f5bbed34659868914058ada11c7
index 1ae20de4ba5bbb3f836c867fe6c58a77b6291f1b..efa339029466ba5ce2ce5b62d2a7890194674a0b 100644 (file)
@@ -325,7 +325,7 @@ CONFIG_TRUE=y
 CONFIG_TRUNCATE=y
 CONFIG_TTY=y
 CONFIG_UNAME=y
-CONFIG_UNAME_OSNAME="KISS Linux"
+CONFIG_UNAME_OSNAME="asd Linux"
 CONFIG_BB_ARCH=y
 CONFIG_UNIQ=y
 CONFIG_UNLINK=y
@@ -453,10 +453,10 @@ CONFIG_FEATURE_FIND_PATH=y
 CONFIG_FEATURE_FIND_REGEX=y
 # CONFIG_FEATURE_FIND_CONTEXT is not set
 CONFIG_FEATURE_FIND_LINKS=y
-CONFIG_GREP=y
-CONFIG_EGREP=y
-CONFIG_FGREP=y
-CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_GREP=n
+CONFIG_EGREP=n
+CONFIG_FGREP=n
+CONFIG_FEATURE_GREP_CONTEXT=n
 CONFIG_XARGS=y
 CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
 CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
index 2d4274ad02d9a08404594e57a8386aaa88e2d977..4d2578ee972c3fdc6652cb526e01da28853869e2 100644 (file)
@@ -68,4 +68,4 @@ index 0a372a049..ecb29a8fd 100644
 -      uname(&G.uts);
        xchdir(G.uts.release);
  
-       if (opt & OPT_LIST_ONLY) {
\ No newline at end of file
+       if (opt & OPT_LIST_ONLY) {
index 360f8a1341bd5fd72785ac3d47de0d690265512f..741d81337042ad35c45f1911e6f704437f4603c6 100644 (file)
@@ -1 +1 @@
-1.33.1 6
+1.33.1 1
diff --git a/core/byacc/depends b/core/byacc/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/core/bzip2/build b/core/bzip2/build
new file mode 100755 (executable)
index 0000000..ac1055b
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+
+make CC="${CC:-cc} $CFLAGS -fPIC $LDFLAGS" -f Makefile-libbz2_so
+make CC="${CC:-cc} $CFLAGS -fPIC $LDFLAGS" bzip2recover libbz2.a
+
+for bin in bzip2-shared bzdiff bzgrep bzip2recover bzmore; do
+    install -Dm755 "$bin" "$1/usr/bin/${bin%%-shared}"
+done
+
+install -Dm755 libbz2.so.1.0.8 "$1/usr/lib/libbz2.so.1.0.8"
+install -Dm644 libbz2.a        "$1/usr/lib/libbz2.a"
+install -Dm644 bzip2.1         "$1/usr/share/man/man1/bzip2.1"
+install -Dm644 bzlib.h         "$1/usr/include/bzlib.h"
+
+for lib in libbz2.so libbz2.so.1 libbz2.so.1.0; do
+    ln -sf libbz2.so.1.0.8 "$1/usr/lib/$lib"
+done
+
+ln -sf bzip2 "$1/usr/bin/bunzip2"
+ln -sf bzip2 "$1/usr/bin/bzcat"
diff --git a/core/bzip2/checksums b/core/bzip2/checksums
new file mode 100644 (file)
index 0000000..b50d346
--- /dev/null
@@ -0,0 +1 @@
+ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269  bzip2-1.0.8.tar.gz
diff --git a/core/bzip2/sources b/core/bzip2/sources
new file mode 100644 (file)
index 0000000..a04bc1b
--- /dev/null
@@ -0,0 +1 @@
+https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
diff --git a/core/bzip2/version b/core/bzip2/version
new file mode 100644 (file)
index 0000000..0bc3d1e
--- /dev/null
@@ -0,0 +1 @@
+1.0.8 1
diff --git a/core/catgirl/build b/core/catgirl/build
new file mode 100755 (executable)
index 0000000..2581b29
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --mandir=/usr/share/man
+
+make DESTDIR="$1" install
diff --git a/core/catgirl/checksums b/core/catgirl/checksums
new file mode 100644 (file)
index 0000000..675edc9
--- /dev/null
@@ -0,0 +1 @@
+2ef69606640f25ca695bc65d0dd9e16f5fa36184feb38d1253a5648dad68776b
diff --git a/core/catgirl/depends b/core/catgirl/depends
new file mode 100644 (file)
index 0000000..ff2e181
--- /dev/null
@@ -0,0 +1,3 @@
+libressl
+ncurses
+pkgconf make
diff --git a/core/catgirl/sources b/core/catgirl/sources
new file mode 100644 (file)
index 0000000..b554547
--- /dev/null
@@ -0,0 +1 @@
+https://git.causal.agency/catgirl/snapshot/catgirl-1.8.tar.gz
diff --git a/core/catgirl/version b/core/catgirl/version
new file mode 100644 (file)
index 0000000..33fba2c
--- /dev/null
@@ -0,0 +1 @@
+1.8 1
diff --git a/core/cmake/build b/core/cmake/build
new file mode 100755 (executable)
index 0000000..7697439
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+patch -p1 < cmake-no-execinfo.patch
+
+./configure \
+    --prefix=/usr \
+    --system-curl \
+    --system-expat \
+    --system-zlib \
+    --system-bzip2
+
+make
+make DESTDIR="$1" install
+
+rm -rf \
+    "$1/usr/doc" \
+    "$1/usr/share/cmake"*/Help \
+    "$1/usr/share/vim" \
+    "$1/usr/share/emacs"
diff --git a/core/cmake/checksums b/core/cmake/checksums
new file mode 100644 (file)
index 0000000..56ff7e3
--- /dev/null
@@ -0,0 +1,2 @@
+12c8040ef5c6f1bc5b8868cede16bb7926c18980f59779e299ab52cbc6f15bb0
+93f5582efd076673f9bcb3e639bd594e378954a5a3130e5921027ede23c3325c
diff --git a/core/cmake/depends b/core/cmake/depends
new file mode 100644 (file)
index 0000000..1a51841
--- /dev/null
@@ -0,0 +1,6 @@
+bzip2
+curl
+expat
+libressl
+linux-headers make
+zlib
diff --git a/core/cmake/patches/cmake-no-execinfo.patch b/core/cmake/patches/cmake-no-execinfo.patch
new file mode 100644 (file)
index 0000000..fd1e715
--- /dev/null
@@ -0,0 +1,52 @@
+diff --git a/Source/kwsys/SystemInformation.cxx b/Source/kwsys/SystemInformation.cxx
+index ed1cdc0..d3afe21 100644
+--- a/Source/kwsys/SystemInformation.cxx
++++ b/Source/kwsys/SystemInformation.cxx
+@@ -150,18 +150,8 @@ typedef struct rlimit ResourceLimitType;
+ #  include <OS.h>
+ #endif
+-#if defined(KWSYS_SYSTEMINFORMATION_HAS_BACKTRACE)
+-#  include <execinfo.h>
+-#  if defined(KWSYS_SYSTEMINFORMATION_HAS_CPP_DEMANGLE)
+-#    include <cxxabi.h>
+-#  endif
+-#  if defined(KWSYS_SYSTEMINFORMATION_HAS_SYMBOL_LOOKUP)
+-#    include <dlfcn.h>
+-#  endif
+-#else
+ #  undef KWSYS_SYSTEMINFORMATION_HAS_CPP_DEMANGLE
+ #  undef KWSYS_SYSTEMINFORMATION_HAS_SYMBOL_LOOKUP
+-#endif
+ #include <cctype> // int isdigit(int c);
+ #include <cstdio>
+diff --git a/Source/kwsys/kwsysPlatformTestsCXX.cxx b/Source/kwsys/kwsysPlatformTestsCXX.cxx
+index 0bfa20e..0208417 100644
+--- a/Source/kwsys/kwsysPlatformTestsCXX.cxx
++++ b/Source/kwsys/kwsysPlatformTestsCXX.cxx
+@@ -102,24 +102,6 @@ int main()
+ }
+ #endif
+-#ifdef TEST_KWSYS_CXX_HAS_BACKTRACE
+-#  if defined(__PATHSCALE__) || defined(__PATHCC__) ||                        \
+-    (defined(__LSB_VERSION__) && (__LSB_VERSION__ < 41))
+-backtrace does not work with this compiler or os
+-#  endif
+-#  if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
+-#    define _GNU_SOURCE
+-#  endif
+-#  include <execinfo.h>
+-int main()
+-{
+-  void* stackSymbols[256];
+-  backtrace(stackSymbols, 256);
+-  backtrace_symbols(&stackSymbols[0], 1);
+-  return 0;
+-}
+-#endif
+-
+ #ifdef TEST_KWSYS_CXX_HAS_DLADDR
+ #  if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
+ #    define _GNU_SOURCE
diff --git a/core/cmake/sources b/core/cmake/sources
new file mode 100644 (file)
index 0000000..0e66b45
--- /dev/null
@@ -0,0 +1,2 @@
+https://cmake.org/files/v3.20/cmake-3.20.5.tar.gz
+patches/cmake-no-execinfo.patch
diff --git a/core/cmake/version b/core/cmake/version
new file mode 100644 (file)
index 0000000..94cd8a6
--- /dev/null
@@ -0,0 +1 @@
+3.20.5 1
diff --git a/core/curl/build b/core/curl/build
new file mode 100755 (executable)
index 0000000..ac49964
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-ipv6 \
+    --enable-unix-sockets \
+    --enable-hidden-symbols \
+    --without-libidn \
+    --without-libidn2 \
+    --disable-manual \
+    --disable-ldap \
+    --disable-ares \
+    --without-librtmp \
+    --without-icu \
+    --without-libpsl \
+    --with-pic \
+    --with-openssl \
+    --with-ca-fallback
+
+make curl_LDFLAGS=-all-static
+make DESTDIR="$1" install
diff --git a/core/curl/checksums b/core/curl/checksums
new file mode 100644 (file)
index 0000000..efca4bf
--- /dev/null
@@ -0,0 +1 @@
+0f64582c54282f31c0de9f0a1a596b182776bd4df9a4c4a2a41bbeb54f62594b
diff --git a/core/curl/depends b/core/curl/depends
new file mode 100644 (file)
index 0000000..9ee911a
--- /dev/null
@@ -0,0 +1,2 @@
+libressl
+zlib
diff --git a/core/curl/sources b/core/curl/sources
new file mode 100644 (file)
index 0000000..4c9b3f0
--- /dev/null
@@ -0,0 +1 @@
+https://curl.haxx.se/download/curl-7.77.0.tar.xz
diff --git a/core/curl/version b/core/curl/version
new file mode 100644 (file)
index 0000000..2df10bc
--- /dev/null
@@ -0,0 +1 @@
+7.77.0 1
diff --git a/core/cyrus-sasl/build b/core/cyrus-sasl/build
new file mode 100755 (executable)
index 0000000..79768ef
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --sbindir=/usr/bin
+
+make
+make DESTDIR="$1" install
diff --git a/core/cyrus-sasl/checksums b/core/cyrus-sasl/checksums
new file mode 100644 (file)
index 0000000..ddb956f
--- /dev/null
@@ -0,0 +1 @@
+26866b1549b00ffd020f188a43c258017fa1c382b3ddadd8201536f72efb05d5  cyrus-sasl-2.1.27.tar.gz
diff --git a/core/cyrus-sasl/depends b/core/cyrus-sasl/depends
new file mode 100644 (file)
index 0000000..75929cf
--- /dev/null
@@ -0,0 +1 @@
+libressl
diff --git a/core/cyrus-sasl/sources b/core/cyrus-sasl/sources
new file mode 100644 (file)
index 0000000..50de422
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.27/cyrus-sasl-2.1.27.tar.gz
diff --git a/core/cyrus-sasl/version b/core/cyrus-sasl/version
new file mode 100644 (file)
index 0000000..65877ed
--- /dev/null
@@ -0,0 +1 @@
+2.1.27 1
diff --git a/core/efibootmgr/build b/core/efibootmgr/build
new file mode 100755 (executable)
index 0000000..dc9cd5d
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+make CC="${CC:-cc}" EFIDIR=/boot/EFI efibootmgr
+
+install -Dm0755 src/efibootmgr   "$1/usr/bin/efibootmgr"
+install -Dm0644 src/efibootmgr.8 "$1/usr/share/man/man8/efibootmgr.8"
diff --git a/core/efibootmgr/checksums b/core/efibootmgr/checksums
new file mode 100644 (file)
index 0000000..abf7ec5
--- /dev/null
@@ -0,0 +1 @@
+06147c05c3f15271fc74c1761eb8fdb8ed3c252786c8d0b4f514a451825ecf3e  97668ae0bce776a36ea2001dea63d376be8274ac.tar.gz
diff --git a/core/efibootmgr/depends b/core/efibootmgr/depends
new file mode 100644 (file)
index 0000000..a0db85a
--- /dev/null
@@ -0,0 +1,3 @@
+efivar
+linux-headers make
+pkgconf make
diff --git a/core/efibootmgr/sources b/core/efibootmgr/sources
new file mode 100644 (file)
index 0000000..3e6cee8
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/rhboot/efibootmgr/archive/97668ae0bce776a36ea2001dea63d376be8274ac.tar.gz
diff --git a/core/efibootmgr/version b/core/efibootmgr/version
new file mode 100644 (file)
index 0000000..5e661b9
--- /dev/null
@@ -0,0 +1 @@
+17 1
diff --git a/core/efivar/build b/core/efivar/build
new file mode 100755 (executable)
index 0000000..762b19f
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh -e
+
+# LTO is used when CFLAGS are unset causing a compilation
+# error with GCC 10. LTO can be set by the user though
+# '-flto-partition=none' is also needed.
+sed -i 's/ -flto//' Make.defaults
+
+for patch in *.patch; do
+    patch -p1 < "$patch"
+done
+
+# Avoid repeating ourselves.
+mk() {
+    make \
+        libdir=/usr/lib/ \
+        bindir=/usr/bin/ \
+        mandir=/usr/share/man/ \
+        includedir=/usr/include/ \
+        "$@"
+}
+
+mk CC="${CC:-cc}"
+mk DESTDIR="$1" install
diff --git a/core/efivar/checksums b/core/efivar/checksums
new file mode 100644 (file)
index 0000000..2b4c6a0
--- /dev/null
@@ -0,0 +1,6 @@
+3c67feb93f901b98fbb897d5ca82931a6698b5bcd6ac34f0815f670d77747b9f  efivar-37.tar.bz2
+475ca086eecabeaaff6111c3e6766f7e31d88a4fb6e0d082e34201e2cfaf295a  00-b98ba8921010d03f46704a476c69861515deb1ca.patch
+7e72f92eb0d03558b9b14ede6a68e29c0051ffe745a8c7a84d06dce6af458351  01-c3c553db85ff10890209d0fe48fb4856ad68e4e0.patch
+c3dcda97408b7d4957d440b1802081d1861a9923c7d4eb5ee6d3c9e31ae668fc  02-0dad6d78a7fb5f6c5fb4a1d646040539db6cf865.patch
+4d53ca9f09e3704aa0cc58f36cf475f9c0e54464305930d0ea9e26e7d0461ef6  03-fdb803402fb32fa6d020bac57a40c7efe4aabb7d.patch
+bc552a018399fb9c976b0087f3407ec34004f8b64a5982af76556dcd790852aa  04-4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e.patch
diff --git a/core/efivar/depends b/core/efivar/depends
new file mode 100644 (file)
index 0000000..1f97bc3
--- /dev/null
@@ -0,0 +1 @@
+linux-headers make
diff --git a/core/efivar/patches/00-b98ba8921010d03f46704a476c69861515deb1ca.patch b/core/efivar/patches/00-b98ba8921010d03f46704a476c69861515deb1ca.patch
new file mode 100644 (file)
index 0000000..f40942f
--- /dev/null
@@ -0,0 +1,56 @@
+From b98ba8921010d03f46704a476c69861515deb1ca Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Mon, 7 Jan 2019 10:30:59 -0500
+Subject: [PATCH] dp.h: make format_guid() handle misaligned guid pointers
+ safely.
+
+GCC 9 adds -Werror=address-of-packed-member, which causes us to see the
+build error reported at
+ https://bugzilla.opensuse.org/show_bug.cgi?id=1120862 .
+
+That bug report shows us the following:
+
+In file included from dp.c:26:
+dp.h: In function 'format_vendor_helper':
+dp.h:120:37: error: taking address of packed member of 'struct <anonymous>' may result in an unaligned pointer value [-Werror=address-of-packed-member]
+  120 |  format_guid(buf, size, off, label, &dp->hw_vendor.vendor_guid);
+      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
+dp.h:74:25: note: in definition of macro 'format_guid'
+   74 |   _rc = efi_guid_to_str(guid, &_guidstr);   \
+      |                         ^~~~
+cc1: all warnings being treated as errors
+
+This patch makes format_guid() use a local variable as a bounce buffer
+in the case that the guid we're passed is aligned as chaotic neutral.
+
+Note that this only fixes this instance and there may be others that bz
+didn't show because it exited too soon, and I don't have a gcc 9 build
+in front of me right now.
+
+Signed-off-by: Peter Jones <pjones@redhat.com>
+---
+ src/dp.h | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/dp.h b/src/dp.h
+index aa4e390..20cb608 100644
+--- a/src/dp.h
++++ b/src/dp.h
+@@ -70,8 +70,15 @@
+ #define format_guid(buf, size, off, dp_type, guid) ({                 \
+               int _rc;                                                \
+               char *_guidstr = NULL;                                  \
+-                                                                      \
+-              _rc = efi_guid_to_str(guid, &_guidstr);                 \
++              efi_guid_t _guid;                                       \
++              const efi_guid_t * const _guid_p =                      \
++                      likely(__alignof__(guid) == sizeof(guid))       \
++                              ? guid                                  \
++                              : &_guid;                               \
++                                                                      \
++              if (unlikely(__alignof__(guid) == sizeof(guid)))        \
++                      memmove(&_guid, guid, sizeof(_guid));           \
++              _rc = efi_guid_to_str(_guid_p, &_guidstr);              \
+               if (_rc < 0) {                                          \
+                       efi_error("could not build %s GUID DP string",  \
+                                 dp_type);                             \
diff --git a/core/efivar/patches/01-c3c553db85ff10890209d0fe48fb4856ad68e4e0.patch b/core/efivar/patches/01-c3c553db85ff10890209d0fe48fb4856ad68e4e0.patch
new file mode 100644 (file)
index 0000000..bbb6a99
--- /dev/null
@@ -0,0 +1,168 @@
+From c3c553db85ff10890209d0fe48fb4856ad68e4e0 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Thu, 21 Feb 2019 15:20:12 -0500
+Subject: [PATCH] Fix all the places -Werror=address-of-packed-member catches.
+
+This gets rid of all the places GCC 9's -Werror=address-of-packed-member
+flags as problematic.
+
+Fixes github issue #123
+
+Signed-off-by: Peter Jones <pjones@redhat.com>
+---
+ src/dp-message.c            |  6 ++++--
+ src/dp.h                    | 12 ++++--------
+ src/guid.c                  |  2 +-
+ src/include/efivar/efivar.h |  2 +-
+ src/ucs2.h                  | 27 +++++++++++++++++++--------
+ 5 files changed, 29 insertions(+), 20 deletions(-)
+
+diff --git a/src/dp-message.c b/src/dp-message.c
+index 3724e5f..9f96466 100644
+--- a/src/dp-message.c
++++ b/src/dp-message.c
+@@ -620,11 +620,13 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
+                         ) / sizeof(efi_ip_addr_t);
+               format(buf, size, off, "Dns", "Dns(");
+               for (int i=0; i < end; i++) {
+-                      const efi_ip_addr_t *addr = &dp->dns.addrs[i];
++                      efi_ip_addr_t addr;
++
++                      memcpy(&addr, &dp->dns.addrs[i], sizeof(addr));
+                       if (i != 0)
+                               format(buf, size, off, "Dns", ",");
+                       format_ip_addr(buf, size, off, "Dns",
+-                                     dp->dns.is_ipv6, addr);
++                                     dp->dns.is_ipv6, &addr);
+               }
+               format(buf, size, off, "Dns", ")");
+               break;
+diff --git a/src/dp.h b/src/dp.h
+index 20cb608..1f921d5 100644
+--- a/src/dp.h
++++ b/src/dp.h
+@@ -71,13 +71,9 @@
+               int _rc;                                                \
+               char *_guidstr = NULL;                                  \
+               efi_guid_t _guid;                                       \
+-              const efi_guid_t * const _guid_p =                      \
+-                      likely(__alignof__(guid) == sizeof(guid))       \
+-                              ? guid                                  \
+-                              : &_guid;                               \
+-                                                                      \
+-              if (unlikely(__alignof__(guid) == sizeof(guid)))        \
+-                      memmove(&_guid, guid, sizeof(_guid));           \
++              const efi_guid_t * const _guid_p = &_guid;              \
++                                                                      \
++              memmove(&_guid, guid, sizeof(_guid));                   \
+               _rc = efi_guid_to_str(_guid_p, &_guidstr);              \
+               if (_rc < 0) {                                          \
+                       efi_error("could not build %s GUID DP string",  \
+@@ -86,7 +82,7 @@
+                       _guidstr = onstack(_guidstr,                    \
+                                          strlen(_guidstr)+1);         \
+                       _rc = format(buf, size, off, dp_type, "%s",     \
+-                                   _guidstr); \
++                                   _guidstr);                         \
+               }                                                       \
+               _rc;                                                    \
+       })
+diff --git a/src/guid.c b/src/guid.c
+index 306c9ff..3156b3b 100644
+--- a/src/guid.c
++++ b/src/guid.c
+@@ -31,7 +31,7 @@
+ extern const efi_guid_t efi_guid_zero;
+ int NONNULL(1, 2) PUBLIC
+-efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b)
++efi_guid_cmp(const void * const a, const void * const b)
+ {
+       return memcmp(a, b, sizeof (efi_guid_t));
+ }
+diff --git a/src/include/efivar/efivar.h b/src/include/efivar/efivar.h
+index 316891c..ad6449d 100644
+--- a/src/include/efivar/efivar.h
++++ b/src/include/efivar/efivar.h
+@@ -128,7 +128,7 @@ extern int efi_symbol_to_guid(const char *symbol, efi_guid_t *guid)
+ extern int efi_guid_is_zero(const efi_guid_t *guid);
+ extern int efi_guid_is_empty(const efi_guid_t *guid);
+-extern int efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b);
++extern int efi_guid_cmp(const void * const a, const void * const b);
+ /* import / export functions */
+ typedef struct efi_variable efi_variable_t;
+diff --git a/src/ucs2.h b/src/ucs2.h
+index dbb5900..edd8367 100644
+--- a/src/ucs2.h
++++ b/src/ucs2.h
+@@ -23,16 +23,21 @@
+       (((val) & ((mask) << (shift))) >> (shift))
+ static inline size_t UNUSED
+-ucs2len(const uint16_t * const s, ssize_t limit)
++ucs2len(const void *vs, ssize_t limit)
+ {
+       ssize_t i;
+-      for (i = 0; i < (limit >= 0 ? limit : i+1) && s[i] != (uint16_t)0; i++)
++      const uint16_t *s = vs;
++      const uint8_t *s8 = vs;
++
++      for (i = 0;
++           i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;
++           i++, s8 += 2, s++)
+               ;
+       return i;
+ }
+ static inline size_t UNUSED
+-ucs2size(const uint16_t * const s, ssize_t limit)
++ucs2size(const void *s, ssize_t limit)
+ {
+       size_t rc = ucs2len(s, limit);
+       rc *= sizeof (uint16_t);
+@@ -69,10 +74,11 @@ utf8size(uint8_t *s, ssize_t limit)
+ }
+ static inline unsigned char * UNUSED
+-ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
++ucs2_to_utf8(const void * const voidchars, ssize_t limit)
+ {
+       ssize_t i, j;
+       unsigned char *ret;
++      const uint16_t * const chars = voidchars;
+       if (limit < 0)
+               limit = ucs2len(chars, -1);
+@@ -124,10 +130,12 @@ ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
+ }
+ static inline ssize_t UNUSED NONNULL(4)
+-utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)
++utf8_to_ucs2(void *ucs2void, ssize_t size, int terminate, uint8_t *utf8)
+ {
+       ssize_t req;
+       ssize_t i, j;
++      uint16_t *ucs2 = ucs2void;
++      uint16_t val16;
+       if (!ucs2 && size > 0) {
+               errno = EINVAL;
+@@ -162,10 +170,13 @@ utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)
+                       val = utf8[i] & 0x7f;
+                       i += 1;
+               }
+-              ucs2[j] = val;
++              val16 = val;
++              ucs2[j] = val16;
++      }
++      if (terminate) {
++              val16 = 0;
++              ucs2[j++] = val16;
+       }
+-      if (terminate)
+-              ucs2[j++] = (uint16_t)0;
+       return j;
+ };
diff --git a/core/efivar/patches/02-0dad6d78a7fb5f6c5fb4a1d646040539db6cf865.patch b/core/efivar/patches/02-0dad6d78a7fb5f6c5fb4a1d646040539db6cf865.patch
new file mode 100644 (file)
index 0000000..e4a4358
--- /dev/null
@@ -0,0 +1,51 @@
+From 0dad6d78a7fb5f6c5fb4a1d646040539db6cf865 Mon Sep 17 00:00:00 2001
+From: Chih-Wei Huang <cwhuang@linux.org.tw>
+Date: Tue, 26 Feb 2019 18:42:20 +0800
+Subject: [PATCH] Fix another error of -Werror=address-of-packed-member
+
+Android 9 clang complains:
+
+external/efivar/src/dp-message.c:367:24: error: taking address of packed member '' of class or structure 'efidp_infiniband' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
+                                    (efi_guid_t *)&dp->infiniband.ioc_guid);
+                                                   ^~~~~~~~~~~~~~~~~~~~~~~
+external/efivar/src/dp.h:76:19: note: expanded from macro 'format_guid'
+                memmove(&_guid, guid, sizeof(_guid));                   \
+                                ^~~~
+1 error generated.
+
+Since commit c3c553d the fifth parameter of format_guid() is treated as
+a const void *. The casting is unnecessary.
+
+Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
+---
+ src/dp-media.c   | 3 +--
+ src/dp-message.c | 2 +-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/dp-media.c b/src/dp-media.c
+index 96a576f..be691c4 100644
+--- a/src/dp-media.c
++++ b/src/dp-media.c
+@@ -46,8 +46,7 @@ _format_media_dn(char *buf, size_t size, const_efidp dp)
+                       break;
+               case EFIDP_HD_SIGNATURE_GUID:
+                       format(buf, size, off, "HD", "GPT,");
+-                      format_guid(buf, size, off, "HD",
+-                                  (efi_guid_t *)dp->hd.signature);
++                      format_guid(buf, size, off, "HD", dp->hd.signature);
+                       format(buf, size, off, "HD",
+                              ",0x%"PRIx64",0x%"PRIx64")",
+                              dp->hd.start, dp->hd.size);
+diff --git a/src/dp-message.c b/src/dp-message.c
+index 9f96466..6b8e907 100644
+--- a/src/dp-message.c
++++ b/src/dp-message.c
+@@ -364,7 +364,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
+                              dp->infiniband.port_gid[1],
+                              dp->infiniband.port_gid[0]);
+                       format_guid(buf, size, off, "Infiniband",
+-                                  (efi_guid_t *)&dp->infiniband.ioc_guid);
++                                  &dp->infiniband.ioc_guid);
+                       format(buf, size, off, "Infiniband",
+                              ",%"PRIu64",%"PRIu64")",
+                              dp->infiniband.target_port_id,
diff --git a/core/efivar/patches/03-fdb803402fb32fa6d020bac57a40c7efe4aabb7d.patch b/core/efivar/patches/03-fdb803402fb32fa6d020bac57a40c7efe4aabb7d.patch
new file mode 100644 (file)
index 0000000..513c0e7
--- /dev/null
@@ -0,0 +1,31 @@
+From fdb803402fb32fa6d020bac57a40c7efe4aabb7d Mon Sep 17 00:00:00 2001
+From: Javier Martinez Canillas <javierm@redhat.com>
+Date: Tue, 5 Mar 2019 17:23:24 +0100
+Subject: [PATCH] ucs2.h: remove unused variable
+
+The const uint16_t pointer is not used since now the two bytes of the
+UCS-2 chars are checked to know if is the termination of the string.
+
+Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
+---
+ src/ucs2.h | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/ucs2.h b/src/ucs2.h
+index edd8367..e0390c3 100644
+--- a/src/ucs2.h
++++ b/src/ucs2.h
+@@ -26,12 +26,11 @@ static inline size_t UNUSED
+ ucs2len(const void *vs, ssize_t limit)
+ {
+       ssize_t i;
+-      const uint16_t *s = vs;
+       const uint8_t *s8 = vs;
+       for (i = 0;
+            i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;
+-           i++, s8 += 2, s++)
++           i++, s8 += 2)
+               ;
+       return i;
+ }
diff --git a/core/efivar/patches/04-4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e.patch b/core/efivar/patches/04-4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e.patch
new file mode 100644 (file)
index 0000000..176e3fd
--- /dev/null
@@ -0,0 +1,28 @@
+From 4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e Mon Sep 17 00:00:00 2001
+From: Javier Martinez Canillas <javierm@redhat.com>
+Date: Tue, 5 Mar 2019 17:23:32 +0100
+Subject: [PATCH] ucs2.h: fix logic that checks for UCS-2 string termination
+
+Currently the loop to count the lenght of the UCS-2 string ends if either
+of the two bytes are 0, but 0 is a valid value for UCS-2 character codes.
+
+So only break the loop when 0 is the value for both UCS-2 char bytes.
+
+Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
+---
+ src/ucs2.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ucs2.h b/src/ucs2.h
+index e0390c3..fd8b056 100644
+--- a/src/ucs2.h
++++ b/src/ucs2.h
+@@ -29,7 +29,7 @@ ucs2len(const void *vs, ssize_t limit)
+       const uint8_t *s8 = vs;
+       for (i = 0;
+-           i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;
++           i < (limit >= 0 ? limit : i+1) && !(s8[0] == 0 && s8[1] == 0);
+            i++, s8 += 2)
+               ;
+       return i;
diff --git a/core/efivar/sources b/core/efivar/sources
new file mode 100644 (file)
index 0000000..4833b4a
--- /dev/null
@@ -0,0 +1,6 @@
+https://github.com/rhboot/efivar/releases/download/37/efivar-37.tar.bz2
+patches/00-b98ba8921010d03f46704a476c69861515deb1ca.patch
+patches/01-c3c553db85ff10890209d0fe48fb4856ad68e4e0.patch
+patches/02-0dad6d78a7fb5f6c5fb4a1d646040539db6cf865.patch
+patches/03-fdb803402fb32fa6d020bac57a40c7efe4aabb7d.patch
+patches/04-4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e.patch
diff --git a/core/efivar/version b/core/efivar/version
new file mode 100644 (file)
index 0000000..4189655
--- /dev/null
@@ -0,0 +1 @@
+37 1
diff --git a/core/expat/build b/core/expat/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/expat/checksums b/core/expat/checksums
new file mode 100644 (file)
index 0000000..b4c09e8
--- /dev/null
@@ -0,0 +1 @@
+2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40
diff --git a/core/expat/sources b/core/expat/sources
new file mode 100644 (file)
index 0000000..c60068c
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-2.4.1.tar.bz2
diff --git a/core/expat/version b/core/expat/version
new file mode 100644 (file)
index 0000000..4fcdc2b
--- /dev/null
@@ -0,0 +1 @@
+2.4.1 1
index 786edb0640982b1de7f18e8c3789c74bfbb313c4..085231ba1b63ea220cf6743f7680df218e76feef 100755 (executable)
@@ -6,7 +6,6 @@ cat > config.mak <<EOF
 NO_GETTEXT=YesPlease
 NO_SVN_TESTS=YesPlease
 NO_TCLTK=YesPlease
-NO_EXPAT=YesPlease
 NO_NSEC=YesPlease
 NO_SVN_TESTS=YesPlease
 NO_SYS_POLL_H=1
index 5aa6296eb8b73b972178d9753080d98884400601..a465164135121d247cdb8dfa1be5d33297dba06b 100644 (file)
@@ -1,4 +1,5 @@
 curl     make
+libevent
 libressl make
 perl
 python
index 555ff8c1f70992062cfc7f7709a11208d1e22ab7..e10fdcb0e9eb56fd886efa838b8c914fe8f42a14 100644 (file)
@@ -1 +1 @@
-2.32.0 2
+2.32.0 1
diff --git a/core/gnupg2/build b/core/gnupg2/build
new file mode 100755 (executable)
index 0000000..0f1cd0e
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+
+./configure --prefix=/usr \
+            --sbindir=/usr/bin \
+            --libexecdir=/usr/lib/gnupg \
+            --disable-gnutls \
+            --enable-symcryptrun \
+            --enable-gpg-is-gpg2 \
+            --disable-ldap \
+            --disable-nls
+
+make
+make DESTDIR="$1" install
+
+ln -s /usr/bin/gpg2 "$1/usr/bin/gpg"
+ln -s /usr/bin/gpgv2 "$1/usr/bin/gpgv"
diff --git a/core/gnupg2/checksums b/core/gnupg2/checksums
new file mode 100644 (file)
index 0000000..9d2b106
--- /dev/null
@@ -0,0 +1 @@
+c498db346a9b9a4b399e514c8f56dfc0a888ce8f327f10376ff984452cd154ec
diff --git a/core/gnupg2/depends b/core/gnupg2/depends
new file mode 100644 (file)
index 0000000..e893451
--- /dev/null
@@ -0,0 +1,6 @@
+libassuan
+libgcrypt
+libgpg-error
+libksba
+npth
+pinentry
diff --git a/core/gnupg2/sources b/core/gnupg2/sources
new file mode 100644 (file)
index 0000000..a6697cd
--- /dev/null
@@ -0,0 +1 @@
+https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.3.1.tar.bz2
diff --git a/core/gnupg2/version b/core/gnupg2/version
new file mode 100644 (file)
index 0000000..28ce77d
--- /dev/null
@@ -0,0 +1 @@
+2.3.1 1 
diff --git a/core/gzip/build b/core/gzip/build
new file mode 100755 (executable)
index 0000000..9367c7c
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+make CC="${CC:-cc} -static"
+
+install -Dm755 pigz   "$1/usr/bin/pigz"
+install -Dm755 unpigz "$1/usr/bin/unpigz"
+install -Dm644 pigz.1 "$1/usr/share/man/man1/pigz.1"
+
+ln -sf pigz   "$1/usr/bin/gzip"
+ln -sf pigz   "$1/usr/bin/zcat"
+ln -sf unpigz "$1/usr/bin/gunzip"
+ln -sf pigz.1 "$1/usr/share/man/man1/gzip.1"
diff --git a/core/gzip/checksums b/core/gzip/checksums
new file mode 100644 (file)
index 0000000..60713b9
--- /dev/null
@@ -0,0 +1 @@
+2eed7b0d7449d1d70903f2a62cd6005d262eb3a8c9e98687bc8cbb5809db2a7d
diff --git a/core/gzip/sources b/core/gzip/sources
new file mode 100644 (file)
index 0000000..1cd53f6
--- /dev/null
@@ -0,0 +1 @@
+https://zlib.net/pigz/pigz-2.6.tar.gz
diff --git a/core/gzip/version b/core/gzip/version
new file mode 100644 (file)
index 0000000..82096ec
--- /dev/null
@@ -0,0 +1 @@
+1.10 1
diff --git a/core/isync/build b/core/isync/build
new file mode 100755 (executable)
index 0000000..26df476
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --with-sasl
+
+make
+make DESTDIR="$1" install
diff --git a/core/isync/checksums b/core/isync/checksums
new file mode 100644 (file)
index 0000000..6de528b
--- /dev/null
@@ -0,0 +1 @@
+1935e7ed412fd6b5928aaea656f290aa8d3222c5feda31534903934ce4755343
diff --git a/core/isync/depends b/core/isync/depends
new file mode 100644 (file)
index 0000000..04142b6
--- /dev/null
@@ -0,0 +1,3 @@
+cyrus-sasl
+libressl
+zlib
diff --git a/core/isync/sources b/core/isync/sources
new file mode 100644 (file)
index 0000000..1ce49ee
--- /dev/null
@@ -0,0 +1 @@
+https://downloads.sourceforge.net/sourceforge/isync/isync-1.4.2.tar.gz
diff --git a/core/isync/version b/core/isync/version
new file mode 100644 (file)
index 0000000..4ff136a
--- /dev/null
@@ -0,0 +1 @@
+1.4.2 1
diff --git a/core/libassuan/build b/core/libassuan/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/libassuan/checksums b/core/libassuan/checksums
new file mode 100644 (file)
index 0000000..919aae4
--- /dev/null
@@ -0,0 +1 @@
+8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4
diff --git a/core/libassuan/depends b/core/libassuan/depends
new file mode 100644 (file)
index 0000000..546d074
--- /dev/null
@@ -0,0 +1 @@
+libgpg-error
diff --git a/core/libassuan/sources b/core/libassuan/sources
new file mode 100644 (file)
index 0000000..f9faaa1
--- /dev/null
@@ -0,0 +1 @@
+https://gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.5.tar.bz2
diff --git a/core/libassuan/version b/core/libassuan/version
new file mode 100644 (file)
index 0000000..5bda085
--- /dev/null
@@ -0,0 +1 @@
+2.5.5 1 
diff --git a/core/libedit/build b/core/libedit/build
new file mode 100755 (executable)
index 0000000..eab227f
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+# Fixes building with clang when clang doesn't include stdc-predef.h by default,
+# which is where the required macro __STDC_ISO_10646__ is defined.
+sed -i '31 a #include <stdc-predef.h>' src/chartype.h
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/libedit/checksums b/core/libedit/checksums
new file mode 100644 (file)
index 0000000..34960ac
--- /dev/null
@@ -0,0 +1 @@
+0220bc2047e927c0c1984ef5f7b4eb2a9469a5b7bf12ba573ca3b23ca02bbb6f
diff --git a/core/libedit/depends b/core/libedit/depends
new file mode 100644 (file)
index 0000000..6a470ff
--- /dev/null
@@ -0,0 +1 @@
+ncurses
diff --git a/core/libedit/sources b/core/libedit/sources
new file mode 100644 (file)
index 0000000..e1ed04f
--- /dev/null
@@ -0,0 +1 @@
+https://www.thrysoee.dk/editline/libedit-20210522-3.1.tar.gz
diff --git a/core/libedit/version b/core/libedit/version
new file mode 100644 (file)
index 0000000..ddf1c9b
--- /dev/null
@@ -0,0 +1 @@
+20210522-3.1 1
diff --git a/core/libevent/build b/core/libevent/build
new file mode 100755 (executable)
index 0000000..7ca84fc
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/core/libevent/checksums b/core/libevent/checksums
new file mode 100644 (file)
index 0000000..dc8fe3c
--- /dev/null
@@ -0,0 +1 @@
+92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb  libevent-2.1.12-stable.tar.gz
diff --git a/core/libevent/sources b/core/libevent/sources
new file mode 100644 (file)
index 0000000..ab57f04
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
diff --git a/core/libevent/version b/core/libevent/version
new file mode 100644 (file)
index 0000000..19d8e60
--- /dev/null
@@ -0,0 +1 @@
+2.1.12 1
diff --git a/core/libffi/build b/core/libffi/build
new file mode 100755 (executable)
index 0000000..7f3e4bf
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --with-pic
+
+make
+make DESTDIR="$1" install
+
+# Maintain compatibility and avoid the need
+# for rebuilds of all packages linking to
+# libffi.
+ln -s libffi.so.8 "$1/usr/lib/libffi.so.7"
+#
+# ABI incompatibility only affects AArch64.
+# See: https://github.com/libffi/libffi/commit/c02c341
+#      https://github.com/libffi/libffi/issues/528
+ln -s libffi.so.7 "$1/usr/lib/libffi.so.6"
diff --git a/core/libffi/checksums b/core/libffi/checksums
new file mode 100644 (file)
index 0000000..14695d6
--- /dev/null
@@ -0,0 +1 @@
+540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620
diff --git a/core/libffi/depends b/core/libffi/depends
new file mode 100644 (file)
index 0000000..1f97bc3
--- /dev/null
@@ -0,0 +1 @@
+linux-headers make
diff --git a/core/libffi/sources b/core/libffi/sources
new file mode 100644 (file)
index 0000000..a966e96
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz
diff --git a/core/libffi/version b/core/libffi/version
new file mode 100644 (file)
index 0000000..7675fd4
--- /dev/null
@@ -0,0 +1 @@
+3.4.2 1
diff --git a/core/libgcrypt/build b/core/libgcrypt/build
new file mode 100755 (executable)
index 0000000..80ce93e
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man \
+    --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/core/libgcrypt/checksums b/core/libgcrypt/checksums
new file mode 100644 (file)
index 0000000..b0b3958
--- /dev/null
@@ -0,0 +1 @@
+97ebe4f94e2f7e35b752194ce15a0f3c66324e0ff6af26659bbfb5ff2ec328fd
diff --git a/core/libgcrypt/depends b/core/libgcrypt/depends
new file mode 100644 (file)
index 0000000..546d074
--- /dev/null
@@ -0,0 +1 @@
+libgpg-error
diff --git a/core/libgcrypt/sources b/core/libgcrypt/sources
new file mode 100644 (file)
index 0000000..dcf4bee
--- /dev/null
@@ -0,0 +1 @@
+https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.9.3.tar.bz2
diff --git a/core/libgcrypt/version b/core/libgcrypt/version
new file mode 100644 (file)
index 0000000..c82debe
--- /dev/null
@@ -0,0 +1 @@
+1.9.3 1
diff --git a/core/libgpg-error/build b/core/libgpg-error/build
new file mode 100755 (executable)
index 0000000..80ce93e
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man \
+    --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/core/libgpg-error/checksums b/core/libgpg-error/checksums
new file mode 100644 (file)
index 0000000..4a11e12
--- /dev/null
@@ -0,0 +1 @@
+fc07e70f6c615f8c4f590a8e37a9b8dd2e2ca1e9408f8e60459c67452b925e23
diff --git a/core/libgpg-error/sources b/core/libgpg-error/sources
new file mode 100644 (file)
index 0000000..2be693a
--- /dev/null
@@ -0,0 +1 @@
+https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.42.tar.bz2
diff --git a/core/libgpg-error/version b/core/libgpg-error/version
new file mode 100644 (file)
index 0000000..8fce8e6
--- /dev/null
@@ -0,0 +1 @@
+1.42 1
diff --git a/core/libksba/build b/core/libksba/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/libksba/checksums b/core/libksba/checksums
new file mode 100644 (file)
index 0000000..dabd54a
--- /dev/null
@@ -0,0 +1 @@
+dad683e6f2d915d880aa4bed5cea9a115690b8935b78a1bbe01669189307a48b
diff --git a/core/libksba/sources b/core/libksba/sources
new file mode 100644 (file)
index 0000000..b6811a0
--- /dev/null
@@ -0,0 +1 @@
+https://gnupg.org/ftp/gcrypt/libksba/libksba-1.6.0.tar.bz2
diff --git a/core/libksba/version b/core/libksba/version
new file mode 100644 (file)
index 0000000..bfa5a6a
--- /dev/null
@@ -0,0 +1 @@
+1.6.0 1
diff --git a/core/libressl/build b/core/libressl/build
new file mode 100755 (executable)
index 0000000..efe55ab
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc
+
+make
+make DESTDIR="$1" install
+
+install -Dm 755 update-certdata.sh "$1/etc/ssl"
diff --git a/core/libressl/checksums b/core/libressl/checksums
new file mode 100644 (file)
index 0000000..a523f3a
--- /dev/null
@@ -0,0 +1,2 @@
+a471565b36ccd1a70d0bd7d37c6e95c43a26a62829b487d9d2cdebfe58be3066
+a75b76146a4ec6be2cb72f4334f29459cb0769659223179be1eb96851d0a7afc
diff --git a/core/libressl/files/update-certdata.sh b/core/libressl/files/update-certdata.sh
new file mode 100755 (executable)
index 0000000..6db69c7
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+cd /etc/ssl && {
+    curl -LO https://curl.haxx.se/ca/cacert.pem
+    mv -f cacert.pem cert.pem
+    printf '%s\n' "${0##*/}: updated cert.pem"
+}
diff --git a/core/libressl/post-install b/core/libressl/post-install
new file mode 100755 (executable)
index 0000000..c12dca7
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/etc/ssl/update-certdata.sh
diff --git a/core/libressl/sources b/core/libressl/sources
new file mode 100644 (file)
index 0000000..79ed0b2
--- /dev/null
@@ -0,0 +1,2 @@
+https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.3.3.tar.gz
+files/update-certdata.sh
diff --git a/core/libressl/version b/core/libressl/version
new file mode 100644 (file)
index 0000000..e82f87f
--- /dev/null
@@ -0,0 +1 @@
+3.3.3 1
diff --git a/core/libtermkey/build b/core/libtermkey/build
new file mode 100755 (executable)
index 0000000..391e7ae
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+patch -p1 < static-no-libtool.patch
+
+make PREFIX=/usr libtermkey.a
+make PREFIX=/usr DESTDIR="$1" install
diff --git a/core/libtermkey/checksums b/core/libtermkey/checksums
new file mode 100644 (file)
index 0000000..992b7ca
--- /dev/null
@@ -0,0 +1,2 @@
+3bf45d27e0eed46f1ff1b9faccefee927617cb5aabaec73a7c896553ba55894c
+3f3a6099d90569671034d2d1a8817522933f24f875112a6f4fc6af96de96ab7a
diff --git a/core/libtermkey/depends b/core/libtermkey/depends
new file mode 100644 (file)
index 0000000..6a470ff
--- /dev/null
@@ -0,0 +1 @@
+ncurses
diff --git a/core/libtermkey/patches/static-no-libtool.patch b/core/libtermkey/patches/static-no-libtool.patch
new file mode 100644 (file)
index 0000000..248937d
--- /dev/null
@@ -0,0 +1,40 @@
+diff --git a/Makefile b/Makefile
+index 199f143..b413b36 100644
+--- a/Makefile
++++ b/Makefile
+@@ -67,11 +67,14 @@ MAN7DIR=$(MANDIR)/man7
+ all: $(LIBRARY) $(DEMOS)
+ %.lo: %.c termkey.h termkey-internal.h
+-      $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) -o $@ -c $<
++      $(CC) $(CFLAGS) -fPIC -o $@ -c $<
+ $(LIBRARY): $(OBJECTS)
+       $(LIBTOOL) --mode=link --tag=CC $(CC) -rpath $(LIBDIR) -version-info $(VERSION_CURRENT):$(VERSION_REVISION):$(VERSION_AGE) $(LDFLAGS) -o $@ $^
++libtermkey.a: $(OBJECTS)
++      $(AR) rc $@ $^
++
+ demo: $(LIBRARY) demo.lo
+       $(LIBTOOL) --mode=link --tag=CC $(CC) -o $@ $^
+@@ -106,7 +109,6 @@ clean: clean-test
+ .PHONY: install
+ install: install-inc install-lib install-man
+-      $(LIBTOOL) --mode=finish $(DESTDIR)$(LIBDIR)
+ install-inc: termkey.h
+       install -d $(DESTDIR)$(INCDIR)
+@@ -114,9 +116,9 @@ install-inc: termkey.h
+       install -d $(DESTDIR)$(LIBDIR)/pkgconfig
+       LIBDIR=$(LIBDIR) INCDIR=$(INCDIR) VERSION=$(VERSION) sh termkey.pc.sh >$(DESTDIR)$(LIBDIR)/pkgconfig/termkey.pc
+-install-lib: $(LIBRARY)
++install-lib: libtermkey.a
+       install -d $(DESTDIR)$(LIBDIR)
+-      $(LIBTOOL) --mode=install install libtermkey.la $(DESTDIR)$(LIBDIR)/libtermkey.la
++      install libtermkey.a $(DESTDIR)$(LIBDIR)/libtermkey.a
+ install-man:
+       install -d $(DESTDIR)$(MAN3DIR)
diff --git a/core/libtermkey/sources b/core/libtermkey/sources
new file mode 100644 (file)
index 0000000..b6e2878
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/unofficial-mirror/libtermkey/archive/refs/tags/v0.22.tar.gz
+patches/static-no-libtool.patch
diff --git a/core/libtermkey/version b/core/libtermkey/version
new file mode 100644 (file)
index 0000000..c9ec35a
--- /dev/null
@@ -0,0 +1 @@
+0.22 1
diff --git a/core/libudev-zero/build b/core/libudev-zero/build
new file mode 100755 (executable)
index 0000000..28bda35
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make PREFIX=/usr
+make DESTDIR="$1" PREFIX=/usr install
diff --git a/core/libudev-zero/checksums b/core/libudev-zero/checksums
new file mode 100644 (file)
index 0000000..d75c293
--- /dev/null
@@ -0,0 +1 @@
+23f1046f13403ec217665193e78dad6cdb0af54e105a9aaf8440a846e66a1d62
diff --git a/core/libudev-zero/depends b/core/libudev-zero/depends
new file mode 100644 (file)
index 0000000..1f97bc3
--- /dev/null
@@ -0,0 +1 @@
+linux-headers make
diff --git a/core/libudev-zero/sources b/core/libudev-zero/sources
new file mode 100644 (file)
index 0000000..9aeb574
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/illiliti/libudev-zero/archive/0.5.2.tar.gz
diff --git a/core/libudev-zero/version b/core/libudev-zero/version
new file mode 100644 (file)
index 0000000..b6c7193
--- /dev/null
@@ -0,0 +1 @@
+0.5.2 1
diff --git a/core/libuuid/build b/core/libuuid/build
deleted file mode 100755 (executable)
index 5d55170..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh -e
-
-./configure \
-    --prefix=/usr \
-    --localstatedir=/var \
-    --bindir=/usr/bin \
-    --sbindir=/usr/bin \
-    --libdir=/usr/lib \
-    --without-udev \
-    --without-python \
-    --without-systemd \
-               --disable-all-programs \
-    --enable-libuuid
-
-make
-make DESTDIR="$1" install
-
diff --git a/core/libuuid/checksums b/core/libuuid/checksums
deleted file mode 100644 (file)
index 03c2476..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bd07b7e98839e0359842110525a3032fdb8eaf3a90bedde3dd1652d32d15cce5
diff --git a/core/libuuid/depends b/core/libuuid/depends
deleted file mode 100644 (file)
index 1f97bc3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-linux-headers make
diff --git a/core/libuuid/sources b/core/libuuid/sources
deleted file mode 100644 (file)
index 43f8a92..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://cdn.kernel.org/pub/linux/utils/util-linux/v2.37/util-linux-2.37.tar.xz
diff --git a/core/libuuid/version b/core/libuuid/version
deleted file mode 100644 (file)
index c304d36..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2.37 1
diff --git a/core/links/build b/core/links/build
new file mode 100755 (executable)
index 0000000..13959c4
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --mandir=/usr/share/man
+
+make
+make DESTDIR="$1" install
diff --git a/core/links/checksums b/core/links/checksums
new file mode 100644 (file)
index 0000000..46935c6
--- /dev/null
@@ -0,0 +1 @@
+6660d202f521fd18bf5184c3f1732d1fa7426a103374277ad1cdb8e57ce6ac45
diff --git a/core/links/depends b/core/links/depends
new file mode 100644 (file)
index 0000000..d8ff222
--- /dev/null
@@ -0,0 +1,6 @@
+bzip2
+libevent
+libressl
+xz
+zlib
+zstd
diff --git a/core/links/sources b/core/links/sources
new file mode 100644 (file)
index 0000000..1f6f098
--- /dev/null
@@ -0,0 +1 @@
+http://links.twibright.com/download/links-2.23.tar.bz2
diff --git a/core/links/version b/core/links/version
new file mode 100644 (file)
index 0000000..638f155
--- /dev/null
@@ -0,0 +1 @@
+2.23 1
diff --git a/core/linux-headers/build b/core/linux-headers/build
new file mode 100755 (executable)
index 0000000..9f5ea9b
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+make HOSTCC="${CC:-cc}" headers
+
+# The headers require rsync for installation, this command
+# simply does the equivalent using find.
+find usr/include -name \*.h -type f | while read -r file; do
+    install -Dm644 "$file" "$1/$file"
+done
diff --git a/core/linux-headers/checksums b/core/linux-headers/checksums
new file mode 100644 (file)
index 0000000..0d4f71b
--- /dev/null
@@ -0,0 +1 @@
+ed1661128c9bd3e8c9f55e345f715b90fefcf6b127c77e0286773242e7a14e5c
diff --git a/core/linux-headers/sources b/core/linux-headers/sources
new file mode 100644 (file)
index 0000000..6fb2c46
--- /dev/null
@@ -0,0 +1 @@
+https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.1.tar.xz
diff --git a/core/linux-headers/version b/core/linux-headers/version
new file mode 100644 (file)
index 0000000..1209f7e
--- /dev/null
@@ -0,0 +1 @@
+5.10.1 1
index 77f9430527bf7ff1758a08084ab5bb0791084f8a..37c5e9c547bc52995a6a034430e179cf8cfa1c66 100644 (file)
@@ -1,2 +1,2 @@
-9ed1688943a4402d7c904cc4515798cdb20080066efa010fe7e1f2551b423628
+129cb25cd13677aad951ce5c2deb0fe4afc1e9d98950f53b51bdcfb5a73afa0e
 9c68d13e4e7496578280c164917e2cb6d34af976ac048bac9931943a5b5371cd
index 4e4a49f9299957b3362a57c602276ff8f606df58..692f0924b0c3c2d4dadac97810166d5bb21da8dd 100755 (executable)
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec cc -std=c99 "$@"
\ No newline at end of file
+exec cc -std=c99 "$@"
index 8993017ded840429983063ea8c589bd48d8b04c0..39cbad9adb0ecd51ec830e2e15e2f002236d5b1f 100644 (file)
@@ -1,2 +1,2 @@
-https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0/llvm-project-12.0.0.src.tar.xz
-files/c99
\ No newline at end of file
+https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.1/llvm-project-12.0.1.src.tar.xz
+files/c99
index 33bf4988118749901a298337b3ec030eb0c840d3..0ada45b8a2fb0b7f64849055d3b26ce9e281ebe8 100644 (file)
@@ -1 +1 @@
-12.0.0 3
+12.0.1 1
diff --git a/core/lua/build b/core/lua/build
deleted file mode 100755 (executable)
index a4c24d0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh -e
-
-make MYCFLAGS="$CFLAGS -fPIC" MYLDFLAGS="$LDFLAGS" CC="$CC" posix
-
-make INSTALL_TOP="$1/usr" INSTALL_MAN="$1/usr/share/man/man1" \
-                INSTALL_DATA="cp -d" install
-
-install -Dm 644 lua.pc "$1/usr/lib/pkgconfig/lua.pc"
diff --git a/core/lua/checksums b/core/lua/checksums
deleted file mode 100644 (file)
index a39a5fe..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-b9e2e4aad6789b3b63a056d442f7b39f0ecfca3ae0f1fc0ae4e9614401b69f4b
-aae37b7805bbe73d7fd296c4c06762e994d342ef0ae761553ee75e6e8039de46
diff --git a/core/lua/depends b/core/lua/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/core/lua/files/lua.pc b/core/lua/files/lua.pc
deleted file mode 100644 (file)
index 8d2de2e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-V=5.2
-R=5.2.4
-
-prefix=/usr
-INSTALL_BIN=${prefix}/bin
-INSTALL_INC=${prefix}/include
-INSTALL_LIB=${prefix}/lib
-INSTALL_MAN=${prefix}/man/man1
-INSTALL_LMOD=${prefix}/share/lua/${V}
-INSTALL_CMOD=${prefix}/lib/lua/${V}
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: Lua
-Description: An Extensible Extension Language
-Version: ${R}
-Requires: 
-Libs: -L${libdir} -llua -lm
-Cflags: -I${includedir}
diff --git a/core/lua/sources b/core/lua/sources
deleted file mode 100644 (file)
index ad64a52..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-https://www.lua.org/ftp/lua-5.2.4.tar.gz
-files/lua.pc
diff --git a/core/lua/version b/core/lua/version
deleted file mode 100644 (file)
index 7560c29..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5.2.4 1 
diff --git a/core/make/build b/core/make/build
new file mode 100755 (executable)
index 0000000..206a476
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+export CFLAGS="$CFLAGS -static"
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/make/checksums b/core/make/checksums
new file mode 100644 (file)
index 0000000..8ce10bc
--- /dev/null
@@ -0,0 +1 @@
+e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19  make-4.3.tar.gz
diff --git a/core/make/sources b/core/make/sources
new file mode 100644 (file)
index 0000000..038f47f
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/make/make-4.3.tar.gz
diff --git a/core/make/version b/core/make/version
new file mode 100644 (file)
index 0000000..aead541
--- /dev/null
@@ -0,0 +1 @@
+4.3 1
diff --git a/core/man-pages/build b/core/man-pages/build
new file mode 100755 (executable)
index 0000000..c4679ad
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make -C man-pages       prefix=/usr DESTDIR="$1" install
+make -C man-pages-posix prefix=/usr DESTDIR="$1" install
diff --git a/core/man-pages/checksums b/core/man-pages/checksums
new file mode 100644 (file)
index 0000000..24c6b2e
--- /dev/null
@@ -0,0 +1,2 @@
+75102535ba119f2f223f674d84e1dcdaebf0a5ffd639b3c2e6cb0a0e34768762
+ce67bb25b5048b20dad772e405a83f4bc70faf051afa289361c81f9660318bc3
diff --git a/core/man-pages/sources b/core/man-pages/sources
new file mode 100644 (file)
index 0000000..30c4b4f
--- /dev/null
@@ -0,0 +1,3 @@
+https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/man-pages-5.10.tar.xz man-pages
+https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/man-pages-posix/man-pages-posix-2017-a.tar.xz man-pages-posix
+
diff --git a/core/man-pages/version b/core/man-pages/version
new file mode 100644 (file)
index 0000000..a0236a8
--- /dev/null
@@ -0,0 +1 @@
+5.10 1
diff --git a/core/mandoc/build b/core/mandoc/build
new file mode 100755 (executable)
index 0000000..bf3f40e
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+patch -p1 < mandoc-no-warn.patch
+
+sed -i '/int dummy/d'         ./compat_*.c
+sed -i 's,"more -s","less",g' main.c
+sed -i "s/CC=.*/CC='$CC'/"    configure
+
+cat > configure.local <<EOF
+PREFIX=/usr
+MANDIR=/usr/share/man
+LIBDIR=/usr/lib
+SBINDIR=/usr/bin
+CC="${CC:-cc}"
+CFLAGS="$CFLAGS"
+LN="ln -sf"
+EOF
+
+./configure
+
+make
+make -j1 DESTDIR="$1" base-install
diff --git a/core/mandoc/checksums b/core/mandoc/checksums
new file mode 100644 (file)
index 0000000..babcf78
--- /dev/null
@@ -0,0 +1,2 @@
+8219b42cb56fc07b2aa660574e6211ac38eefdbf21f41b698d3348793ba5d8f7  mandoc-1.14.5.tar.gz
+eaff34c03d1b6741cf6b24a394c63ad6096e4391578414b9da986294ee817a25  mandoc-no-warn.patch
diff --git a/core/mandoc/depends b/core/mandoc/depends
new file mode 100644 (file)
index 0000000..f22003e
--- /dev/null
@@ -0,0 +1 @@
+zlib
diff --git a/core/mandoc/patches/mandoc-no-warn.patch b/core/mandoc/patches/mandoc-no-warn.patch
new file mode 100644 (file)
index 0000000..1f49a12
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/main.c b/main.c
+index b91c158..514508a 100644
+--- a/main.c
++++ b/main.c
+@@ -750,8 +750,6 @@ fs_lookup(const struct manpaths *paths, size_t ipath,
+       return globres != -1;
+ found:
+-      warnx("outdated mandoc.db lacks %s(%s) entry, run %s %s",
+-          name, sec, BINM_MAKEWHATIS, paths->paths[ipath]);
+       if (res == NULL) {
+               free(file);
+               return 1;
diff --git a/core/mandoc/sources b/core/mandoc/sources
new file mode 100644 (file)
index 0000000..d012518
--- /dev/null
@@ -0,0 +1,2 @@
+https://fossies.org/linux/misc/mandoc-1.14.5.tar.gz
+patches/mandoc-no-warn.patch
diff --git a/core/mandoc/version b/core/mandoc/version
new file mode 100644 (file)
index 0000000..f3df4c4
--- /dev/null
@@ -0,0 +1 @@
+1.14.5 1
diff --git a/core/musl/build b/core/musl/build
new file mode 100755 (executable)
index 0000000..a003f10
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh -e
+
+# Uncomment if using valgrind or similar.
+# :>nostrip
+
+./configure \
+    --prefix=/usr \
+    --syslibdir=/usr/lib \
+# Uncomment if using valgrind or similar.
+#   --enable-debug
+
+make
+make DESTDIR="$1" install
+
+mkdir -p "$1/usr/bin"
+ln -s  /usr/lib/ld-musl-x86_64.so.1 "$1/usr/bin/ldd"
+
+# Fix incorrect symlink to libc.so.
+ln -sf libc.so "$1/usr/lib/ld-musl-x86_64.so.1"
+
+# Install BSD compatibility headers.
+install -Dm 755 cdefs.h "$1/usr/include/sys/cdefs.h"
+install -Dm 755 queue.h "$1/usr/include/sys/queue.h"
+install -Dm 755 tree.h  "$1/usr/include/sys/tree.h"
+
+# Install getconf.
+cc getconf.c -o "$1/usr/bin/getconf"
+cc getent.c  -o "$1/usr/bin/getent"
diff --git a/core/musl/checksums b/core/musl/checksums
new file mode 100644 (file)
index 0000000..5fab64a
--- /dev/null
@@ -0,0 +1,6 @@
+9b969322012d796dc23dda27a35866034fa67d8fb67e0e2c45c913c3d43219dd
+a83818007069c222d24d283a99348c2376f35bac3282d8142004c47d3dc5ecac
+c13407edd0e33be73cae72514cb234f8612e1c0e54401c9448daffd3a240158b
+e1e498a79bf160a5766fa560f2b07b206fe89fe21a62600c77d72e00a6992f92
+d87d0cbb3690ae2c5d8cc218349fd8278b93855dd625deaf7ae50e320aad247c
+b323f20c9bf560a13c877eb05428bc4a203383697bac763e7b12865db5c5922c
diff --git a/core/musl/files/cdefs.h b/core/musl/files/cdefs.h
new file mode 100755 (executable)
index 0000000..a60f0e2
--- /dev/null
@@ -0,0 +1,24 @@
+#undef __P
+#undef __PMT
+
+#define __P(args)      args
+#define __PMT(args)    args
+
+#define __CONCAT(x,y)  x ## y
+#define __STRING(x)    #x
+
+#ifdef  __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS   }
+#else
+# define __BEGIN_DECLS
+# define __END_DECLS
+#endif
+
+#if defined(__GNUC__) && !defined(__cplusplus)
+# define __THROW       __attribute__ ((__nothrow__))
+# define __NTH(fct)    __attribute__ ((__nothrow__)) fct
+#else
+# define __THROW
+# define __NTH(fct)     fct
+#endif
diff --git a/core/musl/files/getconf.c b/core/musl/files/getconf.c
new file mode 100644 (file)
index 0000000..c423524
--- /dev/null
@@ -0,0 +1,338 @@
+/*-
+ * Copyright (c) 1996, 1998 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by J.T. Conklin.
+ *
+ * Mostly rewritten to be used in Alpine Linux (with musl c-library)
+ * by Timo Teräs.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <values.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+struct conf_variable {
+       const char *name;
+       enum { SYSCONF, CONFSTR, PATHCONF, CONSTANT, UCONSTANT, NUM_TYPES } type;
+       long value;
+};
+
+static const struct conf_variable conf_table[] = {
+{ "PATH",                      CONFSTR,        _CS_PATH                },
+
+/* Utility Limit Minimum Values */
+{ "POSIX2_BC_BASE_MAX",                CONSTANT,       _POSIX2_BC_BASE_MAX     },
+{ "POSIX2_BC_DIM_MAX",         CONSTANT,       _POSIX2_BC_DIM_MAX      },
+{ "POSIX2_BC_SCALE_MAX",       CONSTANT,       _POSIX2_BC_SCALE_MAX    },
+{ "POSIX2_BC_STRING_MAX",      CONSTANT,       _POSIX2_BC_STRING_MAX   },
+{ "POSIX2_COLL_WEIGHTS_MAX",   CONSTANT,       _POSIX2_COLL_WEIGHTS_MAX },
+{ "POSIX2_EXPR_NEST_MAX",      CONSTANT,       _POSIX2_EXPR_NEST_MAX   },
+{ "POSIX2_LINE_MAX",           CONSTANT,       _POSIX2_LINE_MAX        },
+{ "POSIX2_RE_DUP_MAX",         CONSTANT,       _POSIX2_RE_DUP_MAX      },
+{ "POSIX2_VERSION",            CONSTANT,       _POSIX2_VERSION         },
+
+/* POSIX.1 Minimum Values */
+{ "_POSIX_AIO_LISTIO_MAX",     CONSTANT,       _POSIX_AIO_LISTIO_MAX   },
+{ "_POSIX_AIO_MAX",            CONSTANT,       _POSIX_AIO_MAX          },
+{ "_POSIX_ARG_MAX",            CONSTANT,       _POSIX_ARG_MAX          },
+{ "_POSIX_CHILD_MAX",          CONSTANT,       _POSIX_CHILD_MAX        },
+{ "_POSIX_LINK_MAX",           CONSTANT,       _POSIX_LINK_MAX         },
+{ "_POSIX_MAX_CANON",          CONSTANT,       _POSIX_MAX_CANON        },
+{ "_POSIX_MAX_INPUT",          CONSTANT,       _POSIX_MAX_INPUT        },
+{ "_POSIX_MQ_OPEN_MAX",                CONSTANT,       _POSIX_MQ_OPEN_MAX      },
+{ "_POSIX_MQ_PRIO_MAX",                CONSTANT,       _POSIX_MQ_PRIO_MAX      },
+{ "_POSIX_NAME_MAX",           CONSTANT,       _POSIX_NAME_MAX         },
+{ "_POSIX_NGROUPS_MAX",                CONSTANT,       _POSIX_NGROUPS_MAX      },
+{ "_POSIX_OPEN_MAX",           CONSTANT,       _POSIX_OPEN_MAX         },
+{ "_POSIX_PATH_MAX",           CONSTANT,       _POSIX_PATH_MAX         },
+{ "_POSIX_PIPE_BUF",           CONSTANT,       _POSIX_PIPE_BUF         },
+{ "_POSIX_SSIZE_MAX",          CONSTANT,       _POSIX_SSIZE_MAX        },
+{ "_POSIX_STREAM_MAX",         CONSTANT,       _POSIX_STREAM_MAX       },
+{ "_POSIX_TZNAME_MAX",         CONSTANT,       _POSIX_TZNAME_MAX       },
+
+/* Symbolic Utility Limits */
+{ "BC_BASE_MAX",               SYSCONF,        _SC_BC_BASE_MAX         },
+{ "BC_DIM_MAX",                        SYSCONF,        _SC_BC_DIM_MAX          },
+{ "BC_SCALE_MAX",              SYSCONF,        _SC_BC_SCALE_MAX        },
+{ "BC_STRING_MAX",             SYSCONF,        _SC_BC_STRING_MAX       },
+{ "COLL_WEIGHTS_MAX",          SYSCONF,        _SC_COLL_WEIGHTS_MAX    },
+{ "EXPR_NEST_MAX",             SYSCONF,        _SC_EXPR_NEST_MAX       },
+{ "LINE_MAX",                  SYSCONF,        _SC_LINE_MAX            },
+{ "RE_DUP_MAX",                        SYSCONF,        _SC_RE_DUP_MAX          },
+
+/* Optional Facility Configuration Values */
+{ "_POSIX2_C_BIND",            SYSCONF,        _SC_2_C_BIND            },
+{ "POSIX2_C_DEV",              SYSCONF,        _SC_2_C_DEV             },
+{ "POSIX2_CHAR_TERM",          SYSCONF,        _SC_2_CHAR_TERM         },
+{ "POSIX2_FORT_DEV",           SYSCONF,        _SC_2_FORT_DEV          },
+{ "POSIX2_FORT_RUN",           SYSCONF,        _SC_2_FORT_RUN          },
+{ "POSIX2_LOCALEDEF",          SYSCONF,        _SC_2_LOCALEDEF         },
+{ "POSIX2_SW_DEV",             SYSCONF,        _SC_2_SW_DEV            },
+{ "POSIX2_UPE",                        SYSCONF,        _SC_2_UPE               },
+
+/* POSIX.1 Configurable System Variables */
+{ "AIO_LISTIO_MAX",            SYSCONF,        _SC_AIO_LISTIO_MAX      },
+{ "AIO_MAX",                   SYSCONF,        _SC_AIO_MAX             },
+{ "ARG_MAX",                   SYSCONF,        _SC_ARG_MAX             },
+{ "CHILD_MAX",                 SYSCONF,        _SC_CHILD_MAX           },
+{ "CLK_TCK",                   SYSCONF,        _SC_CLK_TCK             },
+{ "MQ_OPEN_MAX",               SYSCONF,        _SC_MQ_OPEN_MAX         },
+{ "MQ_PRIO_MAX",               SYSCONF,        _SC_MQ_PRIO_MAX         },
+{ "NGROUPS_MAX",               SYSCONF,        _SC_NGROUPS_MAX         },
+{ "OPEN_MAX",                  SYSCONF,        _SC_OPEN_MAX            },
+{ "STREAM_MAX",                        SYSCONF,        _SC_STREAM_MAX          },
+{ "TZNAME_MAX",                        SYSCONF,        _SC_TZNAME_MAX          },
+{ "_POSIX_JOB_CONTROL",                SYSCONF,        _SC_JOB_CONTROL         },
+{ "_POSIX_SAVED_IDS",          SYSCONF,        _SC_SAVED_IDS           },
+{ "_POSIX_VERSION",            SYSCONF,        _SC_VERSION             },
+
+{ "LINK_MAX",                  PATHCONF,       _PC_LINK_MAX            },
+{ "MAX_CANON",                 PATHCONF,       _PC_MAX_CANON           },
+{ "MAX_INPUT",                 PATHCONF,       _PC_MAX_INPUT           },
+{ "NAME_MAX",                  PATHCONF,       _PC_NAME_MAX            },
+{ "PATH_MAX",                  PATHCONF,       _PC_PATH_MAX            },
+{ "PIPE_BUF",                  PATHCONF,       _PC_PIPE_BUF            },
+{ "_POSIX_CHOWN_RESTRICTED",   PATHCONF,       _PC_CHOWN_RESTRICTED    },
+{ "_POSIX_NO_TRUNC",           PATHCONF,       _PC_NO_TRUNC            },
+{ "_POSIX_VDISABLE",           PATHCONF,       _PC_VDISABLE            },
+
+/* POSIX.1b Configurable System Variables */
+{ "PAGESIZE",                  SYSCONF,        _SC_PAGESIZE            },
+{ "_POSIX_ASYNCHRONOUS_IO",    SYSCONF,        _SC_ASYNCHRONOUS_IO     },
+{ "_POSIX_FSYNC",              SYSCONF,        _SC_FSYNC               },
+{ "_POSIX_MAPPED_FILES",       SYSCONF,        _SC_MAPPED_FILES        },
+{ "_POSIX_MEMLOCK",            SYSCONF,        _SC_MEMLOCK             },
+{ "_POSIX_MEMLOCK_RANGE",      SYSCONF,        _SC_MEMLOCK_RANGE       },
+{ "_POSIX_MEMORY_PROTECTION",  SYSCONF,        _SC_MEMORY_PROTECTION   },
+{ "_POSIX_MESSAGE_PASSING",    SYSCONF,        _SC_MESSAGE_PASSING     },
+{ "_POSIX_MONOTONIC_CLOCK",    SYSCONF,        _SC_MONOTONIC_CLOCK     },
+{ "_POSIX_PRIORITY_SCHEDULING", SYSCONF,       _SC_PRIORITY_SCHEDULING },
+{ "_POSIX_SEMAPHORES",         SYSCONF,        _SC_SEMAPHORES          },
+{ "_POSIX_SHARED_MEMORY_OBJECTS", SYSCONF,     _SC_SHARED_MEMORY_OBJECTS },
+{ "_POSIX_SYNCHRONIZED_IO",    SYSCONF,        _SC_SYNCHRONIZED_IO     },
+{ "_POSIX_TIMERS",             SYSCONF,        _SC_TIMERS              },
+
+{ "_POSIX_SYNC_IO",            PATHCONF,       _PC_SYNC_IO             },
+
+/* POSIX.1c Configurable System Variables */
+{ "LOGIN_NAME_MAX",            SYSCONF,        _SC_LOGIN_NAME_MAX      },
+{ "_POSIX_THREADS",            SYSCONF,        _SC_THREADS             },
+
+/* POSIX.1j Configurable System Variables */
+{ "_POSIX_BARRIERS",           SYSCONF,        _SC_BARRIERS            },
+{ "_POSIX_READER_WRITER_LOCKS", SYSCONF,       _SC_READER_WRITER_LOCKS },
+{ "_POSIX_SPIN_LOCKS",         SYSCONF,        _SC_SPIN_LOCKS          },
+
+/* XPG4.2 Configurable System Variables */
+{ "IOV_MAX",                   SYSCONF,        _SC_IOV_MAX             },
+{ "PAGE_SIZE",                 SYSCONF,        _SC_PAGE_SIZE           },
+{ "_XOPEN_SHM",                        SYSCONF,        _SC_XOPEN_SHM           },
+
+/* X/Open CAE Spec. Issue 5 Version 2 Configurable System Variables */
+{ "FILESIZEBITS",              PATHCONF,       _PC_FILESIZEBITS        },
+
+/* POSIX.1-2001 XSI Option Group Configurable System Variables */
+{ "ATEXIT_MAX",                        SYSCONF,        _SC_ATEXIT_MAX          },
+
+/* POSIX.1-2001 TSF Configurable System Variables */
+{ "GETGR_R_SIZE_MAX",          SYSCONF,        _SC_GETGR_R_SIZE_MAX    },
+{ "GETPW_R_SIZE_MAX",          SYSCONF,        _SC_GETPW_R_SIZE_MAX    },
+
+/* Commonly provided extensions */
+{ "_PHYS_PAGES",               SYSCONF,        _SC_PHYS_PAGES          },
+{ "_AVPHYS_PAGES",             SYSCONF,        _SC_AVPHYS_PAGES        },
+{ "_NPROCESSORS_CONF",         SYSCONF,        _SC_NPROCESSORS_CONF    },
+{ "_NPROCESSORS_ONLN",         SYSCONF,        _SC_NPROCESSORS_ONLN    },
+
+/* Data type related extensions */
+{ "CHAR_BIT",                  CONSTANT,       CHAR_BIT                },
+{ "CHAR_MAX",                  CONSTANT,       CHAR_MAX                },
+{ "CHAR_MIN",                  CONSTANT,       CHAR_MIN                },
+{ "INT_MAX",                   CONSTANT,       INT_MAX                 },
+{ "INT_MIN",                   CONSTANT,       INT_MIN                 },
+{ "LONG_BIT",                  CONSTANT,       LONG_BIT                },
+{ "LONG_MAX",                  CONSTANT,       LONG_MAX                },
+{ "LONG_MIN",                  CONSTANT,       LONG_MIN                },
+{ "SCHAR_MAX",                 CONSTANT,       SCHAR_MAX               },
+{ "SCHAR_MIN",                 CONSTANT,       SCHAR_MIN               },
+{ "SHRT_MAX",                  CONSTANT,       SHRT_MAX                },
+{ "SHRT_MIN",                  CONSTANT,       SHRT_MIN                },
+{ "SSIZE_MAX",                 CONSTANT,       SSIZE_MAX               },
+{ "UCHAR_MAX",                 UCONSTANT,      (long) UCHAR_MAX        },
+{ "UINT_MAX",                  UCONSTANT,      (long) UINT_MAX         },
+{ "ULONG_MAX",                 UCONSTANT,      (long) ULONG_MAX        },
+{ "USHRT_MAX",                 UCONSTANT,      (long) USHRT_MAX        },
+{ "WORD_BIT",                  CONSTANT,       WORD_BIT                },
+
+{ NULL, CONSTANT, 0L }
+};
+
+static int all = 0;
+
+static void usage(const char *p)
+{
+       (void)fprintf(stderr, "Usage: %s system_var\n\t%s -a\n"
+           "\t%s path_var pathname\n\t%s -a pathname\n", p, p, p, p);
+       exit(EXIT_FAILURE);
+}
+
+static void print_long(const char *name, long val)
+{
+       if (all) printf("%s = %ld\n", name, val);
+       else printf("%ld\n", val);
+}
+
+static void print_ulong(const char *name, unsigned long val)
+{
+       if (all) printf("%s = %lu\n", name, val);
+       else printf("%lu\n", val);
+}
+
+static void print_string(const char *name, const char *val)
+{
+       if (all) printf("%s = %s\n", name, val);
+       else printf("%s\n", val);
+}
+
+static int print_constant(const struct conf_variable *cp, const char *pathname)
+{
+       print_long(cp->name, cp->value);
+       return 0;
+}
+
+static int print_uconstant(const struct conf_variable *cp, const char *pathname)
+{
+       print_ulong(cp->name, (unsigned long) cp->value);
+       return 0;
+}
+
+static int print_sysconf(const struct conf_variable *cp, const char *pathname)
+{
+       long val;
+
+       errno = 0;
+       if ((val = sysconf((int)cp->value)) == -1) {
+               if (errno != 0) err(EXIT_FAILURE, "sysconf(%ld)", cp->value);
+               return -1;
+       }
+       print_long(cp->name, val);
+       return 0;
+}
+
+static int print_confstr(const struct conf_variable *cp, const char *pathname)
+{
+       size_t len;
+       char *val;
+
+       errno = 0;
+       if ((len = confstr((int)cp->value, NULL, 0)) == 0) goto error;
+       if ((val = malloc(len)) == NULL) err(EXIT_FAILURE, "Can't allocate %zu bytes", len);
+       errno = 0;
+       if (confstr((int)cp->value, val, len) == 0) goto error;
+       print_string(cp->name, val);
+       free(val);
+       return 0;
+error:
+       if (errno != EINVAL) err(EXIT_FAILURE, "confstr(%ld)", cp->value);
+       return -1;
+}
+
+static int print_pathconf(const struct conf_variable *cp, const char *pathname)
+{
+       long val;
+
+       errno = 0;
+       if ((val = pathconf(pathname, (int)cp->value)) == -1) {
+               if (all && errno == EINVAL) return 0;
+               if (errno != 0) err(EXIT_FAILURE, "pathconf(%s, %ld)", pathname, cp->value);
+               return -1;
+       }
+       print_long(cp->name, val);
+       return 0;
+}
+
+typedef int (*handler_t)(const struct conf_variable *cp, const char *pathname);
+static const handler_t type_handlers[NUM_TYPES] = {
+       [SYSCONF]       = print_sysconf,
+       [CONFSTR]       = print_confstr,
+       [PATHCONF]      = print_pathconf,
+       [CONSTANT]      = print_constant,
+       [UCONSTANT]     = print_uconstant,
+};
+
+int main(int argc, char **argv)
+{
+       const char *progname = argv[0];
+       const struct conf_variable *cp;
+       const char *varname, *pathname;
+       int ch, found = 0;
+
+       (void)setlocale(LC_ALL, "");
+       while ((ch = getopt(argc, argv, "a")) != -1) {
+               switch (ch) {
+               case 'a':
+                       all = 1;
+                       break;
+               case '?':
+               default:
+                       usage(progname);
+               }
+       }
+       argc -= optind;
+       argv += optind;
+
+       if (!all) {
+               if (argc == 0)
+                       usage(progname);
+               varname = argv[0];
+               argc--;
+               argv++;
+       } else
+               varname = NULL;
+
+       if (argc > 1)
+               usage(progname);
+       pathname = argv[0];     /* may be NULL */
+
+       for (cp = conf_table; cp->name != NULL; cp++) {
+               if (!all && strcmp(varname, cp->name) != 0) continue;
+               if ((cp->type == PATHCONF) == (pathname != NULL)) {
+                       if (type_handlers[cp->type](cp, pathname) < 0)
+                               print_string(cp->name, "undefined");
+                       found = 1;
+               } else if (!all)
+                       errx(EXIT_FAILURE, "%s: invalid variable type", cp->name);
+       }
+       if (!all && !found) errx(EXIT_FAILURE, "%s: unknown variable", varname);
+       (void)fflush(stdout);
+       return ferror(stdout) ? EXIT_FAILURE : EXIT_SUCCESS;
+}
diff --git a/core/musl/files/getent.c b/core/musl/files/getent.c
new file mode 100644 (file)
index 0000000..b10d75a
--- /dev/null
@@ -0,0 +1,511 @@
+/*-
+ * Copyright (c) 2004-2006 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Luke Mewburn.
+ * Timo Teräs cleaned up the code for use in Alpine Linux with musl libc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/socket.h>
+#include <sys/param.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <netdb.h>
+#include <pwd.h>
+#include <grp.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <paths.h>
+#include <err.h>
+
+#include <arpa/inet.h>
+#include <arpa/nameser.h>
+
+#include <net/if.h>
+#include <net/ethernet.h>
+#include <netinet/ether.h>
+#include <netinet/in.h>
+
+enum {
+       RV_OK           = 0,
+       RV_USAGE        = 1,
+       RV_NOTFOUND     = 2,
+       RV_NOENUM       = 3
+};
+
+static int usage(const char *);
+
+static int parsenum(const char *word, unsigned long *result)
+{
+       unsigned long   num;
+       char            *ep;
+
+       if (!isdigit((unsigned char)word[0]))
+               return 0;
+       errno = 0;
+       num = strtoul(word, &ep, 10);
+       if (num == ULONG_MAX && errno == ERANGE)
+               return 0;
+       if (*ep != '\0')
+               return 0;
+       *result = num;
+       return 1;
+}
+
+/*
+ * printfmtstrings --
+ *     vprintf(format, ...),
+ *     then the aliases (beginning with prefix, separated by sep),
+ *     then a newline
+ */
+__attribute__ ((format (printf, 4, 5)))
+static void printfmtstrings(char *strings[], const char *prefix, const char *sep,
+       const char *fmt, ...)
+{
+       va_list         ap;
+       const char      *curpref;
+       size_t          i;
+
+       va_start(ap, fmt);
+       (void)vprintf(fmt, ap);
+       va_end(ap);
+
+       curpref = prefix;
+       for (i = 0; strings[i] != NULL; i++) {
+               (void)printf("%s%s", curpref, strings[i]);
+               curpref = sep;
+       }
+       (void)printf("\n");
+}
+
+static int ethers(int argc, char *argv[])
+{
+       char            hostname[MAXHOSTNAMELEN + 1], *hp;
+       struct ether_addr ea, *eap;
+       int             i, rv;
+
+       if (argc == 2) {
+               warnx("Enumeration not supported on ethers");
+               return RV_NOENUM;
+       }
+
+       rv = RV_OK;
+       for (i = 2; i < argc; i++) {
+               if ((eap = ether_aton(argv[i])) == NULL) {
+                       eap = &ea;
+                       hp = argv[i];
+                       if (ether_hostton(hp, eap) != 0) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+               } else {
+                       hp = hostname;
+                       if (ether_ntohost(hp, eap) != 0) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+               }
+               (void)printf("%-17s  %s\n", ether_ntoa(eap), hp);
+       }
+       return rv;
+}
+
+static void groupprint(const struct group *gr)
+{
+       printfmtstrings(gr->gr_mem, ":", ",", "%s:%s:%u",
+                       gr->gr_name, gr->gr_passwd, gr->gr_gid);
+}
+
+static int group(int argc, char *argv[])
+{
+       struct group    *gr;
+       unsigned long   id;
+       int             i, rv;
+
+       rv = RV_OK;
+       if (argc == 2) {
+               while ((gr = getgrent()) != NULL)
+                       groupprint(gr);
+       } else {
+               for (i = 2; i < argc; i++) {
+                       if (parsenum(argv[i], &id))
+                               gr = getgrgid((gid_t)id);
+                       else
+                               gr = getgrnam(argv[i]);
+                       if (gr == NULL) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+                       groupprint(gr);
+               }
+       }
+       endgrent();
+       return rv;
+}
+
+static void hostsprint(const struct hostent *he)
+{
+       char    buf[INET6_ADDRSTRLEN];
+
+       if (inet_ntop(he->h_addrtype, he->h_addr, buf, sizeof(buf)) == NULL)
+               (void)strlcpy(buf, "# unknown", sizeof(buf));
+       printfmtstrings(he->h_aliases, "  ", " ", "%-16s  %s", buf, he->h_name);
+}
+
+static int hosts(int argc, char *argv[])
+{
+       struct hostent  *he;
+       char            addr[IN6ADDRSZ];
+       int             i, rv;
+
+       sethostent(1);
+       rv = RV_OK;
+       if (argc == 2) {
+               while ((he = gethostent()) != NULL)
+                       hostsprint(he);
+       } else {
+               for (i = 2; i < argc; i++) {
+                       if (inet_pton(AF_INET6, argv[i], (void *)addr) > 0)
+                               he = gethostbyaddr(addr, IN6ADDRSZ, AF_INET6);
+                       else if (inet_pton(AF_INET, argv[i], (void *)addr) > 0)
+                               he = gethostbyaddr(addr, INADDRSZ, AF_INET);
+                       else if ((he = gethostbyname2(argv[i], AF_INET6)) == NULL)
+                               he = gethostbyname2(argv[i], AF_INET);
+                       if (he == NULL) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+                       hostsprint(he);
+               }
+       }
+       endhostent();
+       return rv;
+}
+
+static int ahosts_ex(int family, int flags, int argc, char *argv[])
+{
+       static const char *socktypes[] = {
+               [SOCK_STREAM]           = "STREAM",
+               [SOCK_DGRAM]            = "DGRAM",
+               [SOCK_RAW]              = "RAW",
+               [SOCK_RDM]              = "RDM",
+               [SOCK_SEQPACKET]        = "SEQPACKET",
+               [SOCK_DCCP]             = "DCCP",
+               [SOCK_PACKET]           = "PACKET",
+       };
+       const char *sockstr;
+       char sockbuf[16], buf[INET6_ADDRSTRLEN];
+       struct addrinfo *res, *r, hint;
+       void *addr;
+       int i;
+
+       if (argc == 2)
+               return hosts(argc, argv);
+
+       hint = (struct addrinfo) {
+               .ai_family = family,
+               .ai_flags = AI_ADDRCONFIG | AI_CANONNAME | flags,
+       };
+
+       for (i = 2; i < argc; i++) {
+               if (getaddrinfo(argv[i], 0, &hint, &res) != 0)
+                       return RV_NOTFOUND;
+
+               for (r = res; r; r = r->ai_next) {
+                       sockstr = NULL;
+                       if (r->ai_socktype >= 0 && r->ai_socktype < sizeof(socktypes)/sizeof(socktypes[0]))
+                               sockstr = socktypes[r->ai_socktype];
+                       if (!sockstr) {
+                               sprintf(buf, "%d", r->ai_socktype);
+                               sockstr = sockbuf;
+                       }
+                       switch (r->ai_family) {
+                       case AF_INET:
+                               addr = &((struct sockaddr_in*) r->ai_addr)->sin_addr;
+                               break;
+                       case AF_INET6:
+                               addr = &((struct sockaddr_in6*) r->ai_addr)->sin6_addr;
+                               break;
+                       default:
+                               continue;
+                       }
+                       if (inet_ntop(r->ai_family, addr, buf, sizeof(buf)) == NULL)
+                               (void)strlcpy(buf, "# unknown", sizeof(buf));
+                       printf("%-15s %-6s %s\n", buf, sockstr, r->ai_canonname ?: "");
+               }
+       }
+
+       return RV_OK;
+}
+
+static int ahosts(int argc, char *argv[])
+{
+       return ahosts_ex(AF_UNSPEC, 0, argc, argv);
+}
+
+static int ahostsv4(int argc, char *argv[])
+{
+       return ahosts_ex(AF_INET, 0, argc, argv);
+}
+
+static int ahostsv6(int argc, char *argv[])
+{
+       return ahosts_ex(AF_INET6, AI_V4MAPPED, argc, argv);
+}
+
+static void networksprint(const struct netent *ne)
+{
+       char            buf[INET6_ADDRSTRLEN];
+       struct  in_addr ianet;
+
+       ianet = inet_makeaddr(ne->n_net, 0);
+       if (inet_ntop(ne->n_addrtype, &ianet, buf, sizeof(buf)) == NULL)
+               (void)strlcpy(buf, "# unknown", sizeof(buf));
+       printfmtstrings(ne->n_aliases, "  ", " ", "%-16s  %s", ne->n_name, buf);
+}
+
+static int networks(int argc, char *argv[])
+{
+       struct netent   *ne;
+       in_addr_t       net;
+       int             i, rv;
+
+       setnetent(1);
+       rv = RV_OK;
+       if (argc == 2) {
+               while ((ne = getnetent()) != NULL)
+                       networksprint(ne);
+       } else {
+               for (i = 2; i < argc; i++) {
+                       net = inet_network(argv[i]);
+                       if (net != INADDR_NONE)
+                               ne = getnetbyaddr(net, AF_INET);
+                       else
+                               ne = getnetbyname(argv[i]);
+                       if (ne != NULL) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+                       networksprint(ne);
+               }
+       }
+       endnetent();
+       return rv;
+}
+
+static void passwdprint(struct passwd *pw)
+{
+       (void)printf("%s:%s:%u:%u:%s:%s:%s\n",
+               pw->pw_name, pw->pw_passwd, pw->pw_uid,
+               pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell);
+}
+
+static int passwd(int argc, char *argv[])
+{
+       struct passwd   *pw;
+       unsigned long   id;
+       int             i, rv;
+
+       rv = RV_OK;
+       if (argc == 2) {
+               while ((pw = getpwent()) != NULL)
+                       passwdprint(pw);
+       } else {
+               for (i = 2; i < argc; i++) {
+                       if (parsenum(argv[i], &id))
+                               pw = getpwuid((uid_t)id);
+                       else
+                               pw = getpwnam(argv[i]);
+                       if (pw == NULL) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+                       passwdprint(pw);
+               }
+       }
+       endpwent();
+       return rv;
+}
+
+static void protocolsprint(struct protoent *pe)
+{
+       printfmtstrings(pe->p_aliases, "  ", " ",
+                       "%-16s  %5d", pe->p_name, pe->p_proto);
+}
+
+static int protocols(int argc, char *argv[])
+{
+       struct protoent *pe;
+       unsigned long   id;
+       int             i, rv;
+
+       setprotoent(1);
+       rv = RV_OK;
+       if (argc == 2) {
+               while ((pe = getprotoent()) != NULL)
+                       protocolsprint(pe);
+       } else {
+               for (i = 2; i < argc; i++) {
+                       if (parsenum(argv[i], &id))
+                               pe = getprotobynumber((int)id);
+                       else
+                               pe = getprotobyname(argv[i]);
+                       if (pe == NULL) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+                       protocolsprint(pe);
+               }
+       }
+       endprotoent();
+       return rv;
+}
+
+static void servicesprint(struct servent *se)
+{
+       printfmtstrings(se->s_aliases, "  ", " ",
+                       "%-16s  %5d/%s",
+                       se->s_name, ntohs(se->s_port), se->s_proto);
+
+}
+
+static int services(int argc, char *argv[])
+{
+       struct servent  *se;
+       unsigned long   id;
+       char            *proto;
+       int             i, rv;
+
+       setservent(1);
+       rv = RV_OK;
+       if (argc == 2) {
+               while ((se = getservent()) != NULL)
+                       servicesprint(se);
+       } else {
+               for (i = 2; i < argc; i++) {
+                       proto = strchr(argv[i], '/');
+                       if (proto != NULL)
+                               *proto++ = '\0';
+                       if (parsenum(argv[i], &id))
+                               se = getservbyport(htons(id), proto);
+                       else
+                               se = getservbyname(argv[i], proto);
+                       if (se == NULL) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+                       servicesprint(se);
+               }
+       }
+       endservent();
+       return rv;
+}
+
+static int shells(int argc, char *argv[])
+{
+       const char      *sh;
+       int             i, rv;
+
+       setusershell();
+       rv = RV_OK;
+       if (argc == 2) {
+               while ((sh = getusershell()) != NULL)
+                       (void)printf("%s\n", sh);
+       } else {
+               for (i = 2; i < argc; i++) {
+                       setusershell();
+                       while ((sh = getusershell()) != NULL) {
+                               if (strcmp(sh, argv[i]) == 0) {
+                                       (void)printf("%s\n", sh);
+                                       break;
+                               }
+                       }
+                       if (sh == NULL) {
+                               rv = RV_NOTFOUND;
+                               break;
+                       }
+               }
+       }
+       endusershell();
+       return rv;
+}
+
+static struct getentdb {
+       const char      *name;
+       int             (*callback)(int, char *[]);
+} databases[] = {
+       {       "ethers",       ethers,         },
+       {       "group",        group,          },
+       {       "hosts",        hosts,          },
+       {       "ahosts",       ahosts,         },
+       {       "ahostsv4",     ahostsv4,       },
+       {       "ahostsv6",     ahostsv6,       },
+       {       "networks",     networks,       },
+       {       "passwd",       passwd,         },
+       {       "protocols",    protocols,      },
+       {       "services",     services,       },
+       {       "shells",       shells,         },
+
+       {       NULL,           NULL,           },
+};
+
+static int usage(const char *arg0)
+{
+       struct getentdb *curdb;
+       size_t i;
+
+       (void)fprintf(stderr, "Usage: %s database [key ...]\n", arg0);
+       (void)fprintf(stderr, "\tdatabase may be one of:");
+       for (i = 0, curdb = databases; curdb->name != NULL; curdb++, i++) {
+               if (i % 7 == 0)
+                       (void)fputs("\n\t\t", stderr);
+               (void)fprintf(stderr, "%s%s", i % 7 == 0 ? "" : " ",
+                   curdb->name);
+       }
+       (void)fprintf(stderr, "\n");
+       exit(RV_USAGE);
+       /* NOTREACHED */
+}
+
+int
+main(int argc, char *argv[])
+{
+       struct getentdb *curdb;
+
+       if (argc < 2)
+               usage(argv[0]);
+       for (curdb = databases; curdb->name != NULL; curdb++)
+               if (strcmp(curdb->name, argv[1]) == 0)
+                       return (*curdb->callback)(argc, argv);
+
+       warn("Unknown database `%s'", argv[1]);
+       usage(argv[0]);
+       /* NOTREACHED */
+}
diff --git a/core/musl/files/queue.h b/core/musl/files/queue.h
new file mode 100755 (executable)
index 0000000..a38499a
--- /dev/null
@@ -0,0 +1,846 @@
+/*     $NetBSD: queue.h,v 1.70 2015/11/02 15:21:23 christos Exp $      */
+
+/*
+ * Copyright (c) 1991, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)queue.h     8.5 (Berkeley) 8/20/94
+ */
+
+#ifndef        _SYS_QUEUE_H_
+#define        _SYS_QUEUE_H_
+
+/*
+ * This file defines five types of data structures: singly-linked lists,
+ * lists, simple queues, tail queues, and circular queues.
+ *
+ * A singly-linked list is headed by a single forward pointer. The
+ * elements are singly linked for minimum space and pointer manipulation
+ * overhead at the expense of O(n) removal for arbitrary elements. New
+ * elements can be added to the list after an existing element or at the
+ * head of the list.  Elements being removed from the head of the list
+ * should use the explicit macro for this purpose for optimum
+ * efficiency. A singly-linked list may only be traversed in the forward
+ * direction.  Singly-linked lists are ideal for applications with large
+ * datasets and few or no removals or for implementing a LIFO queue.
+ *
+ * A list is headed by a single forward pointer (or an array of forward
+ * pointers for a hash table header). The elements are doubly linked
+ * so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before
+ * or after an existing element or at the head of the list. A list
+ * may only be traversed in the forward direction.
+ *
+ * A simple queue is headed by a pair of pointers, one the head of the
+ * list and the other to the tail of the list. The elements are singly
+ * linked to save space, so elements can only be removed from the
+ * head of the list. New elements can be added to the list after
+ * an existing element, at the head of the list, or at the end of the
+ * list. A simple queue may only be traversed in the forward direction.
+ *
+ * A tail queue is headed by a pair of pointers, one to the head of the
+ * list and the other to the tail of the list. The elements are doubly
+ * linked so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before or
+ * after an existing element, at the head of the list, or at the end of
+ * the list. A tail queue may be traversed in either direction.
+ *
+ * A circle queue is headed by a pair of pointers, one to the head of the
+ * list and the other to the tail of the list. The elements are doubly
+ * linked so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before or after
+ * an existing element, at the head of the list, or at the end of the list.
+ * A circle queue may be traversed in either direction, but has a more
+ * complex end of list detection.
+ *
+ * For details on the use of these macros, see the queue(3) manual page.
+ */
+
+/*
+ * Include the definition of NULL only on NetBSD because sys/null.h
+ * is not available elsewhere.  This conditional makes the header
+ * portable and it can simply be dropped verbatim into any system.
+ * The caveat is that on other systems some other header
+ * must provide NULL before the macros can be used.
+ */
+#ifdef __NetBSD__
+#include <sys/null.h>
+#endif
+
+#if defined(QUEUEDEBUG)
+# if defined(_KERNEL)
+#  define QUEUEDEBUG_ABORT(...) panic(__VA_ARGS__)
+# else
+#  include <err.h>
+#  define QUEUEDEBUG_ABORT(...) err(1, __VA_ARGS__)
+# endif
+#endif
+
+/*
+ * Singly-linked List definitions.
+ */
+#define        SLIST_HEAD(name, type)                                          \
+struct name {                                                          \
+       struct type *slh_first; /* first element */                     \
+}
+
+#define        SLIST_HEAD_INITIALIZER(head)                                    \
+       { NULL }
+
+#define        SLIST_ENTRY(type)                                               \
+struct {                                                               \
+       struct type *sle_next;  /* next element */                      \
+}
+
+/*
+ * Singly-linked List access methods.
+ */
+#define        SLIST_FIRST(head)       ((head)->slh_first)
+#define        SLIST_END(head)         NULL
+#define        SLIST_EMPTY(head)       ((head)->slh_first == NULL)
+#define        SLIST_NEXT(elm, field)  ((elm)->field.sle_next)
+
+#define        SLIST_FOREACH(var, head, field)                                 \
+       for((var) = (head)->slh_first;                                  \
+           (var) != SLIST_END(head);                                   \
+           (var) = (var)->field.sle_next)
+
+#define        SLIST_FOREACH_SAFE(var, head, field, tvar)                      \
+       for ((var) = SLIST_FIRST((head));                               \
+           (var) != SLIST_END(head) &&                                 \
+           ((tvar) = SLIST_NEXT((var), field), 1);                     \
+           (var) = (tvar))
+
+/*
+ * Singly-linked List functions.
+ */
+#define        SLIST_INIT(head) do {                                           \
+       (head)->slh_first = SLIST_END(head);                            \
+} while (/*CONSTCOND*/0)
+
+#define        SLIST_INSERT_AFTER(slistelm, elm, field) do {                   \
+       (elm)->field.sle_next = (slistelm)->field.sle_next;             \
+       (slistelm)->field.sle_next = (elm);                             \
+} while (/*CONSTCOND*/0)
+
+#define        SLIST_INSERT_HEAD(head, elm, field) do {                        \
+       (elm)->field.sle_next = (head)->slh_first;                      \
+       (head)->slh_first = (elm);                                      \
+} while (/*CONSTCOND*/0)
+
+#define        SLIST_REMOVE_AFTER(slistelm, field) do {                        \
+       (slistelm)->field.sle_next =                                    \
+           SLIST_NEXT(SLIST_NEXT((slistelm), field), field);           \
+} while (/*CONSTCOND*/0)
+
+#define        SLIST_REMOVE_HEAD(head, field) do {                             \
+       (head)->slh_first = (head)->slh_first->field.sle_next;          \
+} while (/*CONSTCOND*/0)
+
+#define        SLIST_REMOVE(head, elm, type, field) do {                       \
+       if ((head)->slh_first == (elm)) {                               \
+               SLIST_REMOVE_HEAD((head), field);                       \
+       }                                                               \
+       else {                                                          \
+               struct type *curelm = (head)->slh_first;                \
+               while(curelm->field.sle_next != (elm))                  \
+                       curelm = curelm->field.sle_next;                \
+               curelm->field.sle_next =                                \
+                   curelm->field.sle_next->field.sle_next;             \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
+
+/*
+ * List definitions.
+ */
+#define        LIST_HEAD(name, type)                                           \
+struct name {                                                          \
+       struct type *lh_first;  /* first element */                     \
+}
+
+#define        LIST_HEAD_INITIALIZER(head)                                     \
+       { NULL }
+
+#define        LIST_ENTRY(type)                                                \
+struct {                                                               \
+       struct type *le_next;   /* next element */                      \
+       struct type **le_prev;  /* address of previous next element */  \
+}
+
+/*
+ * List access methods.
+ */
+#define        LIST_FIRST(head)                ((head)->lh_first)
+#define        LIST_END(head)                  NULL
+#define        LIST_EMPTY(head)                ((head)->lh_first == LIST_END(head))
+#define        LIST_NEXT(elm, field)           ((elm)->field.le_next)
+
+#define        LIST_FOREACH(var, head, field)                                  \
+       for ((var) = ((head)->lh_first);                                \
+           (var) != LIST_END(head);                                    \
+           (var) = ((var)->field.le_next))
+
+#define        LIST_FOREACH_SAFE(var, head, field, tvar)                       \
+       for ((var) = LIST_FIRST((head));                                \
+           (var) != LIST_END(head) &&                                  \
+           ((tvar) = LIST_NEXT((var), field), 1);                      \
+           (var) = (tvar))
+
+#define        LIST_MOVE(head1, head2) do {                                    \
+       LIST_INIT((head2));                                             \
+       if (!LIST_EMPTY((head1))) {                                     \
+               (head2)->lh_first = (head1)->lh_first;                  \
+               LIST_INIT((head1));                                     \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
+/*
+ * List functions.
+ */
+#if defined(QUEUEDEBUG)
+#define        QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field)                   \
+       if ((head)->lh_first &&                                         \
+           (head)->lh_first->field.le_prev != &(head)->lh_first)       \
+               QUEUEDEBUG_ABORT("LIST_INSERT_HEAD %p %s:%d", (head),   \
+                   __FILE__, __LINE__);
+#define        QUEUEDEBUG_LIST_OP(elm, field)                                  \
+       if ((elm)->field.le_next &&                                     \
+           (elm)->field.le_next->field.le_prev !=                      \
+           &(elm)->field.le_next)                                      \
+               QUEUEDEBUG_ABORT("LIST_* forw %p %s:%d", (elm),         \
+                   __FILE__, __LINE__);                                \
+       if (*(elm)->field.le_prev != (elm))                             \
+               QUEUEDEBUG_ABORT("LIST_* back %p %s:%d", (elm),         \
+                   __FILE__, __LINE__);
+#define        QUEUEDEBUG_LIST_POSTREMOVE(elm, field)                          \
+       (elm)->field.le_next = (void *)1L;                              \
+       (elm)->field.le_prev = (void *)1L;
+#else
+#define        QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field)
+#define        QUEUEDEBUG_LIST_OP(elm, field)
+#define        QUEUEDEBUG_LIST_POSTREMOVE(elm, field)
+#endif
+
+#define        LIST_INIT(head) do {                                            \
+       (head)->lh_first = LIST_END(head);                              \
+} while (/*CONSTCOND*/0)
+
+#define        LIST_INSERT_AFTER(listelm, elm, field) do {                     \
+       QUEUEDEBUG_LIST_OP((listelm), field)                            \
+       if (((elm)->field.le_next = (listelm)->field.le_next) !=        \
+           LIST_END(head))                                             \
+               (listelm)->field.le_next->field.le_prev =               \
+                   &(elm)->field.le_next;                              \
+       (listelm)->field.le_next = (elm);                               \
+       (elm)->field.le_prev = &(listelm)->field.le_next;               \
+} while (/*CONSTCOND*/0)
+
+#define        LIST_INSERT_BEFORE(listelm, elm, field) do {                    \
+       QUEUEDEBUG_LIST_OP((listelm), field)                            \
+       (elm)->field.le_prev = (listelm)->field.le_prev;                \
+       (elm)->field.le_next = (listelm);                               \
+       *(listelm)->field.le_prev = (elm);                              \
+       (listelm)->field.le_prev = &(elm)->field.le_next;               \
+} while (/*CONSTCOND*/0)
+
+#define        LIST_INSERT_HEAD(head, elm, field) do {                         \
+       QUEUEDEBUG_LIST_INSERT_HEAD((head), (elm), field)               \
+       if (((elm)->field.le_next = (head)->lh_first) != LIST_END(head))\
+               (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
+       (head)->lh_first = (elm);                                       \
+       (elm)->field.le_prev = &(head)->lh_first;                       \
+} while (/*CONSTCOND*/0)
+
+#define        LIST_REMOVE(elm, field) do {                                    \
+       QUEUEDEBUG_LIST_OP((elm), field)                                \
+       if ((elm)->field.le_next != NULL)                               \
+               (elm)->field.le_next->field.le_prev =                   \
+                   (elm)->field.le_prev;                               \
+       *(elm)->field.le_prev = (elm)->field.le_next;                   \
+       QUEUEDEBUG_LIST_POSTREMOVE((elm), field)                        \
+} while (/*CONSTCOND*/0)
+
+#define LIST_REPLACE(elm, elm2, field) do {                            \
+       if (((elm2)->field.le_next = (elm)->field.le_next) != NULL)     \
+               (elm2)->field.le_next->field.le_prev =                  \
+                   &(elm2)->field.le_next;                             \
+       (elm2)->field.le_prev = (elm)->field.le_prev;                   \
+       *(elm2)->field.le_prev = (elm2);                                \
+       QUEUEDEBUG_LIST_POSTREMOVE((elm), field)                        \
+} while (/*CONSTCOND*/0)
+
+/*
+ * Simple queue definitions.
+ */
+#define        SIMPLEQ_HEAD(name, type)                                        \
+struct name {                                                          \
+       struct type *sqh_first; /* first element */                     \
+       struct type **sqh_last; /* addr of last next element */         \
+}
+
+#define        SIMPLEQ_HEAD_INITIALIZER(head)                                  \
+       { NULL, &(head).sqh_first }
+
+#define        SIMPLEQ_ENTRY(type)                                             \
+struct {                                                               \
+       struct type *sqe_next;  /* next element */                      \
+}
+
+/*
+ * Simple queue access methods.
+ */
+#define        SIMPLEQ_FIRST(head)             ((head)->sqh_first)
+#define        SIMPLEQ_END(head)               NULL
+#define        SIMPLEQ_EMPTY(head)             ((head)->sqh_first == SIMPLEQ_END(head))
+#define        SIMPLEQ_NEXT(elm, field)        ((elm)->field.sqe_next)
+
+#define        SIMPLEQ_FOREACH(var, head, field)                               \
+       for ((var) = ((head)->sqh_first);                               \
+           (var) != SIMPLEQ_END(head);                                 \
+           (var) = ((var)->field.sqe_next))
+
+#define        SIMPLEQ_FOREACH_SAFE(var, head, field, next)                    \
+       for ((var) = ((head)->sqh_first);                               \
+           (var) != SIMPLEQ_END(head) &&                               \
+           ((next = ((var)->field.sqe_next)), 1);                      \
+           (var) = (next))
+
+/*
+ * Simple queue functions.
+ */
+#define        SIMPLEQ_INIT(head) do {                                         \
+       (head)->sqh_first = NULL;                                       \
+       (head)->sqh_last = &(head)->sqh_first;                          \
+} while (/*CONSTCOND*/0)
+
+#define        SIMPLEQ_INSERT_HEAD(head, elm, field) do {                      \
+       if (((elm)->field.sqe_next = (head)->sqh_first) == NULL)        \
+               (head)->sqh_last = &(elm)->field.sqe_next;              \
+       (head)->sqh_first = (elm);                                      \
+} while (/*CONSTCOND*/0)
+
+#define        SIMPLEQ_INSERT_TAIL(head, elm, field) do {                      \
+       (elm)->field.sqe_next = NULL;                                   \
+       *(head)->sqh_last = (elm);                                      \
+       (head)->sqh_last = &(elm)->field.sqe_next;                      \
+} while (/*CONSTCOND*/0)
+
+#define        SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do {            \
+       if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
+               (head)->sqh_last = &(elm)->field.sqe_next;              \
+       (listelm)->field.sqe_next = (elm);                              \
+} while (/*CONSTCOND*/0)
+
+#define        SIMPLEQ_REMOVE_HEAD(head, field) do {                           \
+       if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
+               (head)->sqh_last = &(head)->sqh_first;                  \
+} while (/*CONSTCOND*/0)
+
+#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do {                    \
+       if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \
+           == NULL)                                                    \
+               (head)->sqh_last = &(elm)->field.sqe_next;              \
+} while (/*CONSTCOND*/0)
+
+#define        SIMPLEQ_REMOVE(head, elm, type, field) do {                     \
+       if ((head)->sqh_first == (elm)) {                               \
+               SIMPLEQ_REMOVE_HEAD((head), field);                     \
+       } else {                                                        \
+               struct type *curelm = (head)->sqh_first;                \
+               while (curelm->field.sqe_next != (elm))                 \
+                       curelm = curelm->field.sqe_next;                \
+               if ((curelm->field.sqe_next =                           \
+                       curelm->field.sqe_next->field.sqe_next) == NULL) \
+                           (head)->sqh_last = &(curelm)->field.sqe_next; \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
+#define        SIMPLEQ_CONCAT(head1, head2) do {                               \
+       if (!SIMPLEQ_EMPTY((head2))) {                                  \
+               *(head1)->sqh_last = (head2)->sqh_first;                \
+               (head1)->sqh_last = (head2)->sqh_last;          \
+               SIMPLEQ_INIT((head2));                                  \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
+#define        SIMPLEQ_LAST(head, type, field)                                 \
+       (SIMPLEQ_EMPTY((head)) ?                                                \
+               NULL :                                                  \
+               ((struct type *)(void *)                                \
+               ((char *)((head)->sqh_last) - offsetof(struct type, field))))
+
+/*
+ * Tail queue definitions.
+ */
+#define        _TAILQ_HEAD(name, type, qual)                                   \
+struct name {                                                          \
+       qual type *tqh_first;           /* first element */             \
+       qual type *qual *tqh_last;      /* addr of last next element */ \
+}
+#define TAILQ_HEAD(name, type) _TAILQ_HEAD(name, struct type,)
+
+#define        TAILQ_HEAD_INITIALIZER(head)                                    \
+       { TAILQ_END(head), &(head).tqh_first }
+
+#define        _TAILQ_ENTRY(type, qual)                                        \
+struct {                                                               \
+       qual type *tqe_next;            /* next element */              \
+       qual type *qual *tqe_prev;      /* address of previous next element */\
+}
+#define TAILQ_ENTRY(type)      _TAILQ_ENTRY(struct type,)
+
+/*
+ * Tail queue access methods.
+ */
+#define        TAILQ_FIRST(head)               ((head)->tqh_first)
+#define        TAILQ_END(head)                 (NULL)
+#define        TAILQ_NEXT(elm, field)          ((elm)->field.tqe_next)
+#define        TAILQ_LAST(head, headname) \
+       (*(((struct headname *)(void *)((head)->tqh_last))->tqh_last))
+#define        TAILQ_PREV(elm, headname, field) \
+       (*(((struct headname *)(void *)((elm)->field.tqe_prev))->tqh_last))
+#define        TAILQ_EMPTY(head)               (TAILQ_FIRST(head) == TAILQ_END(head))
+
+
+#define        TAILQ_FOREACH(var, head, field)                                 \
+       for ((var) = ((head)->tqh_first);                               \
+           (var) != TAILQ_END(head);                                   \
+           (var) = ((var)->field.tqe_next))
+
+#define        TAILQ_FOREACH_SAFE(var, head, field, next)                      \
+       for ((var) = ((head)->tqh_first);                               \
+           (var) != TAILQ_END(head) &&                                 \
+           ((next) = TAILQ_NEXT(var, field), 1); (var) = (next))
+
+#define        TAILQ_FOREACH_REVERSE(var, head, headname, field)               \
+       for ((var) = TAILQ_LAST((head), headname);                      \
+           (var) != TAILQ_END(head);                                   \
+           (var) = TAILQ_PREV((var), headname, field))
+
+#define        TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, prev)    \
+       for ((var) = TAILQ_LAST((head), headname);                      \
+           (var) != TAILQ_END(head) &&                                 \
+           ((prev) = TAILQ_PREV((var), headname, field), 1); (var) = (prev))
+
+/*
+ * Tail queue functions.
+ */
+#if defined(QUEUEDEBUG)
+#define        QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field)                  \
+       if ((head)->tqh_first &&                                        \
+           (head)->tqh_first->field.tqe_prev != &(head)->tqh_first)    \
+               QUEUEDEBUG_ABORT("TAILQ_INSERT_HEAD %p %s:%d", (head),  \
+                   __FILE__, __LINE__);
+#define        QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field)                  \
+       if (*(head)->tqh_last != NULL)                                  \
+               QUEUEDEBUG_ABORT("TAILQ_INSERT_TAIL %p %s:%d", (head),  \
+                   __FILE__, __LINE__);
+#define        QUEUEDEBUG_TAILQ_OP(elm, field)                                 \
+       if ((elm)->field.tqe_next &&                                    \
+           (elm)->field.tqe_next->field.tqe_prev !=                    \
+           &(elm)->field.tqe_next)                                     \
+               QUEUEDEBUG_ABORT("TAILQ_* forw %p %s:%d", (elm),        \
+                   __FILE__, __LINE__);                                \
+       if (*(elm)->field.tqe_prev != (elm))                            \
+               QUEUEDEBUG_ABORT("TAILQ_* back %p %s:%d", (elm),        \
+                   __FILE__, __LINE__);
+#define        QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field)                    \
+       if ((elm)->field.tqe_next == NULL &&                            \
+           (head)->tqh_last != &(elm)->field.tqe_next)                 \
+               QUEUEDEBUG_ABORT("TAILQ_PREREMOVE head %p elm %p %s:%d",\
+                   (head), (elm), __FILE__, __LINE__);
+#define        QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field)                         \
+       (elm)->field.tqe_next = (void *)1L;                             \
+       (elm)->field.tqe_prev = (void *)1L;
+#else
+#define        QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field)
+#define        QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field)
+#define        QUEUEDEBUG_TAILQ_OP(elm, field)
+#define        QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field)
+#define        QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field)
+#endif
+
+#define        TAILQ_INIT(head) do {                                           \
+       (head)->tqh_first = TAILQ_END(head);                            \
+       (head)->tqh_last = &(head)->tqh_first;                          \
+} while (/*CONSTCOND*/0)
+
+#define        TAILQ_INSERT_HEAD(head, elm, field) do {                        \
+       QUEUEDEBUG_TAILQ_INSERT_HEAD((head), (elm), field)              \
+       if (((elm)->field.tqe_next = (head)->tqh_first) != TAILQ_END(head))\
+               (head)->tqh_first->field.tqe_prev =                     \
+                   &(elm)->field.tqe_next;                             \
+       else                                                            \
+               (head)->tqh_last = &(elm)->field.tqe_next;              \
+       (head)->tqh_first = (elm);                                      \
+       (elm)->field.tqe_prev = &(head)->tqh_first;                     \
+} while (/*CONSTCOND*/0)
+
+#define        TAILQ_INSERT_TAIL(head, elm, field) do {                        \
+       QUEUEDEBUG_TAILQ_INSERT_TAIL((head), (elm), field)              \
+       (elm)->field.tqe_next = TAILQ_END(head);                        \
+       (elm)->field.tqe_prev = (head)->tqh_last;                       \
+       *(head)->tqh_last = (elm);                                      \
+       (head)->tqh_last = &(elm)->field.tqe_next;                      \
+} while (/*CONSTCOND*/0)
+
+#define        TAILQ_INSERT_AFTER(head, listelm, elm, field) do {              \
+       QUEUEDEBUG_TAILQ_OP((listelm), field)                           \
+       if (((elm)->field.tqe_next = (listelm)->field.tqe_next) !=      \
+           TAILQ_END(head))                                            \
+               (elm)->field.tqe_next->field.tqe_prev =                 \
+                   &(elm)->field.tqe_next;                             \
+       else                                                            \
+               (head)->tqh_last = &(elm)->field.tqe_next;              \
+       (listelm)->field.tqe_next = (elm);                              \
+       (elm)->field.tqe_prev = &(listelm)->field.tqe_next;             \
+} while (/*CONSTCOND*/0)
+
+#define        TAILQ_INSERT_BEFORE(listelm, elm, field) do {                   \
+       QUEUEDEBUG_TAILQ_OP((listelm), field)                           \
+       (elm)->field.tqe_prev = (listelm)->field.tqe_prev;              \
+       (elm)->field.tqe_next = (listelm);                              \
+       *(listelm)->field.tqe_prev = (elm);                             \
+       (listelm)->field.tqe_prev = &(elm)->field.tqe_next;             \
+} while (/*CONSTCOND*/0)
+
+#define        TAILQ_REMOVE(head, elm, field) do {                             \
+       QUEUEDEBUG_TAILQ_PREREMOVE((head), (elm), field)                \
+       QUEUEDEBUG_TAILQ_OP((elm), field)                               \
+       if (((elm)->field.tqe_next) != TAILQ_END(head))                 \
+               (elm)->field.tqe_next->field.tqe_prev =                 \
+                   (elm)->field.tqe_prev;                              \
+       else                                                            \
+               (head)->tqh_last = (elm)->field.tqe_prev;               \
+       *(elm)->field.tqe_prev = (elm)->field.tqe_next;                 \
+       QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field);                      \
+} while (/*CONSTCOND*/0)
+
+#define TAILQ_REPLACE(head, elm, elm2, field) do {                     \
+        if (((elm2)->field.tqe_next = (elm)->field.tqe_next) !=        \
+           TAILQ_END(head))                                            \
+                (elm2)->field.tqe_next->field.tqe_prev =               \
+                    &(elm2)->field.tqe_next;                           \
+        else                                                           \
+                (head)->tqh_last = &(elm2)->field.tqe_next;            \
+        (elm2)->field.tqe_prev = (elm)->field.tqe_prev;                        \
+        *(elm2)->field.tqe_prev = (elm2);                              \
+       QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field);                      \
+} while (/*CONSTCOND*/0)
+
+#define        TAILQ_CONCAT(head1, head2, field) do {                          \
+       if (!TAILQ_EMPTY(head2)) {                                      \
+               *(head1)->tqh_last = (head2)->tqh_first;                \
+               (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
+               (head1)->tqh_last = (head2)->tqh_last;                  \
+               TAILQ_INIT((head2));                                    \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
+/*
+ * Singly-linked Tail queue declarations.
+ */
+#define        STAILQ_HEAD(name, type)                                         \
+struct name {                                                          \
+       struct type *stqh_first;        /* first element */             \
+       struct type **stqh_last;        /* addr of last next element */ \
+}
+
+#define        STAILQ_HEAD_INITIALIZER(head)                                   \
+       { NULL, &(head).stqh_first }
+
+#define        STAILQ_ENTRY(type)                                              \
+struct {                                                               \
+       struct type *stqe_next; /* next element */                      \
+}
+
+/*
+ * Singly-linked Tail queue access methods.
+ */
+#define        STAILQ_FIRST(head)      ((head)->stqh_first)
+#define        STAILQ_END(head)        NULL
+#define        STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+#define        STAILQ_EMPTY(head)      (STAILQ_FIRST(head) == STAILQ_END(head))
+
+/*
+ * Singly-linked Tail queue functions.
+ */
+#define        STAILQ_INIT(head) do {                                          \
+       (head)->stqh_first = NULL;                                      \
+       (head)->stqh_last = &(head)->stqh_first;                                \
+} while (/*CONSTCOND*/0)
+
+#define        STAILQ_INSERT_HEAD(head, elm, field) do {                       \
+       if (((elm)->field.stqe_next = (head)->stqh_first) == NULL)      \
+               (head)->stqh_last = &(elm)->field.stqe_next;            \
+       (head)->stqh_first = (elm);                                     \
+} while (/*CONSTCOND*/0)
+
+#define        STAILQ_INSERT_TAIL(head, elm, field) do {                       \
+       (elm)->field.stqe_next = NULL;                                  \
+       *(head)->stqh_last = (elm);                                     \
+       (head)->stqh_last = &(elm)->field.stqe_next;                    \
+} while (/*CONSTCOND*/0)
+
+#define        STAILQ_INSERT_AFTER(head, listelm, elm, field) do {             \
+       if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
+               (head)->stqh_last = &(elm)->field.stqe_next;            \
+       (listelm)->field.stqe_next = (elm);                             \
+} while (/*CONSTCOND*/0)
+
+#define        STAILQ_REMOVE_HEAD(head, field) do {                            \
+       if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \
+               (head)->stqh_last = &(head)->stqh_first;                        \
+} while (/*CONSTCOND*/0)
+
+#define        STAILQ_REMOVE(head, elm, type, field) do {                      \
+       if ((head)->stqh_first == (elm)) {                              \
+               STAILQ_REMOVE_HEAD((head), field);                      \
+       } else {                                                        \
+               struct type *curelm = (head)->stqh_first;               \
+               while (curelm->field.stqe_next != (elm))                        \
+                       curelm = curelm->field.stqe_next;               \
+               if ((curelm->field.stqe_next =                          \
+                       curelm->field.stqe_next->field.stqe_next) == NULL) \
+                           (head)->stqh_last = &(curelm)->field.stqe_next; \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
+#define        STAILQ_FOREACH(var, head, field)                                \
+       for ((var) = ((head)->stqh_first);                              \
+               (var);                                                  \
+               (var) = ((var)->field.stqe_next))
+
+#define        STAILQ_FOREACH_SAFE(var, head, field, tvar)                     \
+       for ((var) = STAILQ_FIRST((head));                              \
+           (var) && ((tvar) = STAILQ_NEXT((var), field), 1);           \
+           (var) = (tvar))
+
+#define        STAILQ_CONCAT(head1, head2) do {                                \
+       if (!STAILQ_EMPTY((head2))) {                                   \
+               *(head1)->stqh_last = (head2)->stqh_first;              \
+               (head1)->stqh_last = (head2)->stqh_last;                \
+               STAILQ_INIT((head2));                                   \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
+#define        STAILQ_LAST(head, type, field)                                  \
+       (STAILQ_EMPTY((head)) ?                                         \
+               NULL :                                                  \
+               ((struct type *)(void *)                                \
+               ((char *)((head)->stqh_last) - offsetof(struct type, field))))
+
+
+#ifndef _KERNEL
+/*
+ * Circular queue definitions. Do not use. We still keep the macros
+ * for compatibility but because of pointer aliasing issues their use
+ * is discouraged!
+ */
+
+/*
+ * __launder_type():  We use this ugly hack to work around the the compiler
+ * noticing that two types may not alias each other and elide tests in code.
+ * We hit this in the CIRCLEQ macros when comparing 'struct name *' and
+ * 'struct type *' (see CIRCLEQ_HEAD()).  Modern compilers (such as GCC
+ * 4.8) declare these comparisons as always false, causing the code to
+ * not run as designed.
+ *
+ * This hack is only to be used for comparisons and thus can be fully const.
+ * Do not use for assignment.
+ *
+ * If we ever choose to change the ABI of the CIRCLEQ macros, we could fix
+ * this by changing the head/tail sentinal values, but see the note above
+ * this one.
+ */
+static __inline const void * __launder_type(const void *);
+static __inline const void *
+__launder_type(const void *__x)
+{
+       __asm __volatile("" : "+r" (__x));
+       return __x;
+}
+
+#if defined(QUEUEDEBUG)
+#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field)                           \
+       if ((head)->cqh_first != CIRCLEQ_ENDC(head) &&                  \
+           (head)->cqh_first->field.cqe_prev != CIRCLEQ_ENDC(head))    \
+               QUEUEDEBUG_ABORT("CIRCLEQ head forw %p %s:%d", (head),  \
+                     __FILE__, __LINE__);                              \
+       if ((head)->cqh_last != CIRCLEQ_ENDC(head) &&                   \
+           (head)->cqh_last->field.cqe_next != CIRCLEQ_ENDC(head))     \
+               QUEUEDEBUG_ABORT("CIRCLEQ head back %p %s:%d", (head),  \
+                     __FILE__, __LINE__);
+#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field)                       \
+       if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) {              \
+               if ((head)->cqh_last != (elm))                          \
+                       QUEUEDEBUG_ABORT("CIRCLEQ elm last %p %s:%d",   \
+                           (elm), __FILE__, __LINE__);                 \
+       } else {                                                        \
+               if ((elm)->field.cqe_next->field.cqe_prev != (elm))     \
+                       QUEUEDEBUG_ABORT("CIRCLEQ elm forw %p %s:%d",   \
+                           (elm), __FILE__, __LINE__);                 \
+       }                                                               \
+       if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) {              \
+               if ((head)->cqh_first != (elm))                         \
+                       QUEUEDEBUG_ABORT("CIRCLEQ elm first %p %s:%d",  \
+                           (elm), __FILE__, __LINE__);                 \
+       } else {                                                        \
+               if ((elm)->field.cqe_prev->field.cqe_next != (elm))     \
+                       QUEUEDEBUG_ABORT("CIRCLEQ elm prev %p %s:%d",   \
+                           (elm), __FILE__, __LINE__);                 \
+       }
+#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field)                      \
+       (elm)->field.cqe_next = (void *)1L;                             \
+       (elm)->field.cqe_prev = (void *)1L;
+#else
+#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field)
+#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field)
+#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field)
+#endif
+
+#define        CIRCLEQ_HEAD(name, type)                                        \
+struct name {                                                          \
+       struct type *cqh_first;         /* first element */             \
+       struct type *cqh_last;          /* last element */              \
+}
+
+#define        CIRCLEQ_HEAD_INITIALIZER(head)                                  \
+       { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
+
+#define        CIRCLEQ_ENTRY(type)                                             \
+struct {                                                               \
+       struct type *cqe_next;          /* next element */              \
+       struct type *cqe_prev;          /* previous element */          \
+}
+
+/*
+ * Circular queue functions.
+ */
+#define        CIRCLEQ_INIT(head) do {                                         \
+       (head)->cqh_first = CIRCLEQ_END(head);                          \
+       (head)->cqh_last = CIRCLEQ_END(head);                           \
+} while (/*CONSTCOND*/0)
+
+#define        CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do {            \
+       QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
+       QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field)                \
+       (elm)->field.cqe_next = (listelm)->field.cqe_next;              \
+       (elm)->field.cqe_prev = (listelm);                              \
+       if ((listelm)->field.cqe_next == CIRCLEQ_ENDC(head))            \
+               (head)->cqh_last = (elm);                               \
+       else                                                            \
+               (listelm)->field.cqe_next->field.cqe_prev = (elm);      \
+       (listelm)->field.cqe_next = (elm);                              \
+} while (/*CONSTCOND*/0)
+
+#define        CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do {           \
+       QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
+       QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field)                \
+       (elm)->field.cqe_next = (listelm);                              \
+       (elm)->field.cqe_prev = (listelm)->field.cqe_prev;              \
+       if ((listelm)->field.cqe_prev == CIRCLEQ_ENDC(head))            \
+               (head)->cqh_first = (elm);                              \
+       else                                                            \
+               (listelm)->field.cqe_prev->field.cqe_next = (elm);      \
+       (listelm)->field.cqe_prev = (elm);                              \
+} while (/*CONSTCOND*/0)
+
+#define        CIRCLEQ_INSERT_HEAD(head, elm, field) do {                      \
+       QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
+       (elm)->field.cqe_next = (head)->cqh_first;                      \
+       (elm)->field.cqe_prev = CIRCLEQ_END(head);                      \
+       if ((head)->cqh_last == CIRCLEQ_ENDC(head))                     \
+               (head)->cqh_last = (elm);                               \
+       else                                                            \
+               (head)->cqh_first->field.cqe_prev = (elm);              \
+       (head)->cqh_first = (elm);                                      \
+} while (/*CONSTCOND*/0)
+
+#define        CIRCLEQ_INSERT_TAIL(head, elm, field) do {                      \
+       QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
+       (elm)->field.cqe_next = CIRCLEQ_END(head);                      \
+       (elm)->field.cqe_prev = (head)->cqh_last;                       \
+       if ((head)->cqh_first == CIRCLEQ_ENDC(head))                    \
+               (head)->cqh_first = (elm);                              \
+       else                                                            \
+               (head)->cqh_last->field.cqe_next = (elm);               \
+       (head)->cqh_last = (elm);                                       \
+} while (/*CONSTCOND*/0)
+
+#define        CIRCLEQ_REMOVE(head, elm, field) do {                           \
+       QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
+       QUEUEDEBUG_CIRCLEQ_ELM((head), (elm), field)                    \
+       if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head))                \
+               (head)->cqh_last = (elm)->field.cqe_prev;               \
+       else                                                            \
+               (elm)->field.cqe_next->field.cqe_prev =                 \
+                   (elm)->field.cqe_prev;                              \
+       if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head))                \
+               (head)->cqh_first = (elm)->field.cqe_next;              \
+       else                                                            \
+               (elm)->field.cqe_prev->field.cqe_next =                 \
+                   (elm)->field.cqe_next;                              \
+       QUEUEDEBUG_CIRCLEQ_POSTREMOVE((elm), field)                     \
+} while (/*CONSTCOND*/0)
+
+#define        CIRCLEQ_FOREACH(var, head, field)                               \
+       for ((var) = ((head)->cqh_first);                               \
+               (var) != CIRCLEQ_ENDC(head);                            \
+               (var) = ((var)->field.cqe_next))
+
+#define        CIRCLEQ_FOREACH_REVERSE(var, head, field)                       \
+       for ((var) = ((head)->cqh_last);                                \
+               (var) != CIRCLEQ_ENDC(head);                            \
+               (var) = ((var)->field.cqe_prev))
+
+/*
+ * Circular queue access methods.
+ */
+#define        CIRCLEQ_FIRST(head)             ((head)->cqh_first)
+#define        CIRCLEQ_LAST(head)              ((head)->cqh_last)
+/* For comparisons */
+#define        CIRCLEQ_ENDC(head)              (__launder_type(head))
+/* For assignments */
+#define        CIRCLEQ_END(head)               ((void *)(head))
+#define        CIRCLEQ_NEXT(elm, field)        ((elm)->field.cqe_next)
+#define        CIRCLEQ_PREV(elm, field)        ((elm)->field.cqe_prev)
+#define        CIRCLEQ_EMPTY(head)                                             \
+    (CIRCLEQ_FIRST(head) == CIRCLEQ_ENDC(head))
+
+#define CIRCLEQ_LOOP_NEXT(head, elm, field)                            \
+       (((elm)->field.cqe_next == CIRCLEQ_ENDC(head))                  \
+           ? ((head)->cqh_first)                                       \
+           : (elm->field.cqe_next))
+#define CIRCLEQ_LOOP_PREV(head, elm, field)                            \
+       (((elm)->field.cqe_prev == CIRCLEQ_ENDC(head))                  \
+           ? ((head)->cqh_last)                                        \
+           : (elm->field.cqe_prev))
+#endif /* !_KERNEL */
+
+#endif /* !_SYS_QUEUE_H_ */
diff --git a/core/musl/files/tree.h b/core/musl/files/tree.h
new file mode 100755 (executable)
index 0000000..eaea56a
--- /dev/null
@@ -0,0 +1,761 @@
+/*     $NetBSD: tree.h,v 1.20 2013/09/14 13:20:45 joerg Exp $  */
+/*     $OpenBSD: tree.h,v 1.13 2011/07/09 00:19:45 pirofti Exp $       */
+/*
+ * Copyright 2002 Niels Provos <provos@citi.umich.edu>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef        _SYS_TREE_H_
+#define        _SYS_TREE_H_
+
+/*
+ * This file defines data structures for different types of trees:
+ * splay trees and red-black trees.
+ *
+ * A splay tree is a self-organizing data structure.  Every operation
+ * on the tree causes a splay to happen.  The splay moves the requested
+ * node to the root of the tree and partly rebalances it.
+ *
+ * This has the benefit that request locality causes faster lookups as
+ * the requested nodes move to the top of the tree.  On the other hand,
+ * every lookup causes memory writes.
+ *
+ * The Balance Theorem bounds the total access time for m operations
+ * and n inserts on an initially empty tree as O((m + n)lg n).  The
+ * amortized cost for a sequence of m accesses to a splay tree is O(lg n);
+ *
+ * A red-black tree is a binary search tree with the node color as an
+ * extra attribute.  It fulfills a set of conditions:
+ *     - every search path from the root to a leaf consists of the
+ *       same number of black nodes,
+ *     - each red node (except for the root) has a black parent,
+ *     - each leaf node is black.
+ *
+ * Every operation on a red-black tree is bounded as O(lg n).
+ * The maximum height of a red-black tree is 2lg (n+1).
+ */
+
+#define SPLAY_HEAD(name, type)                                         \
+struct name {                                                          \
+       struct type *sph_root; /* root of the tree */                   \
+}
+
+#define SPLAY_INITIALIZER(root)                                                \
+       { NULL }
+
+#define SPLAY_INIT(root) do {                                          \
+       (root)->sph_root = NULL;                                        \
+} while (/*CONSTCOND*/ 0)
+
+#define SPLAY_ENTRY(type)                                              \
+struct {                                                               \
+       struct type *spe_left; /* left element */                       \
+       struct type *spe_right; /* right element */                     \
+}
+
+#define SPLAY_LEFT(elm, field)         (elm)->field.spe_left
+#define SPLAY_RIGHT(elm, field)                (elm)->field.spe_right
+#define SPLAY_ROOT(head)               (head)->sph_root
+#define SPLAY_EMPTY(head)              (SPLAY_ROOT(head) == NULL)
+
+/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */
+#define SPLAY_ROTATE_RIGHT(head, tmp, field) do {                      \
+       SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field);  \
+       SPLAY_RIGHT(tmp, field) = (head)->sph_root;                     \
+       (head)->sph_root = tmp;                                         \
+} while (/*CONSTCOND*/ 0)
+
+#define SPLAY_ROTATE_LEFT(head, tmp, field) do {                       \
+       SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field);  \
+       SPLAY_LEFT(tmp, field) = (head)->sph_root;                      \
+       (head)->sph_root = tmp;                                         \
+} while (/*CONSTCOND*/ 0)
+
+#define SPLAY_LINKLEFT(head, tmp, field) do {                          \
+       SPLAY_LEFT(tmp, field) = (head)->sph_root;                      \
+       tmp = (head)->sph_root;                                         \
+       (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);         \
+} while (/*CONSTCOND*/ 0)
+
+#define SPLAY_LINKRIGHT(head, tmp, field) do {                         \
+       SPLAY_RIGHT(tmp, field) = (head)->sph_root;                     \
+       tmp = (head)->sph_root;                                         \
+       (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);        \
+} while (/*CONSTCOND*/ 0)
+
+#define SPLAY_ASSEMBLE(head, node, left, right, field) do {            \
+       SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \
+       SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\
+       SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \
+       SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \
+} while (/*CONSTCOND*/ 0)
+
+/* Generates prototypes and inline functions */
+
+#define SPLAY_PROTOTYPE(name, type, field, cmp)                                \
+void name##_SPLAY(struct name *, struct type *);                       \
+void name##_SPLAY_MINMAX(struct name *, int);                          \
+struct type *name##_SPLAY_INSERT(struct name *, struct type *);                \
+struct type *name##_SPLAY_REMOVE(struct name *, struct type *);                \
+                                                                       \
+/* Finds the node with the same key as elm */                          \
+static __inline struct type *                                          \
+name##_SPLAY_FIND(struct name *head, struct type *elm)                 \
+{                                                                      \
+       if (SPLAY_EMPTY(head))                                          \
+               return(NULL);                                           \
+       name##_SPLAY(head, elm);                                        \
+       if ((cmp)(elm, (head)->sph_root) == 0)                          \
+               return (head->sph_root);                                \
+       return (NULL);                                                  \
+}                                                                      \
+                                                                       \
+static __inline __unused struct type *                                 \
+name##_SPLAY_NEXT(struct name *head, struct type *elm)                 \
+{                                                                      \
+       name##_SPLAY(head, elm);                                        \
+       if (SPLAY_RIGHT(elm, field) != NULL) {                          \
+               elm = SPLAY_RIGHT(elm, field);                          \
+               while (SPLAY_LEFT(elm, field) != NULL) {                \
+                       elm = SPLAY_LEFT(elm, field);                   \
+               }                                                       \
+       } else                                                          \
+               elm = NULL;                                             \
+       return (elm);                                                   \
+}                                                                      \
+                                                                       \
+static __unused __inline struct type *                                 \
+name##_SPLAY_MIN_MAX(struct name *head, int val)                       \
+{                                                                      \
+       name##_SPLAY_MINMAX(head, val);                                 \
+        return (SPLAY_ROOT(head));                                     \
+}
+
+/* Main splay operation.
+ * Moves node close to the key of elm to top
+ */
+#define SPLAY_GENERATE(name, type, field, cmp)                         \
+struct type *                                                          \
+name##_SPLAY_INSERT(struct name *head, struct type *elm)               \
+{                                                                      \
+    if (SPLAY_EMPTY(head)) {                                           \
+           SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL;    \
+    } else {                                                           \
+           int __comp;                                                 \
+           name##_SPLAY(head, elm);                                    \
+           __comp = (cmp)(elm, (head)->sph_root);                      \
+           if(__comp < 0) {                                            \
+                   SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\
+                   SPLAY_RIGHT(elm, field) = (head)->sph_root;         \
+                   SPLAY_LEFT((head)->sph_root, field) = NULL;         \
+           } else if (__comp > 0) {                                    \
+                   SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\
+                   SPLAY_LEFT(elm, field) = (head)->sph_root;          \
+                   SPLAY_RIGHT((head)->sph_root, field) = NULL;        \
+           } else                                                      \
+                   return ((head)->sph_root);                          \
+    }                                                                  \
+    (head)->sph_root = (elm);                                          \
+    return (NULL);                                                     \
+}                                                                      \
+                                                                       \
+struct type *                                                          \
+name##_SPLAY_REMOVE(struct name *head, struct type *elm)               \
+{                                                                      \
+       struct type *__tmp;                                             \
+       if (SPLAY_EMPTY(head))                                          \
+               return (NULL);                                          \
+       name##_SPLAY(head, elm);                                        \
+       if ((cmp)(elm, (head)->sph_root) == 0) {                        \
+               if (SPLAY_LEFT((head)->sph_root, field) == NULL) {      \
+                       (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\
+               } else {                                                \
+                       __tmp = SPLAY_RIGHT((head)->sph_root, field);   \
+                       (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\
+                       name##_SPLAY(head, elm);                        \
+                       SPLAY_RIGHT((head)->sph_root, field) = __tmp;   \
+               }                                                       \
+               return (elm);                                           \
+       }                                                               \
+       return (NULL);                                                  \
+}                                                                      \
+                                                                       \
+void                                                                   \
+name##_SPLAY(struct name *head, struct type *elm)                      \
+{                                                                      \
+       struct type __node, *__left, *__right, *__tmp;                  \
+       int __comp;                                                     \
+\
+       SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
+       __left = __right = &__node;                                     \
+\
+       while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) {          \
+               if (__comp < 0) {                                       \
+                       __tmp = SPLAY_LEFT((head)->sph_root, field);    \
+                       if (__tmp == NULL)                              \
+                               break;                                  \
+                       if ((cmp)(elm, __tmp) < 0){                     \
+                               SPLAY_ROTATE_RIGHT(head, __tmp, field); \
+                               if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
+                                       break;                          \
+                       }                                               \
+                       SPLAY_LINKLEFT(head, __right, field);           \
+               } else if (__comp > 0) {                                \
+                       __tmp = SPLAY_RIGHT((head)->sph_root, field);   \
+                       if (__tmp == NULL)                              \
+                               break;                                  \
+                       if ((cmp)(elm, __tmp) > 0){                     \
+                               SPLAY_ROTATE_LEFT(head, __tmp, field);  \
+                               if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
+                                       break;                          \
+                       }                                               \
+                       SPLAY_LINKRIGHT(head, __left, field);           \
+               }                                                       \
+       }                                                               \
+       SPLAY_ASSEMBLE(head, &__node, __left, __right, field);          \
+}                                                                      \
+                                                                       \
+/* Splay with either the minimum or the maximum element                        \
+ * Used to find minimum or maximum element in tree.                    \
+ */                                                                    \
+void name##_SPLAY_MINMAX(struct name *head, int __comp) \
+{                                                                      \
+       struct type __node, *__left, *__right, *__tmp;                  \
+\
+       SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
+       __left = __right = &__node;                                     \
+\
+       while (1) {                                                     \
+               if (__comp < 0) {                                       \
+                       __tmp = SPLAY_LEFT((head)->sph_root, field);    \
+                       if (__tmp == NULL)                              \
+                               break;                                  \
+                       if (__comp < 0){                                \
+                               SPLAY_ROTATE_RIGHT(head, __tmp, field); \
+                               if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
+                                       break;                          \
+                       }                                               \
+                       SPLAY_LINKLEFT(head, __right, field);           \
+               } else if (__comp > 0) {                                \
+                       __tmp = SPLAY_RIGHT((head)->sph_root, field);   \
+                       if (__tmp == NULL)                              \
+                               break;                                  \
+                       if (__comp > 0) {                               \
+                               SPLAY_ROTATE_LEFT(head, __tmp, field);  \
+                               if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
+                                       break;                          \
+                       }                                               \
+                       SPLAY_LINKRIGHT(head, __left, field);           \
+               }                                                       \
+       }                                                               \
+       SPLAY_ASSEMBLE(head, &__node, __left, __right, field);          \
+}
+
+#define SPLAY_NEGINF   -1
+#define SPLAY_INF      1
+
+#define SPLAY_INSERT(name, x, y)       name##_SPLAY_INSERT(x, y)
+#define SPLAY_REMOVE(name, x, y)       name##_SPLAY_REMOVE(x, y)
+#define SPLAY_FIND(name, x, y)         name##_SPLAY_FIND(x, y)
+#define SPLAY_NEXT(name, x, y)         name##_SPLAY_NEXT(x, y)
+#define SPLAY_MIN(name, x)             (SPLAY_EMPTY(x) ? NULL  \
+                                       : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF))
+#define SPLAY_MAX(name, x)             (SPLAY_EMPTY(x) ? NULL  \
+                                       : name##_SPLAY_MIN_MAX(x, SPLAY_INF))
+
+#define SPLAY_FOREACH(x, name, head)                                   \
+       for ((x) = SPLAY_MIN(name, head);                               \
+            (x) != NULL;                                               \
+            (x) = SPLAY_NEXT(name, head, x))
+
+/* Macros that define a red-black tree */
+#define RB_HEAD(name, type)                                            \
+struct name {                                                          \
+       struct type *rbh_root; /* root of the tree */                   \
+}
+
+#define RB_INITIALIZER(root)                                           \
+       { NULL }
+
+#define RB_INIT(root) do {                                             \
+       (root)->rbh_root = NULL;                                        \
+} while (/*CONSTCOND*/ 0)
+
+#define RB_BLACK       0
+#define RB_RED         1
+#define RB_ENTRY(type)                                                 \
+struct {                                                               \
+       struct type *rbe_left;          /* left element */              \
+       struct type *rbe_right;         /* right element */             \
+       struct type *rbe_parent;        /* parent element */            \
+       int rbe_color;                  /* node color */                \
+}
+
+#define RB_LEFT(elm, field)            (elm)->field.rbe_left
+#define RB_RIGHT(elm, field)           (elm)->field.rbe_right
+#define RB_PARENT(elm, field)          (elm)->field.rbe_parent
+#define RB_COLOR(elm, field)           (elm)->field.rbe_color
+#define RB_ROOT(head)                  (head)->rbh_root
+#define RB_EMPTY(head)                 (RB_ROOT(head) == NULL)
+
+#define RB_SET(elm, parent, field) do {                                        \
+       RB_PARENT(elm, field) = parent;                                 \
+       RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL;              \
+       RB_COLOR(elm, field) = RB_RED;                                  \
+} while (/*CONSTCOND*/ 0)
+
+#define RB_SET_BLACKRED(black, red, field) do {                                \
+       RB_COLOR(black, field) = RB_BLACK;                              \
+       RB_COLOR(red, field) = RB_RED;                                  \
+} while (/*CONSTCOND*/ 0)
+
+#ifndef RB_AUGMENT
+#define RB_AUGMENT(x)  do {} while (/*CONSTCOND*/ 0)
+#endif
+
+#define RB_ROTATE_LEFT(head, elm, tmp, field) do {                     \
+       (tmp) = RB_RIGHT(elm, field);                                   \
+       if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) {     \
+               RB_PARENT(RB_LEFT(tmp, field), field) = (elm);          \
+       }                                                               \
+       RB_AUGMENT(elm);                                                \
+       if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) {  \
+               if ((elm) == RB_LEFT(RB_PARENT(elm, field), field))     \
+                       RB_LEFT(RB_PARENT(elm, field), field) = (tmp);  \
+               else                                                    \
+                       RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
+       } else                                                          \
+               (head)->rbh_root = (tmp);                               \
+       RB_LEFT(tmp, field) = (elm);                                    \
+       RB_PARENT(elm, field) = (tmp);                                  \
+       RB_AUGMENT(tmp);                                                \
+       if ((RB_PARENT(tmp, field)))                                    \
+               RB_AUGMENT(RB_PARENT(tmp, field));                      \
+} while (/*CONSTCOND*/ 0)
+
+#define RB_ROTATE_RIGHT(head, elm, tmp, field) do {                    \
+       (tmp) = RB_LEFT(elm, field);                                    \
+       if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) {     \
+               RB_PARENT(RB_RIGHT(tmp, field), field) = (elm);         \
+       }                                                               \
+       RB_AUGMENT(elm);                                                \
+       if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) {  \
+               if ((elm) == RB_LEFT(RB_PARENT(elm, field), field))     \
+                       RB_LEFT(RB_PARENT(elm, field), field) = (tmp);  \
+               else                                                    \
+                       RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
+       } else                                                          \
+               (head)->rbh_root = (tmp);                               \
+       RB_RIGHT(tmp, field) = (elm);                                   \
+       RB_PARENT(elm, field) = (tmp);                                  \
+       RB_AUGMENT(tmp);                                                \
+       if ((RB_PARENT(tmp, field)))                                    \
+               RB_AUGMENT(RB_PARENT(tmp, field));                      \
+} while (/*CONSTCOND*/ 0)
+
+/* Generates prototypes and inline functions */
+#define RB_PROTOTYPE(name, type, field, cmp)                           \
+       RB_PROTOTYPE_INTERNAL(name, type, field, cmp,)
+#define        RB_PROTOTYPE_STATIC(name, type, field, cmp)                     \
+       RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static)
+#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr)            \
+attr void name##_RB_INSERT_COLOR(struct name *, struct type *);                \
+attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\
+attr struct type *name##_RB_REMOVE(struct name *, struct type *);      \
+attr struct type *name##_RB_INSERT(struct name *, struct type *);      \
+attr struct type *name##_RB_FIND(struct name *, struct type *);                \
+attr struct type *name##_RB_NFIND(struct name *, struct type *);       \
+attr struct type *name##_RB_NEXT(struct type *);                       \
+attr struct type *name##_RB_PREV(struct type *);                       \
+attr struct type *name##_RB_MINMAX(struct name *, int);                        \
+                                                                       \
+
+/* Main rb operation.
+ * Moves node close to the key of elm to top
+ */
+#define        RB_GENERATE(name, type, field, cmp)                             \
+       RB_GENERATE_INTERNAL(name, type, field, cmp,)
+#define        RB_GENERATE_STATIC(name, type, field, cmp)                      \
+       RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static)
+#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr)             \
+attr void                                                              \
+name##_RB_INSERT_COLOR(struct name *head, struct type *elm)            \
+{                                                                      \
+       struct type *parent, *gparent, *tmp;                            \
+       while ((parent = RB_PARENT(elm, field)) != NULL &&              \
+           RB_COLOR(parent, field) == RB_RED) {                        \
+               gparent = RB_PARENT(parent, field);                     \
+               if (parent == RB_LEFT(gparent, field)) {                \
+                       tmp = RB_RIGHT(gparent, field);                 \
+                       if (tmp && RB_COLOR(tmp, field) == RB_RED) {    \
+                               RB_COLOR(tmp, field) = RB_BLACK;        \
+                               RB_SET_BLACKRED(parent, gparent, field);\
+                               elm = gparent;                          \
+                               continue;                               \
+                       }                                               \
+                       if (RB_RIGHT(parent, field) == elm) {           \
+                               RB_ROTATE_LEFT(head, parent, tmp, field);\
+                               tmp = parent;                           \
+                               parent = elm;                           \
+                               elm = tmp;                              \
+                       }                                               \
+                       RB_SET_BLACKRED(parent, gparent, field);        \
+                       RB_ROTATE_RIGHT(head, gparent, tmp, field);     \
+               } else {                                                \
+                       tmp = RB_LEFT(gparent, field);                  \
+                       if (tmp && RB_COLOR(tmp, field) == RB_RED) {    \
+                               RB_COLOR(tmp, field) = RB_BLACK;        \
+                               RB_SET_BLACKRED(parent, gparent, field);\
+                               elm = gparent;                          \
+                               continue;                               \
+                       }                                               \
+                       if (RB_LEFT(parent, field) == elm) {            \
+                               RB_ROTATE_RIGHT(head, parent, tmp, field);\
+                               tmp = parent;                           \
+                               parent = elm;                           \
+                               elm = tmp;                              \
+                       }                                               \
+                       RB_SET_BLACKRED(parent, gparent, field);        \
+                       RB_ROTATE_LEFT(head, gparent, tmp, field);      \
+               }                                                       \
+       }                                                               \
+       RB_COLOR(head->rbh_root, field) = RB_BLACK;                     \
+}                                                                      \
+                                                                       \
+attr void                                                              \
+name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \
+{                                                                      \
+       struct type *tmp;                                               \
+       while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) &&     \
+           elm != RB_ROOT(head)) {                                     \
+               if (RB_LEFT(parent, field) == elm) {                    \
+                       tmp = RB_RIGHT(parent, field);                  \
+                       if (RB_COLOR(tmp, field) == RB_RED) {           \
+                               RB_SET_BLACKRED(tmp, parent, field);    \
+                               RB_ROTATE_LEFT(head, parent, tmp, field);\
+                               tmp = RB_RIGHT(parent, field);          \
+                       }                                               \
+                       if ((RB_LEFT(tmp, field) == NULL ||             \
+                           RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
+                           (RB_RIGHT(tmp, field) == NULL ||            \
+                           RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
+                               RB_COLOR(tmp, field) = RB_RED;          \
+                               elm = parent;                           \
+                               parent = RB_PARENT(elm, field);         \
+                       } else {                                        \
+                               if (RB_RIGHT(tmp, field) == NULL ||     \
+                                   RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\
+                                       struct type *oleft;             \
+                                       if ((oleft = RB_LEFT(tmp, field)) \
+                                           != NULL)                    \
+                                               RB_COLOR(oleft, field) = RB_BLACK;\
+                                       RB_COLOR(tmp, field) = RB_RED;  \
+                                       RB_ROTATE_RIGHT(head, tmp, oleft, field);\
+                                       tmp = RB_RIGHT(parent, field);  \
+                               }                                       \
+                               RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
+                               RB_COLOR(parent, field) = RB_BLACK;     \
+                               if (RB_RIGHT(tmp, field))               \
+                                       RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\
+                               RB_ROTATE_LEFT(head, parent, tmp, field);\
+                               elm = RB_ROOT(head);                    \
+                               break;                                  \
+                       }                                               \
+               } else {                                                \
+                       tmp = RB_LEFT(parent, field);                   \
+                       if (RB_COLOR(tmp, field) == RB_RED) {           \
+                               RB_SET_BLACKRED(tmp, parent, field);    \
+                               RB_ROTATE_RIGHT(head, parent, tmp, field);\
+                               tmp = RB_LEFT(parent, field);           \
+                       }                                               \
+                       if ((RB_LEFT(tmp, field) == NULL ||             \
+                           RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
+                           (RB_RIGHT(tmp, field) == NULL ||            \
+                           RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
+                               RB_COLOR(tmp, field) = RB_RED;          \
+                               elm = parent;                           \
+                               parent = RB_PARENT(elm, field);         \
+                       } else {                                        \
+                               if (RB_LEFT(tmp, field) == NULL ||      \
+                                   RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\
+                                       struct type *oright;            \
+                                       if ((oright = RB_RIGHT(tmp, field)) \
+                                           != NULL)                    \
+                                               RB_COLOR(oright, field) = RB_BLACK;\
+                                       RB_COLOR(tmp, field) = RB_RED;  \
+                                       RB_ROTATE_LEFT(head, tmp, oright, field);\
+                                       tmp = RB_LEFT(parent, field);   \
+                               }                                       \
+                               RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
+                               RB_COLOR(parent, field) = RB_BLACK;     \
+                               if (RB_LEFT(tmp, field))                \
+                                       RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\
+                               RB_ROTATE_RIGHT(head, parent, tmp, field);\
+                               elm = RB_ROOT(head);                    \
+                               break;                                  \
+                       }                                               \
+               }                                                       \
+       }                                                               \
+       if (elm)                                                        \
+               RB_COLOR(elm, field) = RB_BLACK;                        \
+}                                                                      \
+                                                                       \
+attr struct type *                                                     \
+name##_RB_REMOVE(struct name *head, struct type *elm)                  \
+{                                                                      \
+       struct type *child, *parent, *old = elm;                        \
+       int color;                                                      \
+       if (RB_LEFT(elm, field) == NULL)                                \
+               child = RB_RIGHT(elm, field);                           \
+       else if (RB_RIGHT(elm, field) == NULL)                          \
+               child = RB_LEFT(elm, field);                            \
+       else {                                                          \
+               struct type *left;                                      \
+               elm = RB_RIGHT(elm, field);                             \
+               while ((left = RB_LEFT(elm, field)) != NULL)            \
+                       elm = left;                                     \
+               child = RB_RIGHT(elm, field);                           \
+               parent = RB_PARENT(elm, field);                         \
+               color = RB_COLOR(elm, field);                           \
+               if (child)                                              \
+                       RB_PARENT(child, field) = parent;               \
+               if (parent) {                                           \
+                       if (RB_LEFT(parent, field) == elm)              \
+                               RB_LEFT(parent, field) = child;         \
+                       else                                            \
+                               RB_RIGHT(parent, field) = child;        \
+                       RB_AUGMENT(parent);                             \
+               } else                                                  \
+                       RB_ROOT(head) = child;                          \
+               if (RB_PARENT(elm, field) == old)                       \
+                       parent = elm;                                   \
+               (elm)->field = (old)->field;                            \
+               if (RB_PARENT(old, field)) {                            \
+                       if (RB_LEFT(RB_PARENT(old, field), field) == old)\
+                               RB_LEFT(RB_PARENT(old, field), field) = elm;\
+                       else                                            \
+                               RB_RIGHT(RB_PARENT(old, field), field) = elm;\
+                       RB_AUGMENT(RB_PARENT(old, field));              \
+               } else                                                  \
+                       RB_ROOT(head) = elm;                            \
+               RB_PARENT(RB_LEFT(old, field), field) = elm;            \
+               if (RB_RIGHT(old, field))                               \
+                       RB_PARENT(RB_RIGHT(old, field), field) = elm;   \
+               if (parent) {                                           \
+                       left = parent;                                  \
+                       do {                                            \
+                               RB_AUGMENT(left);                       \
+                       } while ((left = RB_PARENT(left, field)) != NULL); \
+               }                                                       \
+               goto color;                                             \
+       }                                                               \
+       parent = RB_PARENT(elm, field);                                 \
+       color = RB_COLOR(elm, field);                                   \
+       if (child)                                                      \
+               RB_PARENT(child, field) = parent;                       \
+       if (parent) {                                                   \
+               if (RB_LEFT(parent, field) == elm)                      \
+                       RB_LEFT(parent, field) = child;                 \
+               else                                                    \
+                       RB_RIGHT(parent, field) = child;                \
+               RB_AUGMENT(parent);                                     \
+       } else                                                          \
+               RB_ROOT(head) = child;                                  \
+color:                                                                 \
+       if (color == RB_BLACK)                                          \
+               name##_RB_REMOVE_COLOR(head, parent, child);            \
+       return (old);                                                   \
+}                                                                      \
+                                                                       \
+/* Inserts a node into the RB tree */                                  \
+attr struct type *                                                     \
+name##_RB_INSERT(struct name *head, struct type *elm)                  \
+{                                                                      \
+       struct type *tmp;                                               \
+       struct type *parent = NULL;                                     \
+       int comp = 0;                                                   \
+       tmp = RB_ROOT(head);                                            \
+       while (tmp) {                                                   \
+               parent = tmp;                                           \
+               comp = (cmp)(elm, parent);                              \
+               if (comp < 0)                                           \
+                       tmp = RB_LEFT(tmp, field);                      \
+               else if (comp > 0)                                      \
+                       tmp = RB_RIGHT(tmp, field);                     \
+               else                                                    \
+                       return (tmp);                                   \
+       }                                                               \
+       RB_SET(elm, parent, field);                                     \
+       if (parent != NULL) {                                           \
+               if (comp < 0)                                           \
+                       RB_LEFT(parent, field) = elm;                   \
+               else                                                    \
+                       RB_RIGHT(parent, field) = elm;                  \
+               RB_AUGMENT(parent);                                     \
+       } else                                                          \
+               RB_ROOT(head) = elm;                                    \
+       name##_RB_INSERT_COLOR(head, elm);                              \
+       return (NULL);                                                  \
+}                                                                      \
+                                                                       \
+/* Finds the node with the same key as elm */                          \
+attr struct type *                                                     \
+name##_RB_FIND(struct name *head, struct type *elm)                    \
+{                                                                      \
+       struct type *tmp = RB_ROOT(head);                               \
+       int comp;                                                       \
+       while (tmp) {                                                   \
+               comp = cmp(elm, tmp);                                   \
+               if (comp < 0)                                           \
+                       tmp = RB_LEFT(tmp, field);                      \
+               else if (comp > 0)                                      \
+                       tmp = RB_RIGHT(tmp, field);                     \
+               else                                                    \
+                       return (tmp);                                   \
+       }                                                               \
+       return (NULL);                                                  \
+}                                                                      \
+                                                                       \
+/* Finds the first node greater than or equal to the search key */     \
+attr struct type *                                                     \
+name##_RB_NFIND(struct name *head, struct type *elm)                   \
+{                                                                      \
+       struct type *tmp = RB_ROOT(head);                               \
+       struct type *res = NULL;                                        \
+       int comp;                                                       \
+       while (tmp) {                                                   \
+               comp = cmp(elm, tmp);                                   \
+               if (comp < 0) {                                         \
+                       res = tmp;                                      \
+                       tmp = RB_LEFT(tmp, field);                      \
+               }                                                       \
+               else if (comp > 0)                                      \
+                       tmp = RB_RIGHT(tmp, field);                     \
+               else                                                    \
+                       return (tmp);                                   \
+       }                                                               \
+       return (res);                                                   \
+}                                                                      \
+                                                                       \
+/* ARGSUSED */                                                         \
+attr struct type *                                                     \
+name##_RB_NEXT(struct type *elm)                                       \
+{                                                                      \
+       if (RB_RIGHT(elm, field)) {                                     \
+               elm = RB_RIGHT(elm, field);                             \
+               while (RB_LEFT(elm, field))                             \
+                       elm = RB_LEFT(elm, field);                      \
+       } else {                                                        \
+               if (RB_PARENT(elm, field) &&                            \
+                   (elm == RB_LEFT(RB_PARENT(elm, field), field)))     \
+                       elm = RB_PARENT(elm, field);                    \
+               else {                                                  \
+                       while (RB_PARENT(elm, field) &&                 \
+                           (elm == RB_RIGHT(RB_PARENT(elm, field), field)))\
+                               elm = RB_PARENT(elm, field);            \
+                       elm = RB_PARENT(elm, field);                    \
+               }                                                       \
+       }                                                               \
+       return (elm);                                                   \
+}                                                                      \
+                                                                       \
+/* ARGSUSED */                                                         \
+attr struct type *                                                     \
+name##_RB_PREV(struct type *elm)                                       \
+{                                                                      \
+       if (RB_LEFT(elm, field)) {                                      \
+               elm = RB_LEFT(elm, field);                              \
+               while (RB_RIGHT(elm, field))                            \
+                       elm = RB_RIGHT(elm, field);                     \
+       } else {                                                        \
+               if (RB_PARENT(elm, field) &&                            \
+                   (elm == RB_RIGHT(RB_PARENT(elm, field), field)))    \
+                       elm = RB_PARENT(elm, field);                    \
+               else {                                                  \
+                       while (RB_PARENT(elm, field) &&                 \
+                           (elm == RB_LEFT(RB_PARENT(elm, field), field)))\
+                               elm = RB_PARENT(elm, field);            \
+                       elm = RB_PARENT(elm, field);                    \
+               }                                                       \
+       }                                                               \
+       return (elm);                                                   \
+}                                                                      \
+                                                                       \
+attr struct type *                                                     \
+name##_RB_MINMAX(struct name *head, int val)                           \
+{                                                                      \
+       struct type *tmp = RB_ROOT(head);                               \
+       struct type *parent = NULL;                                     \
+       while (tmp) {                                                   \
+               parent = tmp;                                           \
+               if (val < 0)                                            \
+                       tmp = RB_LEFT(tmp, field);                      \
+               else                                                    \
+                       tmp = RB_RIGHT(tmp, field);                     \
+       }                                                               \
+       return (parent);                                                \
+}
+
+#define RB_NEGINF      -1
+#define RB_INF 1
+
+#define RB_INSERT(name, x, y)  name##_RB_INSERT(x, y)
+#define RB_REMOVE(name, x, y)  name##_RB_REMOVE(x, y)
+#define RB_FIND(name, x, y)    name##_RB_FIND(x, y)
+#define RB_NFIND(name, x, y)   name##_RB_NFIND(x, y)
+#define RB_NEXT(name, x, y)    name##_RB_NEXT(y)
+#define RB_PREV(name, x, y)    name##_RB_PREV(y)
+#define RB_MIN(name, x)                name##_RB_MINMAX(x, RB_NEGINF)
+#define RB_MAX(name, x)                name##_RB_MINMAX(x, RB_INF)
+
+#define RB_FOREACH(x, name, head)                                      \
+       for ((x) = RB_MIN(name, head);                                  \
+            (x) != NULL;                                               \
+            (x) = name##_RB_NEXT(x))
+
+#define RB_FOREACH_FROM(x, name, y)                                    \
+       for ((x) = (y);                                                 \
+           ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL);    \
+            (x) = (y))
+
+#define RB_FOREACH_SAFE(x, name, head, y)                              \
+       for ((x) = RB_MIN(name, head);                                  \
+           ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL);    \
+            (x) = (y))
+
+#define RB_FOREACH_REVERSE(x, name, head)                              \
+       for ((x) = RB_MAX(name, head);                                  \
+            (x) != NULL;                                               \
+            (x) = name##_RB_PREV(x))
+
+#define RB_FOREACH_REVERSE_FROM(x, name, y)                            \
+       for ((x) = (y);                                                 \
+           ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL);    \
+            (x) = (y))
+
+#define RB_FOREACH_REVERSE_SAFE(x, name, head, y)                      \
+       for ((x) = RB_MAX(name, head);                                  \
+           ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL);    \
+            (x) = (y))
+
+#endif /* _SYS_TREE_H_ */
diff --git a/core/musl/sources b/core/musl/sources
new file mode 100644 (file)
index 0000000..f9e8b81
--- /dev/null
@@ -0,0 +1,6 @@
+https://www.musl-libc.org/releases/musl-1.2.2.tar.gz
+files/cdefs.h
+files/queue.h
+files/tree.h
+files/getconf.c
+files/getent.c
diff --git a/core/musl/version b/core/musl/version
new file mode 100644 (file)
index 0000000..5266927
--- /dev/null
@@ -0,0 +1 @@
+1.2.2 1
diff --git a/core/mutt/build b/core/mutt/build
new file mode 100755 (executable)
index 0000000..79a1321
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --enable-smtp \
+    --with-ssl \
+    --with-sasl
+
+make
+make DESTDIR="$1" install
+
+rm -f "$1/etc/mime.types" "$1/etc/Mutt*"
diff --git a/core/mutt/checksums b/core/mutt/checksums
new file mode 100644 (file)
index 0000000..9468631
--- /dev/null
@@ -0,0 +1 @@
+80835bbcce920bccf4fc99676eda9e83f03a929b4022eada931d721ede330d37
diff --git a/core/mutt/depends b/core/mutt/depends
new file mode 100644 (file)
index 0000000..d23520b
--- /dev/null
@@ -0,0 +1,5 @@
+cyrus-sasl
+libressl
+ncurses
+perl make
+zlib
diff --git a/core/mutt/sources b/core/mutt/sources
new file mode 100644 (file)
index 0000000..e850b21
--- /dev/null
@@ -0,0 +1 @@
+https://bitbucket.org/mutt/mutt/downloads/mutt-2.1.0.tar.gz
diff --git a/core/mutt/version b/core/mutt/version
new file mode 100644 (file)
index 0000000..ef86239
--- /dev/null
@@ -0,0 +1 @@
+2.1.0 1
index 724191a1e2462af4d16e1f0f0b84a5cae2973257..1fa8eeca3d09fc2e78ca3be62ad4e358c2c374c7 100644 (file)
@@ -1 +1 @@
-6.2 5
+6.2 1
diff --git a/core/npth/build b/core/npth/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/npth/checksums b/core/npth/checksums
new file mode 100644 (file)
index 0000000..22a525b
--- /dev/null
@@ -0,0 +1 @@
+1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1  npth-1.6.tar.bz2
diff --git a/core/npth/sources b/core/npth/sources
new file mode 100644 (file)
index 0000000..1ed1414
--- /dev/null
@@ -0,0 +1 @@
+https://gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2
diff --git a/core/npth/version b/core/npth/version
new file mode 100644 (file)
index 0000000..14aaeb3
--- /dev/null
@@ -0,0 +1 @@
+1.6 1 
index ff26472d39a118c7dfa77f052ac4c22e99778315..44ffae85a7873e6698d530702f33aa1693fefa69 100644 (file)
@@ -1,2 +1,2 @@
 828d9dfd9347ccfdd5d71f090632e31c9af16ada010a8963f188b1deb311e873
-846a251c646e61329086eda6abde26329f5a358d5eeab1a0f075db36e5997687
+e9f69e9760fae6d95250bd2634265ab27a6c58ab2628f4b022dcae6a7be216d2
index 687322c16666ce00a8e93c302756241d3b9c99bc..8d05edb512d3d85ddbaa6e5d05102ad7e5d6d72e 100644 (file)
 #
 # I'm working on a better overall solution.
 
-# Allow wheel to run kiss with password required.
+# Allow wheel to run asd with password required.
 # permit persist :wheel cmd env
 # permit persist :wheel cmd git args fetch
 # permit persist :wheel cmd git args diff
 # permit persist :wheel cmd git args merge
 
-# Allow wheel to run kiss without a password.
+# Allow wheel to run asd without a password.
 # permit nopass :wheel cmd env
 # permit nopass :wheel cmd git args fetch
 # permit nopass :wheel cmd git args diff
index ad80fa96f810e210aae1fad7e09988d28b2ff4ef..3957d4e410a0623a8d4ebd57b93f9222c373f7ce 100644 (file)
@@ -1 +1 @@
-6.9 2
+6.9 1
diff --git a/core/perl/build b/core/perl/build
new file mode 100755 (executable)
index 0000000..8f369e2
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh -e
+
+export BUILD_ZLIB=0
+export BUILD_BZIP2=0
+export LDFLAGS="$LDFLAGS -pthread"
+export CFLAGS="$CFLAGS -DNO_POSIX_2008_LOCALE -D_GNU_SOURCE"
+
+./Configure \
+    -des \
+    -Dprefix=/usr \
+    -Dvendorprefix=/usr \
+    -Dusevendorprefix \
+    -Duseshrplib \
+    -Dusesoname \
+    -Dusethreads \
+    -Dinc_version_list=none \
+    -Dd_sockaddr_in6=define \
+    -Dcccdlflags=-fPIC \
+    -Dccflags="$CFLAGS" \
+    -Dlddlflags="-shared $LDFLAGS" \
+    -Dldflags="$LDFLAGS" \
+    -Doptimize="-Wall $CFLAGS" \
+    -Dcc="${CC:-cc}" \
+    -Dar="${AR:-ar}" \
+    -Dnm="${NM:-nm}" \
+    -Dranlib="${RANLIB:-ranlib}" \
+    -Dperl_static_inline="static __inline__" \
+    -Dd_static_inline
+
+make
+make DESTDIR="$1" install
+
+# Remove all unneeded files.
+find "$1" -name \*.pod       -exec rm -f {} +
+find "$1" -name .packlist    -exec rm -f {} +
+find "$1" -name README\*     -exec rm -f {} +
+find "$1" -name TODO\*       -exec rm -f {} +
+find "$1" -name Change\*     -exec rm -f {} +
+find "$1" -name \*.bs        -exec rm -f {} +
+find "$1" -name \*.0 -type f -exec rm -f {} +
+
+# Fix permissions.
+find "$1/usr/lib" -type f -exec chmod 644 {} \;
diff --git a/core/perl/checksums b/core/perl/checksums
new file mode 100644 (file)
index 0000000..cf9c549
--- /dev/null
@@ -0,0 +1 @@
+82c2e5e5c71b0e10487a80d79140469ab1f8056349ca8545140a224dbbed7ded
diff --git a/core/perl/depends b/core/perl/depends
new file mode 100644 (file)
index 0000000..4565337
--- /dev/null
@@ -0,0 +1,2 @@
+bzip2
+zlib
diff --git a/core/perl/sources b/core/perl/sources
new file mode 100644 (file)
index 0000000..a06cabd
--- /dev/null
@@ -0,0 +1 @@
+https://www.cpan.org/src/5.0/perl-5.34.0.tar.xz
diff --git a/core/perl/version b/core/perl/version
new file mode 100644 (file)
index 0000000..23cfb12
--- /dev/null
@@ -0,0 +1 @@
+5.34.0 1
diff --git a/core/pkgconf/build b/core/pkgconf/build
new file mode 100755 (executable)
index 0000000..503d3a7
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc
+
+make
+make DESTDIR="$1" install
+
+ln -s pkgconf "$1/usr/bin/pkg-config"
diff --git a/core/pkgconf/checksums b/core/pkgconf/checksums
new file mode 100644 (file)
index 0000000..2041335
--- /dev/null
@@ -0,0 +1 @@
+d73f32c248a4591139a6b17777c80d4deab6b414ec2b3d21d0a24be348c476ab
diff --git a/core/pkgconf/sources b/core/pkgconf/sources
new file mode 100644 (file)
index 0000000..ff1ef80
--- /dev/null
@@ -0,0 +1 @@
+https://distfiles.dereferenced.org/pkgconf/pkgconf-1.7.4.tar.xz
diff --git a/core/pkgconf/version b/core/pkgconf/version
new file mode 100644 (file)
index 0000000..d70531c
--- /dev/null
@@ -0,0 +1 @@
+1.7.4 1
diff --git a/core/samurai/build b/core/samurai/build
new file mode 100755 (executable)
index 0000000..1dd11b3
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+make PREFIX=/usr
+make PREFIX=/usr DESTDIR="$1" install
+
+ln -s samu "$1/usr/bin/ninja"
diff --git a/core/samurai/checksums b/core/samurai/checksums
new file mode 100644 (file)
index 0000000..c688a25
--- /dev/null
@@ -0,0 +1 @@
+3b8cf51548dfc49b7efe035e191ff5e1963ebc4fe8f6064a5eefc5343eaf78a5
diff --git a/core/samurai/sources b/core/samurai/sources
new file mode 100644 (file)
index 0000000..2122189
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/michaelforney/samurai/releases/download/1.2/samurai-1.2.tar.gz
diff --git a/core/samurai/version b/core/samurai/version
new file mode 100644 (file)
index 0000000..f76d834
--- /dev/null
@@ -0,0 +1 @@
+1.2 1
diff --git a/core/sqlite/build b/core/sqlite/build
new file mode 100755 (executable)
index 0000000..e5325a5
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+export CPPFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1"
+
+sed -i 's/ -ltinfo//g' configure
+
+./configure \
+    --prefix=/usr \
+    --enable-threadsafe \
+    --enable-dynamic-extensions \
+    --enable-fts5
+
+make -j1
+make DESTDIR="$1" install
diff --git a/core/sqlite/checksums b/core/sqlite/checksums
new file mode 100644 (file)
index 0000000..54b3397
--- /dev/null
@@ -0,0 +1 @@
+bd90c3eb96bee996206b83be7065c9ce19aef38c3f4fb53073ada0d0b69bbce3
diff --git a/core/sqlite/depends b/core/sqlite/depends
new file mode 100644 (file)
index 0000000..f22003e
--- /dev/null
@@ -0,0 +1 @@
+zlib
diff --git a/core/sqlite/sources b/core/sqlite/sources
new file mode 100644 (file)
index 0000000..84fc70a
--- /dev/null
@@ -0,0 +1 @@
+https://sqlite.org/2021/sqlite-autoconf-3360000.tar.gz
diff --git a/core/sqlite/version b/core/sqlite/version
new file mode 100644 (file)
index 0000000..21a73e1
--- /dev/null
@@ -0,0 +1 @@
+3.36.0 1
diff --git a/core/syslinux/build b/core/syslinux/build
deleted file mode 100755 (executable)
index 1b3e497..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh -e
-
-for file in *.patch; do
-    patch -p1 < "$file"
-done
-
-# Fix missing <sys/sysmacros.h> include.
-sed -i 's@vfs.h>@vfs.h>\n#include <sys/sysmacros.h>@' extlinux/main.c
-
-# Disable debugging and development "stuff".
-: > mk/devel.mk
-
-make -j1 \
-    PYTHON=python \
-    bios efi64 installer
-
-make -j1 \
-    INSTALLROOT="$1" \
-    MANDIR=/usr/share/man \
-    SBINDIR=/usr/bin \
-    AUXDIR=/usr/lib/syslinux \
-    bios efi64 install
diff --git a/core/syslinux/checksums b/core/syslinux/checksums
deleted file mode 100644 (file)
index 861b89a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-3f6d50a57f3ed47d8234fd0ab4492634eb7c9aaf7dd902f33d3ac33564fd631d
-a4d9e4847a84c663a5c3425ceb1dcddf2328a8e763be21d43ed5cd72760a8aef
-755cd7062fe8495f6f62053ce664451c12ae65dba9fb5c75062a495fbe040fb1
diff --git a/core/syslinux/depends b/core/syslinux/depends
deleted file mode 100644 (file)
index 1d83681..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-libuuid
-nasm     make
-perl     make
-python   make
diff --git a/core/syslinux/patches/0018-prevent-pow-optimization.patch b/core/syslinux/patches/0018-prevent-pow-optimization.patch
deleted file mode 100644 (file)
index 0c42c7b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Lukas Schwaighofer <lukas@schwaighofer.name>
-Date: Tue, 26 Feb 2019 23:13:58 +0100
-Subject: Prevent optimizing the pow() function
-
-With the current GCC 8.2.0 from Debian, a section of code calling pow() in
-zzjson_parse.c is turned into a sequence calling exp(). Since no exp()
-implementation is available in syslinux those optimizations need to be
-disabled.
----
- com32/gpllib/zzjson/zzjson_parse.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/com32/gpllib/zzjson/zzjson_parse.c b/com32/gpllib/zzjson/zzjson_parse.c
-index ecb6f61..e66a9d8 100644
---- a/com32/gpllib/zzjson/zzjson_parse.c
-+++ b/com32/gpllib/zzjson/zzjson_parse.c
-@@ -138,6 +138,10 @@ static ZZJSON *parse_string2(ZZJSON_CONFIG *config) {
-     return zzjson;
- }
-+static double __attribute__((optimize("O0"))) pow_noopt(double x, double y) {
-+      return pow(x, y);
-+}
-+
- static ZZJSON *parse_number(ZZJSON_CONFIG *config) {
-     ZZJSON *zzjson;
-     unsigned long long ival = 0, expo = 0;
-@@ -213,7 +217,7 @@ skipexpo:
-     if (dbl) {
-         dval = sign * (long long) ival;
-         dval += sign * frac;
--        dval *= pow(10.0, (double) signexpo * expo);
-+        dval *= pow_noopt(10.0, (double) signexpo * expo);
-     }
-     zzjson = config->calloc(1, sizeof(ZZJSON));
diff --git a/core/syslinux/patches/fcommon.patch b/core/syslinux/patches/fcommon.patch
deleted file mode 100644 (file)
index 0df3dc0..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/mk/com32.mk
-+++ b/mk/com32.mk
-@@ -47,6 +47,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
- GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
- GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
- GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
-+GCCOPT += $(call gcc_ok,-fcommon)
- ifeq ($(FWCLASS),EFI)
- GCCOPT += -mno-red-zone
---- a/mk/elf.mk
-+++ b/mk/elf.mk
-@@ -42,6 +42,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
- GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
- GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
- GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
-+GCCOPT += $(call gcc_ok,-fcommon)
- com32 = $(topdir)/com32
- core = $(topdir)/core
---- a/mk/embedded.mk
-+++ b/mk/embedded.mk
-@@ -51,6 +51,7 @@ GCCOPT    += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
- GCCOPT    += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
- GCCOPT    += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
- GCCOPT    += $(call gcc_ok,-fvisibility=hidden)
-+GCCOPT    += $(call gcc_ok,-fcommon)
- LIBGCC    := $(shell $(CC) $(GCCOPT) --print-libgcc)
---- a/mk/lib.mk
-+++ b/mk/lib.mk
-@@ -28,6 +28,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
- GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
- GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
- GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
-+GCCOPT += $(call gcc_ok,-fcommon)
- INCLUDE       = -I$(SRC)
- STRIP = strip --strip-all -R .comment -R .note
---- a/mk/efi.mk
-+++ b/mk/efi.mk
-@@ -7,7 +7,7 @@ core = $(topdir)/core
- # Set up architecture specifics; for cross compilation, set ARCH as apt
- # gnuefi sets up architecture specifics in ia32 or x86_64 sub directories
- # set up the LIBDIR and EFIINC for building for the appropriate architecture
--GCCOPT := $(call gcc_ok,-fno-stack-protector,)
-+GCCOPT := $(call gcc_ok,-fno-stack-protector,) $(call gcc_ok,-fcommon)
- EFIINC = $(objdir)/include/efi
- LIBDIR  = $(objdir)/lib
diff --git a/core/syslinux/sources b/core/syslinux/sources
deleted file mode 100644 (file)
index 8988a99..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.tar.xz
-patches/fcommon.patch
-patches/0018-prevent-pow-optimization.patch
diff --git a/core/syslinux/version b/core/syslinux/version
deleted file mode 100644 (file)
index 15f18f1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6.04 1
diff --git a/core/tzdata/build b/core/tzdata/build
new file mode 100755 (executable)
index 0000000..589d250
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+pkg_dir=$1
+
+make CC="${CC:-cc}"
+make DESTDIR="$1" ZICDIR=/usr/bin install
+
+set -- northamerica
+
+./zic -d "$pkg_dir/usr/share/zoneinfo" "$@"
+./zic -d "$pkg_dir/usr/share/zoneinfo/posix" "$@"
+./zic -d "$pkg_dir/usr/share/zoneinfo/right" -L leapseconds "$@"
+./zic -d "$pkg_dir/usr/share/zoneinfo" -p America/New_York
diff --git a/core/tzdata/checksums b/core/tzdata/checksums
new file mode 100644 (file)
index 0000000..2c7b144
--- /dev/null
@@ -0,0 +1,2 @@
+eb46bfa124b5b6bd13d61a609bfde8351bd192894708d33aa06e5c1e255802d0
+39e7d2ba08c68cbaefc8de3227aab0dec2521be8042cf56855f7dc3a9fb14e08
diff --git a/core/tzdata/sources b/core/tzdata/sources
new file mode 100644 (file)
index 0000000..7053392
--- /dev/null
@@ -0,0 +1,2 @@
+https://www.iana.org/time-zones/repository/releases/tzcode2021a.tar.gz
+https://www.iana.org/time-zones/repository/releases/tzdata2021a.tar.gz
diff --git a/core/tzdata/version b/core/tzdata/version
new file mode 100644 (file)
index 0000000..2221e5b
--- /dev/null
@@ -0,0 +1 @@
+2021a 1
diff --git a/core/ugrep/build b/core/ugrep/build
new file mode 100755 (executable)
index 0000000..bd41e1f
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man
+
+make
+make DESTDIR="$1" install
+
+ln -s /usr/bin/ugrep "$1/usr/bin/grep"
+install -Dm755 fgrep "$1/usr/bin/fgrep"
+install -Dm755 egrep "$1/usr/bin/egrep"
diff --git a/core/ugrep/checksums b/core/ugrep/checksums
new file mode 100644 (file)
index 0000000..c287ced
--- /dev/null
@@ -0,0 +1,3 @@
+b5eca59aa67020052e5f796dfaddc1cb30ee9dd6e4cd89fb5cde1e3f110584ff
+f5490817fc1d9710e1d4db72e5587768c7a2308678ba106be4061e8e3e4da3f2
+658e6bbf4ef150e92e4bbf400fa44691e3064413a27492e0175044a831dba315
diff --git a/core/ugrep/depends b/core/ugrep/depends
new file mode 100644 (file)
index 0000000..ffc13a8
--- /dev/null
@@ -0,0 +1,4 @@
+bzip2
+xz
+zlib
+zstd
diff --git a/core/ugrep/files/egrep b/core/ugrep/files/egrep
new file mode 100644 (file)
index 0000000..6712c41
--- /dev/null
@@ -0,0 +1,3 @@
+#!/usr/bin/sh -e
+
+grep -E $@
diff --git a/core/ugrep/files/fgrep b/core/ugrep/files/fgrep
new file mode 100644 (file)
index 0000000..e5ca232
--- /dev/null
@@ -0,0 +1,3 @@
+#!/usr/bin/sh -e
+
+grep -F $@
diff --git a/core/ugrep/sources b/core/ugrep/sources
new file mode 100644 (file)
index 0000000..6ce4050
--- /dev/null
@@ -0,0 +1,3 @@
+https://github.com/Genivia/ugrep/archive/refs/tags/v3.3.4.tar.gz
+files/fgrep
+files/egrep
diff --git a/core/ugrep/version b/core/ugrep/version
new file mode 100644 (file)
index 0000000..ba23929
--- /dev/null
@@ -0,0 +1,2 @@
+3.3.4 1
+
diff --git a/core/vis-min/build b/core/vis-min/build
new file mode 100755 (executable)
index 0000000..c50262b
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+patch -p1 < soft-wrap.patch
+
+./configure \
+    --prefix=/usr \
+    --disable-lua \
+    --disable-static-lpeg
+
+make
+make DESTDIR="$1" install
+
+ln -s "/usr/bin/vis" "$1/usr/bin/vi"
diff --git a/core/vis-min/checksums b/core/vis-min/checksums
new file mode 100644 (file)
index 0000000..c7bd81e
--- /dev/null
@@ -0,0 +1,2 @@
+359ebb12a986b2f4e2a945567ad7587eb7d354301a5050ce10d51544570635eb
+f76924f0be2a01af179f64dc4328ce7c794023f329a4e093a6d4639127d627db
diff --git a/core/vis-min/depends b/core/vis-min/depends
new file mode 100644 (file)
index 0000000..e69c7ed
--- /dev/null
@@ -0,0 +1,2 @@
+libtermkey make
+ncurses
diff --git a/core/vis-min/patches/soft-wrap.patch b/core/vis-min/patches/soft-wrap.patch
new file mode 100644 (file)
index 0000000..9d9c04b
--- /dev/null
@@ -0,0 +1,632 @@
+From cc3a7e5566f7a33deeed5cbdcb9057e585c91dde Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Sun, 9 May 2021 00:34:16 +0000
+Subject: [PATCH 1/5] view: refactor view_addch
+
+---
+ view.c | 158 ++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 79 insertions(+), 79 deletions(-)
+
+diff --git a/view.c b/view.c
+index 74967dc6..b10deb92 100644
+--- a/view.c
++++ b/view.c
+@@ -164,98 +164,98 @@ Filerange view_viewport_get(View *view) {
+       return (Filerange){ .start = view->start, .end = view->end };
+ }
++static bool view_add_cell(View *view, const Cell *cell) {
++      size_t lineno = view->line->lineno;
++      
++      if (view->col + cell->width > view->width) {
++              for (int i = view->col; i < view->width; i++)
++                      view->line->cells[i] = view->cell_blank;
++              view->line = view->line->next;
++              view->col = 0;
++      }
++
++      if (!view->line)
++              return false;
++      
++      view->line->width += cell->width;
++      view->line->len += cell->len;
++      view->line->lineno = lineno;
++      view->line->cells[view->col] = *cell;
++      view->col++;
++      /* set cells of a character which uses multiple columns */
++      for (int i = 1; i < cell->width; i++)
++              view->line->cells[view->col++] = cell_unused;
++      return true;
++}
++
++static bool view_expand_tab(View *view, Cell *cell) {
++      cell->width = 1;
++      
++      int displayed_width = view->tabwidth - (view->col % view->tabwidth);
++      for (int w = 0; w < displayed_width; ++w) {
++      
++              int t = (w == 0) ? SYNTAX_SYMBOL_TAB : SYNTAX_SYMBOL_TAB_FILL;
++              const char *symbol = view->symbols[t]->symbol;
++              strncpy(cell->data, symbol, sizeof(cell->data) - 1);
++              cell->len = (w == 0) ? 1 : 0;
++              
++              if (!view_add_cell(view, cell))
++                      return false;
++      }
++      
++      cell->len = 1;
++      return true;
++}
++
++static bool view_expand_newline(View *view, Cell *cell) {
++      const char *symbol = view->symbols[SYNTAX_SYMBOL_EOL]->symbol;
++      strncpy(cell->data, symbol, sizeof(cell->data) - 1);
++      cell->width = 1;
++      
++      if (!view_add_cell(view, cell))
++              return false;
++
++      for (int i = view->col; i < view->width; ++i)
++              view->line->cells[i] = view->cell_blank;
++
++      size_t lineno = view->line->lineno;
++      view->line = view->line->next;
++      view->col = 0;
++      if (view->line)
++              view->line->lineno = lineno + 1;
++      
++      return true;
++}
++
+ /* try to add another character to the view, return whether there was space left */
+ static bool view_addch(View *view, Cell *cell) {
+       if (!view->line)
+               return false;
+-      int width;
+-      size_t lineno = view->line->lineno;
+       unsigned char ch = (unsigned char)cell->data[0];
+       cell->style = view->cell_blank.style;
+       switch (ch) {
+       case '\t':
+-              cell->width = 1;
+-              width = view->tabwidth - (view->col % view->tabwidth);
+-              for (int w = 0; w < width; w++) {
+-                      if (view->col + 1 > view->width) {
+-                              view->line = view->line->next;
+-                              view->col = 0;
+-                              if (!view->line)
+-                                      return false;
+-                              view->line->lineno = lineno;
+-                      }
+-
+-                      cell->len = w == 0 ? 1 : 0;
+-                      int t = w == 0 ? SYNTAX_SYMBOL_TAB : SYNTAX_SYMBOL_TAB_FILL;
+-                      strncpy(cell->data, view->symbols[t]->symbol, sizeof(cell->data)-1);
+-                      view->line->cells[view->col] = *cell;
+-                      view->line->len += cell->len;
+-                      view->line->width += cell->width;
+-                      view->col++;
+-              }
+-              cell->len = 1;
+-              return true;
++              return view_expand_tab(view, cell);
+       case '\n':
+-              cell->width = 1;
+-              if (view->col + cell->width > view->width) {
+-                      view->line = view->line->next;
+-                      view->col = 0;
+-                      if (!view->line)
+-                              return false;
+-                      view->line->lineno = lineno;
+-              }
+-
+-              strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_EOL]->symbol, sizeof(cell->data)-1);
+-
+-              view->line->cells[view->col] = *cell;
+-              view->line->len += cell->len;
+-              view->line->width += cell->width;
+-              for (int i = view->col + 1; i < view->width; i++)
+-                      view->line->cells[i] = view->cell_blank;
+-
+-              view->line = view->line->next;
+-              if (view->line)
+-                      view->line->lineno = lineno + 1;
+-              view->col = 0;
+-              return true;
+-      default:
+-              if (ch < 128 && !isprint(ch)) {
+-                      /* non-printable ascii char, represent it as ^(char + 64) */
+-                      *cell = (Cell) {
+-                              .data = { '^', ch == 127 ? '?' : ch + 64, '\0' },
+-                              .len = 1,
+-                              .width = 2,
+-                              .style = cell->style,
+-                      };
+-              }
+-
+-              if (ch == ' ') {
+-                      strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_SPACE]->symbol, sizeof(cell->data)-1);
+-
+-              }
+-
+-              if (view->col + cell->width > view->width) {
+-                      for (int i = view->col; i < view->width; i++)
+-                              view->line->cells[i] = view->cell_blank;
+-                      view->line = view->line->next;
+-                      view->col = 0;
+-              }
++              return view_expand_newline(view, cell);
++      case ' ':
++              const char *symbol = view->symbols[SYNTAX_SYMBOL_SPACE]->symbol;
++              strncpy(cell->data, symbol, sizeof(cell->data) - 1);
++              return view_add_cell(view, cell);
++      }
+-              if (view->line) {
+-                      view->line->width += cell->width;
+-                      view->line->len += cell->len;
+-                      view->line->lineno = lineno;
+-                      view->line->cells[view->col] = *cell;
+-                      view->col++;
+-                      /* set cells of a character which uses multiple columns */
+-                      for (int i = 1; i < cell->width; i++)
+-                              view->line->cells[view->col++] = cell_unused;
+-                      return true;
+-              }
+-              return false;
++      if (ch < 128 && !isprint(ch)) {
++              /* non-printable ascii char, represent it as ^(char + 64) */
++              *cell = (Cell) {
++                      .data = { '^', ch == 127 ? '?' : ch + 64, '\0' },
++                      .len = 1,
++                      .width = 2,
++                      .style = cell->style,
++              };
+       }
++      return view_add_cell(view, cell);
+ }
+ static void cursor_to(Selection *s, size_t pos) {
+
+From 50e75ddf8a73feab300d7789d000f9687a509f18 Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Sun, 9 May 2021 18:17:20 +0000
+Subject: [PATCH 2/5] view.c: add word wrapping
+
+---
+ view.c | 61 +++++++++++++++++++++++++++++++++++++++++++---------------
+ 1 file changed, 45 insertions(+), 16 deletions(-)
+
+diff --git a/view.c b/view.c
+index b10deb92..e7ca8141 100644
+--- a/view.c
++++ b/view.c
+@@ -80,6 +80,10 @@ struct View {
+       bool need_update;   /* whether view has been redrawn */
+       bool large_file;    /* optimize for displaying large files */
+       int colorcolumn;
++      // TODO lua option: breakat / brk
++      const char *breakat; /* characters which might cause a word wrap */
++      int wrapcol;         /* used while drawing view content, column where word wrap might happen */
++      bool prevch_breakat; /* used while drawing view content, previous char is part of breakat */
+ };
+ static const SyntaxSymbol symbols_none[] = {
+@@ -109,6 +113,7 @@ static bool view_viewport_up(View *view, int n);
+ static bool view_viewport_down(View *view, int n);
+ static void view_clear(View *view);
++static bool view_add_cell(View *view, const Cell *cell);
+ static bool view_addch(View *view, Cell *cell);
+ static void selection_free(Selection*);
+ /* set/move current cursor position to a given (line, column) pair */
+@@ -156,6 +161,8 @@ static void view_clear(View *view) {
+       view->bottomline->next = NULL;
+       view->line = view->topline;
+       view->col = 0;
++      view->wrapcol = 0;
++      view->prevch_breakat = false;
+       if (view->ui)
+               view->cell_blank.style = view->ui->style_get(view->ui, UI_STYLE_DEFAULT);
+ }
+@@ -164,19 +171,37 @@ Filerange view_viewport_get(View *view) {
+       return (Filerange){ .start = view->start, .end = view->end };
+ }
++static void view_wrap_line(View *view) {
++      Line *cur_line = view->line;
++      int cur_col = view->col;
++      int wrapcol = (view->wrapcol > 0) ? view->wrapcol : cur_col;
++      
++      view->line = cur_line->next;
++      view->col = 0;
++      view->wrapcol = 0;
++      if (view->line) {
++              /* move extra cells to the next line */
++              for (int i = wrapcol; i < cur_col; ++i) {
++                      const Cell *cell = &cur_line->cells[i];
++                      view_add_cell(view, cell);
++                      cur_line->width -= cell->width;
++                      cur_line->len -= cell->len;
++              }
++      }
++      for (int i = wrapcol; i < view->width; ++i) {
++              /* clear remaining of line */
++              cur_line->cells[i] = view->cell_blank;
++      }
++}
++
+ static bool view_add_cell(View *view, const Cell *cell) {
+       size_t lineno = view->line->lineno;
+       
+-      if (view->col + cell->width > view->width) {
+-              for (int i = view->col; i < view->width; i++)
+-                      view->line->cells[i] = view->cell_blank;
+-              view->line = view->line->next;
+-              view->col = 0;
+-      }
++      if (view->col + cell->width > view->width)
++              view_wrap_line(view);
+       if (!view->line)
+               return false;
+-      
+       view->line->width += cell->width;
+       view->line->len += cell->len;
+       view->line->lineno = lineno;
+@@ -208,22 +233,18 @@ static bool view_expand_tab(View *view, Cell *cell) {
+ }
+ static bool view_expand_newline(View *view, Cell *cell) {
++      size_t lineno = view->line->lineno;
+       const char *symbol = view->symbols[SYNTAX_SYMBOL_EOL]->symbol;
++      
+       strncpy(cell->data, symbol, sizeof(cell->data) - 1);
+       cell->width = 1;
+-      
+       if (!view_add_cell(view, cell))
+               return false;
+-      for (int i = view->col; i < view->width; ++i)
+-              view->line->cells[i] = view->cell_blank;
+-
+-      size_t lineno = view->line->lineno;
+-      view->line = view->line->next;
+-      view->col = 0;
++      view->wrapcol = 0;
++      view_wrap_line(view);
+       if (view->line)
+               view->line->lineno = lineno + 1;
+-      
+       return true;
+ }
+@@ -233,8 +254,14 @@ static bool view_addch(View *view, Cell *cell) {
+               return false;
+       unsigned char ch = (unsigned char)cell->data[0];
++      bool ch_breakat = strchr(view->breakat, ch);
++      if (view->prevch_breakat && !ch_breakat) {
++              /* this is a good place to wrap line if needed */
++              view->wrapcol = view->col;
++      }
++      view->prevch_breakat = ch_breakat;
+       cell->style = view->cell_blank.style;
+-
++      
+       switch (ch) {
+       case '\t':
+               return view_expand_tab(view, cell);
+@@ -519,6 +546,8 @@ View *view_new(Text *text) {
+               .data = " ",
+       };
+       view->tabwidth = 8;
++      // TODO default value
++      view->breakat = "";
+       view_options_set(view, 0);
+       if (!view_resize(view, 1, 1)) {
+
+From b50672e3233e5e2d2a537d697082806a5012d6ac Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Sun, 9 May 2021 21:56:36 +0000
+Subject: [PATCH 3/5] add `wrapcolumn / wc` and `breakat / brk` options
+
+---
+ man/vis.1  |  5 +++++
+ sam.c      | 12 ++++++++++++
+ view.c     | 29 +++++++++++++++++++++++------
+ view.h     |  2 ++
+ vis-cmds.c |  6 ++++++
+ 5 files changed, 48 insertions(+), 6 deletions(-)
+
+diff --git a/man/vis.1 b/man/vis.1
+index 05433663..2f6b4754 100644
+--- a/man/vis.1
++++ b/man/vis.1
+@@ -1423,6 +1423,11 @@ WARNING: modifying a memory mapped file in-place will cause data loss.
+ Whether to use vertical or horizontal layout.
+ .It Cm ignorecase , Cm ic Op Cm off
+ Whether to ignore case when searching.
++.It Ic wrapcolumn , Ic wc Op Ar 0
++Wrap lines at minimum of window width and wrapcolumn.
++.
++.It Ic breakat , brk Op Dq Pa ""
++Characters which might cause a word wrap.
+ .El
+ .
+ .Sh COMMAND and SEARCH PROMPT
+diff --git a/sam.c b/sam.c
+index 29e9c583..d7540e07 100644
+--- a/sam.c
++++ b/sam.c
+@@ -301,6 +301,8 @@ enum {
+       OPTION_CHANGE_256COLORS,
+       OPTION_LAYOUT,
+       OPTION_IGNORECASE,
++      OPTION_BREAKAT,
++      OPTION_WRAP_COLUMN,
+ };
+ static const OptionDef options[] = {
+@@ -394,6 +396,16 @@ static const OptionDef options[] = {
+               VIS_OPTION_TYPE_BOOL,
+               VIS_HELP("Ignore case when searching")
+       },
++      [OPTION_BREAKAT] = {
++              { "breakat", "brk" },
++              VIS_OPTION_TYPE_STRING|VIS_OPTION_NEED_WINDOW,
++              VIS_HELP("Characters which might cause a word wrap")
++      },
++      [OPTION_WRAP_COLUMN] = {
++              { "wrapcolumn", "wc" },
++              VIS_OPTION_TYPE_NUMBER|VIS_OPTION_NEED_WINDOW,
++              VIS_HELP("Wrap lines at minimum of window width and wrapcolumn")
++      },
+ };
+ bool sam_init(Vis *vis) {
+diff --git a/view.c b/view.c
+index e7ca8141..79fc7bc1 100644
+--- a/view.c
++++ b/view.c
+@@ -80,9 +80,9 @@ struct View {
+       bool need_update;   /* whether view has been redrawn */
+       bool large_file;    /* optimize for displaying large files */
+       int colorcolumn;
+-      // TODO lua option: breakat / brk
+-      const char *breakat; /* characters which might cause a word wrap */
+-      int wrapcol;         /* used while drawing view content, column where word wrap might happen */
++      char *breakat;  /* characters which might cause a word wrap */
++      int wrapcolumn; /* wrap lines at minimum of window width and wrapcolumn (if != 0) */
++      int wrapcol;    /* used while drawing view content, column where word wrap might happen */
+       bool prevch_breakat; /* used while drawing view content, previous char is part of breakat */
+ };
+@@ -171,6 +171,12 @@ Filerange view_viewport_get(View *view) {
+       return (Filerange){ .start = view->start, .end = view->end };
+ }
++static int view_max_text_width(const View *view) {
++      if (view->wrapcolumn > 0)
++              return MIN(view->wrapcolumn, view->width);
++      return view->width;
++}
++
+ static void view_wrap_line(View *view) {
+       Line *cur_line = view->line;
+       int cur_col = view->col;
+@@ -197,7 +203,7 @@ static void view_wrap_line(View *view) {
+ static bool view_add_cell(View *view, const Cell *cell) {
+       size_t lineno = view->line->lineno;
+       
+-      if (view->col + cell->width > view->width)
++      if (view->col + cell->width > view_max_text_width(view))
+               view_wrap_line(view);
+       if (!view->line)
+@@ -519,6 +525,7 @@ void view_free(View *view) {
+               selection_free(view->selections);
+       free(view->textbuf);
+       free(view->lines);
++      free(view->breakat);
+       free(view);
+ }
+@@ -546,8 +553,8 @@ View *view_new(Text *text) {
+               .data = " ",
+       };
+       view->tabwidth = 8;
+-      // TODO default value
+-      view->breakat = "";
++      view->breakat = strdup("");
++      view->wrapcolumn = 0;
+       view_options_set(view, 0);
+       if (!view_resize(view, 1, 1)) {
+@@ -891,6 +898,16 @@ int view_colorcolumn_get(View *view) {
+       return view->colorcolumn;
+ }
++void view_wrapcolumn_set(View *view, int col) {
++      if (col >= 0)
++              view->wrapcolumn = col;
++}
++
++void view_breakat_set(View *view, const char *breakat) {
++      free(view->breakat);
++      view->breakat = strdup(breakat);
++}
++
+ size_t view_screenline_goto(View *view, int n) {
+       size_t pos = view->start;
+       for (Line *line = view->topline; --n > 0 && line != view->lastline; line = line->next)
+diff --git a/view.h b/view.h
+index 31b044b8..65bcb29d 100644
+--- a/view.h
++++ b/view.h
+@@ -358,6 +358,8 @@ void view_options_set(View*, enum UiOption options);
+ enum UiOption view_options_get(View*);
+ void view_colorcolumn_set(View*, int col);
+ int view_colorcolumn_get(View*);
++void view_wrapcolumn_set(View*, int col);
++void view_breakat_set(View*, const char *breakat);
+ /** Set how many spaces are used to display a tab `\t` character. */
+ void view_tabwidth_set(View*, int tabwidth);
+diff --git a/vis-cmds.c b/vis-cmds.c
+index f5221d14..e2bff70d 100644
+--- a/vis-cmds.c
++++ b/vis-cmds.c
+@@ -364,6 +364,12 @@ static bool cmd_set(Vis *vis, Win *win, Command *cmd, const char *argv[], Select
+       case OPTION_IGNORECASE:
+               vis->ignorecase = toggle ? !vis->ignorecase : arg.b;
+               break;
++      case OPTION_BREAKAT:
++              view_breakat_set(win->view, arg.s);
++              break;
++      case OPTION_WRAP_COLUMN:
++              view_wrapcolumn_set(win->view, arg.i);
++              break;
+       default:
+               if (!opt->func)
+                       return false;
+
+From ee36292c44370678f261ea843c3ebcf02fa19156 Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Fri, 14 May 2021 16:44:44 +0000
+Subject: [PATCH 4/5] view.c: check return value of strdup
+
+---
+ view.c     | 32 +++++++++++++++++---------------
+ view.h     |  2 +-
+ vis-cmds.c |  5 ++++-
+ 3 files changed, 22 insertions(+), 17 deletions(-)
+
+diff --git a/view.c b/view.c
+index 79fc7bc1..f1864e8b 100644
+--- a/view.c
++++ b/view.c
+@@ -273,11 +273,11 @@ static bool view_addch(View *view, Cell *cell) {
+               return view_expand_tab(view, cell);
+       case '\n':
+               return view_expand_newline(view, cell);
+-      case ' ':
++      case ' ': {
+               const char *symbol = view->symbols[SYNTAX_SYMBOL_SPACE]->symbol;
+               strncpy(cell->data, symbol, sizeof(cell->data) - 1);
+               return view_add_cell(view, cell);
+-      }
++      }}
+       if (ch < 128 && !isprint(ch)) {
+               /* non-printable ascii char, represent it as ^(char + 64) */
+@@ -541,29 +541,27 @@ View *view_new(Text *text) {
+       View *view = calloc(1, sizeof(View));
+       if (!view)
+               return NULL;
+-      view->text = text;
+-      if (!view_selections_new(view, 0)) {
+-              view_free(view);
+-              return NULL;
+-      }
++      view->text = text;
++      view->tabwidth = 8;
++      view->breakat = strdup("");
++      view->wrapcolumn = 0;
+       view->cell_blank = (Cell) {
+               .width = 0,
+               .len = 0,
+               .data = " ",
+       };
+-      view->tabwidth = 8;
+-      view->breakat = strdup("");
+-      view->wrapcolumn = 0;
+       view_options_set(view, 0);
+-      if (!view_resize(view, 1, 1)) {
++      if (!view->breakat ||
++          !view_selections_new(view, 0) ||
++          !view_resize(view, 1, 1))
++      {
+               view_free(view);
+               return NULL;
+       }
+-
++      
+       view_cursor_to(view, 0);
+-
+       return view;
+ }
+@@ -903,9 +901,13 @@ void view_wrapcolumn_set(View *view, int col) {
+               view->wrapcolumn = col;
+ }
+-void view_breakat_set(View *view, const char *breakat) {
++bool view_breakat_set(View *view, const char *breakat) {
++      char *copy = strdup(breakat);
++      if (!copy)
++              return false;
+       free(view->breakat);
+-      view->breakat = strdup(breakat);
++      view->breakat = copy;
++      return true;
+ }
+ size_t view_screenline_goto(View *view, int n) {
+diff --git a/view.h b/view.h
+index 65bcb29d..dadecb48 100644
+--- a/view.h
++++ b/view.h
+@@ -359,7 +359,7 @@ enum UiOption view_options_get(View*);
+ void view_colorcolumn_set(View*, int col);
+ int view_colorcolumn_get(View*);
+ void view_wrapcolumn_set(View*, int col);
+-void view_breakat_set(View*, const char *breakat);
++bool view_breakat_set(View*, const char *breakat);
+ /** Set how many spaces are used to display a tab `\t` character. */
+ void view_tabwidth_set(View*, int tabwidth);
+diff --git a/vis-cmds.c b/vis-cmds.c
+index e2bff70d..d3b5f89a 100644
+--- a/vis-cmds.c
++++ b/vis-cmds.c
+@@ -365,7 +365,10 @@ static bool cmd_set(Vis *vis, Win *win, Command *cmd, const char *argv[], Select
+               vis->ignorecase = toggle ? !vis->ignorecase : arg.b;
+               break;
+       case OPTION_BREAKAT:
+-              view_breakat_set(win->view, arg.s);
++              if (!view_breakat_set(win->view, arg.s)) {
++                      vis_info_show(vis, "Failed to set breakat");
++                      return false;
++              }
+               break;
+       case OPTION_WRAP_COLUMN:
+               view_wrapcolumn_set(win->view, arg.i);
+
+From f698e53e4772497c41a12288339e3841dbca9680 Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <andreyproskurin@protonmail.com>
+Date: Fri, 14 May 2021 18:46:20 +0000
+Subject: [PATCH 5/5] view.c: add utf-8 support to `breakat`
+
+---
+ view.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/view.c b/view.c
+index f1864e8b..a399dd02 100644
+--- a/view.c
++++ b/view.c
+@@ -260,7 +260,7 @@ static bool view_addch(View *view, Cell *cell) {
+               return false;
+       unsigned char ch = (unsigned char)cell->data[0];
+-      bool ch_breakat = strchr(view->breakat, ch);
++      bool ch_breakat = strstr(view->breakat, cell->data);
+       if (view->prevch_breakat && !ch_breakat) {
+               /* this is a good place to wrap line if needed */
+               view->wrapcol = view->col;
diff --git a/core/vis-min/sources b/core/vis-min/sources
new file mode 100644 (file)
index 0000000..63cb838
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/martanne/vis/releases/download/v0.7/vis-0.7.tar.gz
+patches/soft-wrap.patch
diff --git a/core/vis-min/version b/core/vis-min/version
new file mode 100644 (file)
index 0000000..a754260
--- /dev/null
@@ -0,0 +1 @@
+0.7 1
diff --git a/core/vis/build b/core/vis/build
deleted file mode 100755 (executable)
index f2c9adc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh -e
-
-patch -p1 < soft-wrap.patch
-
-./configure \
-       --prefix=/usr \
-       --enable-lua \
-       --enable-lpeg-static
-
-make
-make DESTDIR="$1" install
-
-ln -s "/usr/bin/vis" "$1/usr/bin/vi"
diff --git a/core/vis/checksums b/core/vis/checksums
deleted file mode 100644 (file)
index 0cbac3b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-359ebb12a986b2f4e2a945567ad7587eb7d354301a5050ce10d51544570635eb
diff --git a/core/vis/depends b/core/vis/depends
deleted file mode 100644 (file)
index 04dc213..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-libtermkey make
-lpeg
-lua
-ncurses
diff --git a/core/vis/patches/soft-wrap.patch b/core/vis/patches/soft-wrap.patch
deleted file mode 100644 (file)
index 9d9c04b..0000000
+++ /dev/null
@@ -1,632 +0,0 @@
-From cc3a7e5566f7a33deeed5cbdcb9057e585c91dde Mon Sep 17 00:00:00 2001
-From: Andrey Proskurin <>
-Date: Sun, 9 May 2021 00:34:16 +0000
-Subject: [PATCH 1/5] view: refactor view_addch
-
----
- view.c | 158 ++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 79 insertions(+), 79 deletions(-)
-
-diff --git a/view.c b/view.c
-index 74967dc6..b10deb92 100644
---- a/view.c
-+++ b/view.c
-@@ -164,98 +164,98 @@ Filerange view_viewport_get(View *view) {
-       return (Filerange){ .start = view->start, .end = view->end };
- }
-+static bool view_add_cell(View *view, const Cell *cell) {
-+      size_t lineno = view->line->lineno;
-+      
-+      if (view->col + cell->width > view->width) {
-+              for (int i = view->col; i < view->width; i++)
-+                      view->line->cells[i] = view->cell_blank;
-+              view->line = view->line->next;
-+              view->col = 0;
-+      }
-+
-+      if (!view->line)
-+              return false;
-+      
-+      view->line->width += cell->width;
-+      view->line->len += cell->len;
-+      view->line->lineno = lineno;
-+      view->line->cells[view->col] = *cell;
-+      view->col++;
-+      /* set cells of a character which uses multiple columns */
-+      for (int i = 1; i < cell->width; i++)
-+              view->line->cells[view->col++] = cell_unused;
-+      return true;
-+}
-+
-+static bool view_expand_tab(View *view, Cell *cell) {
-+      cell->width = 1;
-+      
-+      int displayed_width = view->tabwidth - (view->col % view->tabwidth);
-+      for (int w = 0; w < displayed_width; ++w) {
-+      
-+              int t = (w == 0) ? SYNTAX_SYMBOL_TAB : SYNTAX_SYMBOL_TAB_FILL;
-+              const char *symbol = view->symbols[t]->symbol;
-+              strncpy(cell->data, symbol, sizeof(cell->data) - 1);
-+              cell->len = (w == 0) ? 1 : 0;
-+              
-+              if (!view_add_cell(view, cell))
-+                      return false;
-+      }
-+      
-+      cell->len = 1;
-+      return true;
-+}
-+
-+static bool view_expand_newline(View *view, Cell *cell) {
-+      const char *symbol = view->symbols[SYNTAX_SYMBOL_EOL]->symbol;
-+      strncpy(cell->data, symbol, sizeof(cell->data) - 1);
-+      cell->width = 1;
-+      
-+      if (!view_add_cell(view, cell))
-+              return false;
-+
-+      for (int i = view->col; i < view->width; ++i)
-+              view->line->cells[i] = view->cell_blank;
-+
-+      size_t lineno = view->line->lineno;
-+      view->line = view->line->next;
-+      view->col = 0;
-+      if (view->line)
-+              view->line->lineno = lineno + 1;
-+      
-+      return true;
-+}
-+
- /* try to add another character to the view, return whether there was space left */
- static bool view_addch(View *view, Cell *cell) {
-       if (!view->line)
-               return false;
--      int width;
--      size_t lineno = view->line->lineno;
-       unsigned char ch = (unsigned char)cell->data[0];
-       cell->style = view->cell_blank.style;
-       switch (ch) {
-       case '\t':
--              cell->width = 1;
--              width = view->tabwidth - (view->col % view->tabwidth);
--              for (int w = 0; w < width; w++) {
--                      if (view->col + 1 > view->width) {
--                              view->line = view->line->next;
--                              view->col = 0;
--                              if (!view->line)
--                                      return false;
--                              view->line->lineno = lineno;
--                      }
--
--                      cell->len = w == 0 ? 1 : 0;
--                      int t = w == 0 ? SYNTAX_SYMBOL_TAB : SYNTAX_SYMBOL_TAB_FILL;
--                      strncpy(cell->data, view->symbols[t]->symbol, sizeof(cell->data)-1);
--                      view->line->cells[view->col] = *cell;
--                      view->line->len += cell->len;
--                      view->line->width += cell->width;
--                      view->col++;
--              }
--              cell->len = 1;
--              return true;
-+              return view_expand_tab(view, cell);
-       case '\n':
--              cell->width = 1;
--              if (view->col + cell->width > view->width) {
--                      view->line = view->line->next;
--                      view->col = 0;
--                      if (!view->line)
--                              return false;
--                      view->line->lineno = lineno;
--              }
--
--              strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_EOL]->symbol, sizeof(cell->data)-1);
--
--              view->line->cells[view->col] = *cell;
--              view->line->len += cell->len;
--              view->line->width += cell->width;
--              for (int i = view->col + 1; i < view->width; i++)
--                      view->line->cells[i] = view->cell_blank;
--
--              view->line = view->line->next;
--              if (view->line)
--                      view->line->lineno = lineno + 1;
--              view->col = 0;
--              return true;
--      default:
--              if (ch < 128 && !isprint(ch)) {
--                      /* non-printable ascii char, represent it as ^(char + 64) */
--                      *cell = (Cell) {
--                              .data = { '^', ch == 127 ? '?' : ch + 64, '\0' },
--                              .len = 1,
--                              .width = 2,
--                              .style = cell->style,
--                      };
--              }
--
--              if (ch == ' ') {
--                      strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_SPACE]->symbol, sizeof(cell->data)-1);
--
--              }
--
--              if (view->col + cell->width > view->width) {
--                      for (int i = view->col; i < view->width; i++)
--                              view->line->cells[i] = view->cell_blank;
--                      view->line = view->line->next;
--                      view->col = 0;
--              }
-+              return view_expand_newline(view, cell);
-+      case ' ':
-+              const char *symbol = view->symbols[SYNTAX_SYMBOL_SPACE]->symbol;
-+              strncpy(cell->data, symbol, sizeof(cell->data) - 1);
-+              return view_add_cell(view, cell);
-+      }
--              if (view->line) {
--                      view->line->width += cell->width;
--                      view->line->len += cell->len;
--                      view->line->lineno = lineno;
--                      view->line->cells[view->col] = *cell;
--                      view->col++;
--                      /* set cells of a character which uses multiple columns */
--                      for (int i = 1; i < cell->width; i++)
--                              view->line->cells[view->col++] = cell_unused;
--                      return true;
--              }
--              return false;
-+      if (ch < 128 && !isprint(ch)) {
-+              /* non-printable ascii char, represent it as ^(char + 64) */
-+              *cell = (Cell) {
-+                      .data = { '^', ch == 127 ? '?' : ch + 64, '\0' },
-+                      .len = 1,
-+                      .width = 2,
-+                      .style = cell->style,
-+              };
-       }
-+      return view_add_cell(view, cell);
- }
- static void cursor_to(Selection *s, size_t pos) {
-
-From 50e75ddf8a73feab300d7789d000f9687a509f18 Mon Sep 17 00:00:00 2001
-From: Andrey Proskurin <>
-Date: Sun, 9 May 2021 18:17:20 +0000
-Subject: [PATCH 2/5] view.c: add word wrapping
-
----
- view.c | 61 +++++++++++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 45 insertions(+), 16 deletions(-)
-
-diff --git a/view.c b/view.c
-index b10deb92..e7ca8141 100644
---- a/view.c
-+++ b/view.c
-@@ -80,6 +80,10 @@ struct View {
-       bool need_update;   /* whether view has been redrawn */
-       bool large_file;    /* optimize for displaying large files */
-       int colorcolumn;
-+      // TODO lua option: breakat / brk
-+      const char *breakat; /* characters which might cause a word wrap */
-+      int wrapcol;         /* used while drawing view content, column where word wrap might happen */
-+      bool prevch_breakat; /* used while drawing view content, previous char is part of breakat */
- };
- static const SyntaxSymbol symbols_none[] = {
-@@ -109,6 +113,7 @@ static bool view_viewport_up(View *view, int n);
- static bool view_viewport_down(View *view, int n);
- static void view_clear(View *view);
-+static bool view_add_cell(View *view, const Cell *cell);
- static bool view_addch(View *view, Cell *cell);
- static void selection_free(Selection*);
- /* set/move current cursor position to a given (line, column) pair */
-@@ -156,6 +161,8 @@ static void view_clear(View *view) {
-       view->bottomline->next = NULL;
-       view->line = view->topline;
-       view->col = 0;
-+      view->wrapcol = 0;
-+      view->prevch_breakat = false;
-       if (view->ui)
-               view->cell_blank.style = view->ui->style_get(view->ui, UI_STYLE_DEFAULT);
- }
-@@ -164,19 +171,37 @@ Filerange view_viewport_get(View *view) {
-       return (Filerange){ .start = view->start, .end = view->end };
- }
-+static void view_wrap_line(View *view) {
-+      Line *cur_line = view->line;
-+      int cur_col = view->col;
-+      int wrapcol = (view->wrapcol > 0) ? view->wrapcol : cur_col;
-+      
-+      view->line = cur_line->next;
-+      view->col = 0;
-+      view->wrapcol = 0;
-+      if (view->line) {
-+              /* move extra cells to the next line */
-+              for (int i = wrapcol; i < cur_col; ++i) {
-+                      const Cell *cell = &cur_line->cells[i];
-+                      view_add_cell(view, cell);
-+                      cur_line->width -= cell->width;
-+                      cur_line->len -= cell->len;
-+              }
-+      }
-+      for (int i = wrapcol; i < view->width; ++i) {
-+              /* clear remaining of line */
-+              cur_line->cells[i] = view->cell_blank;
-+      }
-+}
-+
- static bool view_add_cell(View *view, const Cell *cell) {
-       size_t lineno = view->line->lineno;
-       
--      if (view->col + cell->width > view->width) {
--              for (int i = view->col; i < view->width; i++)
--                      view->line->cells[i] = view->cell_blank;
--              view->line = view->line->next;
--              view->col = 0;
--      }
-+      if (view->col + cell->width > view->width)
-+              view_wrap_line(view);
-       if (!view->line)
-               return false;
--      
-       view->line->width += cell->width;
-       view->line->len += cell->len;
-       view->line->lineno = lineno;
-@@ -208,22 +233,18 @@ static bool view_expand_tab(View *view, Cell *cell) {
- }
- static bool view_expand_newline(View *view, Cell *cell) {
-+      size_t lineno = view->line->lineno;
-       const char *symbol = view->symbols[SYNTAX_SYMBOL_EOL]->symbol;
-+      
-       strncpy(cell->data, symbol, sizeof(cell->data) - 1);
-       cell->width = 1;
--      
-       if (!view_add_cell(view, cell))
-               return false;
--      for (int i = view->col; i < view->width; ++i)
--              view->line->cells[i] = view->cell_blank;
--
--      size_t lineno = view->line->lineno;
--      view->line = view->line->next;
--      view->col = 0;
-+      view->wrapcol = 0;
-+      view_wrap_line(view);
-       if (view->line)
-               view->line->lineno = lineno + 1;
--      
-       return true;
- }
-@@ -233,8 +254,14 @@ static bool view_addch(View *view, Cell *cell) {
-               return false;
-       unsigned char ch = (unsigned char)cell->data[0];
-+      bool ch_breakat = strchr(view->breakat, ch);
-+      if (view->prevch_breakat && !ch_breakat) {
-+              /* this is a good place to wrap line if needed */
-+              view->wrapcol = view->col;
-+      }
-+      view->prevch_breakat = ch_breakat;
-       cell->style = view->cell_blank.style;
--
-+      
-       switch (ch) {
-       case '\t':
-               return view_expand_tab(view, cell);
-@@ -519,6 +546,8 @@ View *view_new(Text *text) {
-               .data = " ",
-       };
-       view->tabwidth = 8;
-+      // TODO default value
-+      view->breakat = "";
-       view_options_set(view, 0);
-       if (!view_resize(view, 1, 1)) {
-
-From b50672e3233e5e2d2a537d697082806a5012d6ac Mon Sep 17 00:00:00 2001
-From: Andrey Proskurin <>
-Date: Sun, 9 May 2021 21:56:36 +0000
-Subject: [PATCH 3/5] add `wrapcolumn / wc` and `breakat / brk` options
-
----
- man/vis.1  |  5 +++++
- sam.c      | 12 ++++++++++++
- view.c     | 29 +++++++++++++++++++++++------
- view.h     |  2 ++
- vis-cmds.c |  6 ++++++
- 5 files changed, 48 insertions(+), 6 deletions(-)
-
-diff --git a/man/vis.1 b/man/vis.1
-index 05433663..2f6b4754 100644
---- a/man/vis.1
-+++ b/man/vis.1
-@@ -1423,6 +1423,11 @@ WARNING: modifying a memory mapped file in-place will cause data loss.
- Whether to use vertical or horizontal layout.
- .It Cm ignorecase , Cm ic Op Cm off
- Whether to ignore case when searching.
-+.It Ic wrapcolumn , Ic wc Op Ar 0
-+Wrap lines at minimum of window width and wrapcolumn.
-+.
-+.It Ic breakat , brk Op Dq Pa ""
-+Characters which might cause a word wrap.
- .El
- .
- .Sh COMMAND and SEARCH PROMPT
-diff --git a/sam.c b/sam.c
-index 29e9c583..d7540e07 100644
---- a/sam.c
-+++ b/sam.c
-@@ -301,6 +301,8 @@ enum {
-       OPTION_CHANGE_256COLORS,
-       OPTION_LAYOUT,
-       OPTION_IGNORECASE,
-+      OPTION_BREAKAT,
-+      OPTION_WRAP_COLUMN,
- };
- static const OptionDef options[] = {
-@@ -394,6 +396,16 @@ static const OptionDef options[] = {
-               VIS_OPTION_TYPE_BOOL,
-               VIS_HELP("Ignore case when searching")
-       },
-+      [OPTION_BREAKAT] = {
-+              { "breakat", "brk" },
-+              VIS_OPTION_TYPE_STRING|VIS_OPTION_NEED_WINDOW,
-+              VIS_HELP("Characters which might cause a word wrap")
-+      },
-+      [OPTION_WRAP_COLUMN] = {
-+              { "wrapcolumn", "wc" },
-+              VIS_OPTION_TYPE_NUMBER|VIS_OPTION_NEED_WINDOW,
-+              VIS_HELP("Wrap lines at minimum of window width and wrapcolumn")
-+      },
- };
- bool sam_init(Vis *vis) {
-diff --git a/view.c b/view.c
-index e7ca8141..79fc7bc1 100644
---- a/view.c
-+++ b/view.c
-@@ -80,9 +80,9 @@ struct View {
-       bool need_update;   /* whether view has been redrawn */
-       bool large_file;    /* optimize for displaying large files */
-       int colorcolumn;
--      // TODO lua option: breakat / brk
--      const char *breakat; /* characters which might cause a word wrap */
--      int wrapcol;         /* used while drawing view content, column where word wrap might happen */
-+      char *breakat;  /* characters which might cause a word wrap */
-+      int wrapcolumn; /* wrap lines at minimum of window width and wrapcolumn (if != 0) */
-+      int wrapcol;    /* used while drawing view content, column where word wrap might happen */
-       bool prevch_breakat; /* used while drawing view content, previous char is part of breakat */
- };
-@@ -171,6 +171,12 @@ Filerange view_viewport_get(View *view) {
-       return (Filerange){ .start = view->start, .end = view->end };
- }
-+static int view_max_text_width(const View *view) {
-+      if (view->wrapcolumn > 0)
-+              return MIN(view->wrapcolumn, view->width);
-+      return view->width;
-+}
-+
- static void view_wrap_line(View *view) {
-       Line *cur_line = view->line;
-       int cur_col = view->col;
-@@ -197,7 +203,7 @@ static void view_wrap_line(View *view) {
- static bool view_add_cell(View *view, const Cell *cell) {
-       size_t lineno = view->line->lineno;
-       
--      if (view->col + cell->width > view->width)
-+      if (view->col + cell->width > view_max_text_width(view))
-               view_wrap_line(view);
-       if (!view->line)
-@@ -519,6 +525,7 @@ void view_free(View *view) {
-               selection_free(view->selections);
-       free(view->textbuf);
-       free(view->lines);
-+      free(view->breakat);
-       free(view);
- }
-@@ -546,8 +553,8 @@ View *view_new(Text *text) {
-               .data = " ",
-       };
-       view->tabwidth = 8;
--      // TODO default value
--      view->breakat = "";
-+      view->breakat = strdup("");
-+      view->wrapcolumn = 0;
-       view_options_set(view, 0);
-       if (!view_resize(view, 1, 1)) {
-@@ -891,6 +898,16 @@ int view_colorcolumn_get(View *view) {
-       return view->colorcolumn;
- }
-+void view_wrapcolumn_set(View *view, int col) {
-+      if (col >= 0)
-+              view->wrapcolumn = col;
-+}
-+
-+void view_breakat_set(View *view, const char *breakat) {
-+      free(view->breakat);
-+      view->breakat = strdup(breakat);
-+}
-+
- size_t view_screenline_goto(View *view, int n) {
-       size_t pos = view->start;
-       for (Line *line = view->topline; --n > 0 && line != view->lastline; line = line->next)
-diff --git a/view.h b/view.h
-index 31b044b8..65bcb29d 100644
---- a/view.h
-+++ b/view.h
-@@ -358,6 +358,8 @@ void view_options_set(View*, enum UiOption options);
- enum UiOption view_options_get(View*);
- void view_colorcolumn_set(View*, int col);
- int view_colorcolumn_get(View*);
-+void view_wrapcolumn_set(View*, int col);
-+void view_breakat_set(View*, const char *breakat);
- /** Set how many spaces are used to display a tab `\t` character. */
- void view_tabwidth_set(View*, int tabwidth);
-diff --git a/vis-cmds.c b/vis-cmds.c
-index f5221d14..e2bff70d 100644
---- a/vis-cmds.c
-+++ b/vis-cmds.c
-@@ -364,6 +364,12 @@ static bool cmd_set(Vis *vis, Win *win, Command *cmd, const char *argv[], Select
-       case OPTION_IGNORECASE:
-               vis->ignorecase = toggle ? !vis->ignorecase : arg.b;
-               break;
-+      case OPTION_BREAKAT:
-+              view_breakat_set(win->view, arg.s);
-+              break;
-+      case OPTION_WRAP_COLUMN:
-+              view_wrapcolumn_set(win->view, arg.i);
-+              break;
-       default:
-               if (!opt->func)
-                       return false;
-
-From ee36292c44370678f261ea843c3ebcf02fa19156 Mon Sep 17 00:00:00 2001
-From: Andrey Proskurin <>
-Date: Fri, 14 May 2021 16:44:44 +0000
-Subject: [PATCH 4/5] view.c: check return value of strdup
-
----
- view.c     | 32 +++++++++++++++++---------------
- view.h     |  2 +-
- vis-cmds.c |  5 ++++-
- 3 files changed, 22 insertions(+), 17 deletions(-)
-
-diff --git a/view.c b/view.c
-index 79fc7bc1..f1864e8b 100644
---- a/view.c
-+++ b/view.c
-@@ -273,11 +273,11 @@ static bool view_addch(View *view, Cell *cell) {
-               return view_expand_tab(view, cell);
-       case '\n':
-               return view_expand_newline(view, cell);
--      case ' ':
-+      case ' ': {
-               const char *symbol = view->symbols[SYNTAX_SYMBOL_SPACE]->symbol;
-               strncpy(cell->data, symbol, sizeof(cell->data) - 1);
-               return view_add_cell(view, cell);
--      }
-+      }}
-       if (ch < 128 && !isprint(ch)) {
-               /* non-printable ascii char, represent it as ^(char + 64) */
-@@ -541,29 +541,27 @@ View *view_new(Text *text) {
-       View *view = calloc(1, sizeof(View));
-       if (!view)
-               return NULL;
--      view->text = text;
--      if (!view_selections_new(view, 0)) {
--              view_free(view);
--              return NULL;
--      }
-+      view->text = text;
-+      view->tabwidth = 8;
-+      view->breakat = strdup("");
-+      view->wrapcolumn = 0;
-       view->cell_blank = (Cell) {
-               .width = 0,
-               .len = 0,
-               .data = " ",
-       };
--      view->tabwidth = 8;
--      view->breakat = strdup("");
--      view->wrapcolumn = 0;
-       view_options_set(view, 0);
--      if (!view_resize(view, 1, 1)) {
-+      if (!view->breakat ||
-+          !view_selections_new(view, 0) ||
-+          !view_resize(view, 1, 1))
-+      {
-               view_free(view);
-               return NULL;
-       }
--
-+      
-       view_cursor_to(view, 0);
--
-       return view;
- }
-@@ -903,9 +901,13 @@ void view_wrapcolumn_set(View *view, int col) {
-               view->wrapcolumn = col;
- }
--void view_breakat_set(View *view, const char *breakat) {
-+bool view_breakat_set(View *view, const char *breakat) {
-+      char *copy = strdup(breakat);
-+      if (!copy)
-+              return false;
-       free(view->breakat);
--      view->breakat = strdup(breakat);
-+      view->breakat = copy;
-+      return true;
- }
- size_t view_screenline_goto(View *view, int n) {
-diff --git a/view.h b/view.h
-index 65bcb29d..dadecb48 100644
---- a/view.h
-+++ b/view.h
-@@ -359,7 +359,7 @@ enum UiOption view_options_get(View*);
- void view_colorcolumn_set(View*, int col);
- int view_colorcolumn_get(View*);
- void view_wrapcolumn_set(View*, int col);
--void view_breakat_set(View*, const char *breakat);
-+bool view_breakat_set(View*, const char *breakat);
- /** Set how many spaces are used to display a tab `\t` character. */
- void view_tabwidth_set(View*, int tabwidth);
-diff --git a/vis-cmds.c b/vis-cmds.c
-index e2bff70d..d3b5f89a 100644
---- a/vis-cmds.c
-+++ b/vis-cmds.c
-@@ -365,7 +365,10 @@ static bool cmd_set(Vis *vis, Win *win, Command *cmd, const char *argv[], Select
-               vis->ignorecase = toggle ? !vis->ignorecase : arg.b;
-               break;
-       case OPTION_BREAKAT:
--              view_breakat_set(win->view, arg.s);
-+              if (!view_breakat_set(win->view, arg.s)) {
-+                      vis_info_show(vis, "Failed to set breakat");
-+                      return false;
-+              }
-               break;
-       case OPTION_WRAP_COLUMN:
-               view_wrapcolumn_set(win->view, arg.i);
-
-From f698e53e4772497c41a12288339e3841dbca9680 Mon Sep 17 00:00:00 2001
-From: Andrey Proskurin <andreyproskurin@protonmail.com>
-Date: Fri, 14 May 2021 18:46:20 +0000
-Subject: [PATCH 5/5] view.c: add utf-8 support to `breakat`
-
----
- view.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/view.c b/view.c
-index f1864e8b..a399dd02 100644
---- a/view.c
-+++ b/view.c
-@@ -260,7 +260,7 @@ static bool view_addch(View *view, Cell *cell) {
-               return false;
-       unsigned char ch = (unsigned char)cell->data[0];
--      bool ch_breakat = strchr(view->breakat, ch);
-+      bool ch_breakat = strstr(view->breakat, cell->data);
-       if (view->prevch_breakat && !ch_breakat) {
-               /* this is a good place to wrap line if needed */
-               view->wrapcol = view->col;
diff --git a/core/vis/sources b/core/vis/sources
deleted file mode 100644 (file)
index 63cb838..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-https://github.com/martanne/vis/releases/download/v0.7/vis-0.7.tar.gz
-patches/soft-wrap.patch
diff --git a/core/vis/version b/core/vis/version
deleted file mode 100644 (file)
index 6f0e2c0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0.7 3
diff --git a/core/xz/build b/core/xz/build
new file mode 100755 (executable)
index 0000000..e04e728
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-nls
+
+make
+make DESTDIR="$1" install
diff --git a/core/xz/checksums b/core/xz/checksums
new file mode 100644 (file)
index 0000000..030e2e2
--- /dev/null
@@ -0,0 +1 @@
+5117f930900b341493827d63aa910ff5e011e0b994197c3b71c08a20228a42df  xz-5.2.5.tar.bz2
diff --git a/core/xz/sources b/core/xz/sources
new file mode 100644 (file)
index 0000000..657c0be
--- /dev/null
@@ -0,0 +1 @@
+https://nchc.dl.sourceforge.net/project/lzmautils/xz-5.2.5.tar.bz2
diff --git a/core/xz/version b/core/xz/version
new file mode 100644 (file)
index 0000000..666bb36
--- /dev/null
@@ -0,0 +1 @@
+5.2.5 1
diff --git a/core/zlib/build b/core/zlib/build
new file mode 100755 (executable)
index 0000000..2426a8e
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+export CFLAGS="$CFLAGS -fPIC"
+
+./configure \
+    --prefix=/usr \
+    --libdir=/usr/lib \
+    --shared
+
+make
+make DESTDIR="$1" install
diff --git a/core/zlib/checksums b/core/zlib/checksums
new file mode 100644 (file)
index 0000000..ec1ba07
--- /dev/null
@@ -0,0 +1 @@
+c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
diff --git a/core/zlib/sources b/core/zlib/sources
new file mode 100644 (file)
index 0000000..17f901f
--- /dev/null
@@ -0,0 +1 @@
+https://zlib.net/zlib-1.2.11.tar.gz
diff --git a/core/zlib/version b/core/zlib/version
new file mode 100644 (file)
index 0000000..9028803
--- /dev/null
@@ -0,0 +1 @@
+1.2.11 1
diff --git a/core/zstd/build b/core/zstd/build
new file mode 100755 (executable)
index 0000000..431cc72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make
+make DESTDIR="$1" PREFIX=/usr install
diff --git a/core/zstd/checksums b/core/zstd/checksums
new file mode 100644 (file)
index 0000000..343920f
--- /dev/null
@@ -0,0 +1 @@
+5194fbfa781fcf45b98c5e849651aa7b3b0a008c6b72d4a0db760f3002291e94
diff --git a/core/zstd/sources b/core/zstd/sources
new file mode 100644 (file)
index 0000000..b06e693
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/facebook/zstd/releases/download/v1.5.0/zstd-1.5.0.tar.gz
diff --git a/core/zstd/version b/core/zstd/version
new file mode 100644 (file)
index 0000000..104216d
--- /dev/null
@@ -0,0 +1 @@
+1.5.0 1
diff --git a/desktop/colorpicker/build b/desktop/colorpicker/build
deleted file mode 100755 (executable)
index 7de21ee..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -e
-
-make
-make DESTDIR="$1" install
diff --git a/desktop/colorpicker/depends b/desktop/colorpicker/depends
deleted file mode 100644 (file)
index 1903bba..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libX11
diff --git a/desktop/colorpicker/sources b/desktop/colorpicker/sources
deleted file mode 100644 (file)
index d9d860e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-git+https://github.com/ym1234/colorpicker
diff --git a/desktop/colorpicker/version b/desktop/colorpicker/version
deleted file mode 100644 (file)
index a383ea1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-git 1
diff --git a/desktop/gobject-introspection/build b/desktop/gobject-introspection/build
deleted file mode 100755 (executable)
index 80efb1c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/sh -e
-
-mkdir build
-cd    build
-
-meson --prefix=/usr ..
-ninja
-DESTDIR="$1" ninja install
diff --git a/desktop/gobject-introspection/depends b/desktop/gobject-introspection/depends
deleted file mode 100644 (file)
index c84ae75..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-glib
-libffi
-meson make
-ninja make
-python
diff --git a/desktop/gobject-introspection/sources b/desktop/gobject-introspection/sources
deleted file mode 100644 (file)
index b7aeedc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-git+https://gitlab.gnome.org/GNOME/gobject-introspection.git
diff --git a/desktop/gobject-introspection/version b/desktop/gobject-introspection/version
deleted file mode 100644 (file)
index a383ea1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-git 1
diff --git a/desktop/gstreamer/build b/desktop/gstreamer/build
deleted file mode 100755 (executable)
index 3602ee7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh -e
-
-export DESTDIR="$1"
-
-sed -i \
-    -e 's/win_bison/byacc/g' \
-    -e 's/--version/-V/g' \
-    -e 's/2.4/0/g' \
-    -e 's/-1/-2/g' \
-    gst/parse/meson.build
-
-sed -i 's/yfile, '\''-o'\'', cfile/'\''-o'\'', cfile, yfile/g' \
-               gst/parse/gen_grammar.py.in
-
-meson \
-    --prefix=/usr \
-    --libexecdir=/usr/lib \
-    -Dbuildtype=release \
-    -Ddbghelp=disabled \
-    -Dintrospection=disabled \
-    -Dexamples=disabled \
-    -Dgtk_doc=disabled \
-    . output
-
-ninja -C output
-ninja -C output install
diff --git a/desktop/gstreamer/checksums b/desktop/gstreamer/checksums
deleted file mode 100644 (file)
index aea5a71..0000000
+++ /dev/null
@@ -1 +0,0 @@
-9aeec99b38e310817012aa2d1d76573b787af47f8a725a65b833880a094dfbc5
diff --git a/desktop/gstreamer/depends b/desktop/gstreamer/depends
deleted file mode 100644 (file)
index b41cbb9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-byacc make
-glib
-meson make
diff --git a/desktop/gstreamer/sources b/desktop/gstreamer/sources
deleted file mode 100644 (file)
index 35833b5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.18.4.tar.xz
diff --git a/desktop/gstreamer/version b/desktop/gstreamer/version
deleted file mode 100644 (file)
index e13698d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.18.4 1
diff --git a/desktop/gtk+3/build b/desktop/gtk+3/build
deleted file mode 100755 (executable)
index 8317fc8..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh -e
-
-# Remove 'atk-bridge' dependency which removes the 'dbus' dependency.
-sed -i 's/ATK_PACKAGES="atk atk-bridge-2.0"/ATK_PACKAGES="atk"/' \
-    configure
-
-sed -i '/<atk-bridge.h>/d;/atk_bridge_adaptor_init/d' \
-    gtk/a11y/gtkaccessibility.c
-
-# Don't build GTK examples/demos/testsuite.
-sed -i 's/demos tests testsuite examples//' Makefile.am Makefile.in
-sed -i 's/docs m4macros/m4macros/'          Makefile.am Makefile.in
-
-./configure \
-    --prefix=/usr \
-    --sysconfdir=/etc \
-    --localstatedir=/var \
-    --enable-xkb \
-    --enable-xinerama \
-    --enable-xrandr \
-    --enable-xfixes \
-    --enable-xcomposite \
-    --enable-xdamage \
-    --enable-x11-backend \
-    --disable-schemas-compile \
-    --disable-cups \
-    --disable-papi \
-    --disable-cloudprint \
-    --disable-glibtest \
-    --disable-nls \
-    --disable-installed-tests \
-    --enable-introspection=no \
-    --enable-colord=no \
-    --enable-gtk-doc-html=no
-
-make
-make DESTDIR="$1" install
-
-# We don't compile with librsvg which leads to this
-# utility solely causing compiler errors for some
-# packages. It has no use at all.
-rm -f "$1/usr/bin/gtk-encode-symbolic-svg"
diff --git a/desktop/gtk+3/checksums b/desktop/gtk+3/checksums
deleted file mode 100644 (file)
index 8e8e9ef..0000000
+++ /dev/null
@@ -1 +0,0 @@
-f57ec4ade8f15cab0c23a80dcaee85b876e70a8823d9105f067ce335a8268caa
diff --git a/desktop/gtk+3/depends b/desktop/gtk+3/depends
deleted file mode 100644 (file)
index 561ac12..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-atk
-fribidi
-gdk-pixbuf
-libXcomposite
-libXcursor
-libXdamage
-libXext
-libXi
-libXinerama
-libXrandr
-libepoxy
-pango
-pkgconf make
-python  make
diff --git a/desktop/gtk+3/post-install b/desktop/gtk+3/post-install
deleted file mode 100755 (executable)
index 75de5fa..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-glib-compile-schemas /usr/share/glib-2.0/schemas/
diff --git a/desktop/gtk+3/sources b/desktop/gtk+3/sources
deleted file mode 100644 (file)
index 42aee20..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.29.tar.xz
diff --git a/desktop/gtk+3/version b/desktop/gtk+3/version
deleted file mode 100644 (file)
index c2f912a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3.24.29 1
diff --git a/desktop/mesa/build b/desktop/mesa/build
deleted file mode 100755 (executable)
index 216a067..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh -e
-
-# Install python-mako which is solely needed for mesa
-# and thus contained in this build.
-{
-    cd mako
-
-    python3 setup.py build
-    python3 setup.py install \
-        --prefix=/usr \
-        --root="$PWD/dist"
-
-    # Use a glob to avoid having to figure out the Python
-    # version for the path below.
-    cd dist/usr/lib/python*/site-packages
-
-    # Set the PYTHONPATH so python knows where to find mako.
-    # The one liner simply appends the existing path and
-    # handles the case where an unset PYTHONPATH breaks
-    # python as it will only contain our new addition.
-    PYTHONPATH=$PWD:$(python -c "import sys; print(':'.join(sys.path))")
-
-    cd -; cd ..
-}
-
-export PYTHONPATH
-export DESTDIR="$1"
-export CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT"
-
-# Fix issues with musl and firefox.
-# https://bugs.freedesktop.org/show_bug.cgi?id=35268
-# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2
-sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build
-
-python3 bin/git_sha1_gen.py --output include/git_sha1.h
-
-meson \
-    --prefix=/usr \
-    --sysconfdir=/etc \
-    --mandir=/usr/share/man \
-    --localstatedir=/var \
-    --buildtype=release \
-    -Dplatforms=x11 \
-    -Dzstd=enabled \
-    . output
-
-ninja -C output
-ninja -C output install
-
diff --git a/desktop/mesa/checksums b/desktop/mesa/checksums
deleted file mode 100644 (file)
index 5b20e94..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-1f177f44098164b65731c5ded4c928fd58b14f6c9d2087aa0e37bc79bf79e90b
-17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab
diff --git a/desktop/mesa/depends b/desktop/mesa/depends
deleted file mode 100644 (file)
index d4eaa28..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-byacc        make
-expat
-flex         make
-libX11
-libXdamage
-libXext
-libXrandr
-libXrender
-libXxf86vm
-libdrm
-libelf
-libxcb
-libxshmfence
-linux-headers make
-llvm
-m4            make
-meson         make
-pkgconf       make
-python        make
-xorgproto
-zlib
-zstd
diff --git a/desktop/mesa/sources b/desktop/mesa/sources
deleted file mode 100644 (file)
index 8a7013f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-https://archive.mesa3d.org/mesa-21.1.4.tar.xz
-https://files.pythonhosted.org/packages/source/M/Mako/Mako-1.1.4.tar.gz mako
diff --git a/desktop/mesa/version b/desktop/mesa/version
deleted file mode 100644 (file)
index 4d18aa2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-21.1.4 2
diff --git a/desktop/mini-xdg-utils/build b/desktop/mini-xdg-utils/build
deleted file mode 100755 (executable)
index 3f7e02c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/sh -e
-
-mkdir -p "$1/usr/bin/" "$1/usr/share/xdg"
-install -Dm644 scripts/xdg-utils-common.in "$1/usr/share/xdg/common"
-
-for i in xdg-open xdg-mime; do
-    echo "source /usr/share/xdg/common" > "$1/usr/bin/$i"
-    cat scripts/$i.in >> "$1/usr/bin/$i"
-    chmod +x "$1/usr/bin/$i"
-done
diff --git a/desktop/mini-xdg-utils/checksums b/desktop/mini-xdg-utils/checksums
deleted file mode 100644 (file)
index 213c2e7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-d798b08af8a8e2063ddde6c9fa3398ca81484f27dec642c5627ffcaa0d4051d9
diff --git a/desktop/mini-xdg-utils/depends b/desktop/mini-xdg-utils/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/desktop/mini-xdg-utils/sources b/desktop/mini-xdg-utils/sources
deleted file mode 100644 (file)
index a749ac2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-http://portland.freedesktop.org/download/xdg-utils-1.1.3.tar.gz
diff --git a/desktop/mini-xdg-utils/version b/desktop/mini-xdg-utils/version
deleted file mode 100644 (file)
index 035474a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.1.3 1
diff --git a/desktop/motif/build b/desktop/motif/build
deleted file mode 100755 (executable)
index eb98e92..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/sh -e
-
-./configure --prefix=/usr
-
-make
-make DESTDIR="$1" install
diff --git a/desktop/motif/checksums b/desktop/motif/checksums
deleted file mode 100644 (file)
index a9c9355..0000000
+++ /dev/null
@@ -1 +0,0 @@
-859b723666eeac7df018209d66045c9853b50b4218cecadb794e2359619ebce7
diff --git a/desktop/motif/depends b/desktop/motif/depends
deleted file mode 100644 (file)
index 1903bba..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libX11
diff --git a/desktop/motif/sources b/desktop/motif/sources
deleted file mode 100644 (file)
index 905a8c9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://newcontinuum.dl.sourceforge.net/project/motif/Motif%202.3.8%20Source%20Code/motif-2.3.8.tar.gz
diff --git a/desktop/motif/version b/desktop/motif/version
deleted file mode 100644 (file)
index db07b3d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2.3.8 1
diff --git a/desktop/mpv/build b/desktop/mpv/build
deleted file mode 100755 (executable)
index d38ce4d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh -e
-
-ln -s waf-2.0.18 waf
-
-python waf configure \
-    --prefix=/usr \
-    --mandir=/usr/share/man \
-    --confdir=/etc/mpv \
-    --enable-alsa \
-    --enable-lua \
-    --lua=52
-
-python waf build
-python waf install --destdir="$1"
diff --git a/desktop/mpv/checksums b/desktop/mpv/checksums
deleted file mode 100644 (file)
index ba4d1cf..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-100a116b9f23bdcda3a596e9f26be3a69f166a4f1d00910d1789b6571c46f3a9
-2e0cf83a63843da127610420cef1d3126f1187d8e572b6b3a28052fc2250d4bf
diff --git a/desktop/mpv/depends b/desktop/mpv/depends
deleted file mode 100644 (file)
index 905deac..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-alsa-lib
-ffmpeg
-freetype-harfbuzz
-libXScrnSaver
-libXinerama
-libXrandr
-libass
-lua
-mesa
-pkgconf make
-python  make
-youtube-dl
diff --git a/desktop/mpv/sources b/desktop/mpv/sources
deleted file mode 100644 (file)
index 0c3bd28..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-https://github.com/mpv-player/mpv/archive/v0.33.1.tar.gz
-https://waf.io/waf-2.0.18
diff --git a/desktop/mpv/version b/desktop/mpv/version
deleted file mode 100644 (file)
index 472281f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0.33.1 1
diff --git a/desktop/qt5/build b/desktop/qt5/build
deleted file mode 100755 (executable)
index 327664f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh -e
-
-for patch in *.patch; do
-    patch -p1 < "$patch"
-done
-
-# Without this folder, Qt can't find its header files.
-mkdir .git
-
-# Don't link against execinfo.h.
-sed -i 's/define QLOG/define N/g' \
-    ./src/corelib/global/qlogging.cpp
-
-export CFLAGS="-DOPENSSL_NO_PSK -DOPENSSL_NO_NEXTPROTONEG"
-export LDFLAGS="-pthread -ldl -fPIE -Wl,-z,stack-size=2097152"
-export CXXFLAGS="${CFLAGS} -Wno-deprecated-declarations -Wno-class-memaccess -Wno-packed-not-aligned"
-export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/lib/pkgconfig"
-
-
-./configure \
-    -confirm-license \
-    -opensource \
-    -prefix /usr \
-    -docdir /usr/share/doc/qt \
-    -headerdir /usr/include/qt \
-    -archdatadir /usr/lib/qt \
-    -datadir /usr/share/qt \
-    -sysconfdir /etc/xdg \
-    -examplesdir /usr/share/doc/qt/examples \
-    -nomake examples \
-    -nomake tests \
-    -optimized-qmake \
-    -no-libudev \
-    -no-separate-debug-info \
-    -no-pch \
-    -no-dbus \
-    -no-dtls \
-    -no-accessibility \
-    -no-gtk \
-    -no-glib \
-    -system-libjpeg \
-    -system-libpng \
-    -system-sqlite \
-    -system-zlib \
-    -system-freetype \
-    -system-harfbuzz \
-    -platform linux-clang
-
-make
-make INSTALL_ROOT="$1" install
-
-install -Dm755 qt.conf "$1/usr/bin/qt.conf"
diff --git a/desktop/qt5/checksums b/desktop/qt5/checksums
deleted file mode 100644 (file)
index 1b65b30..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-909fad2591ee367993a75d7e2ea50ad4db332f05e1c38dd7a5a274e156a4e0f8
-3fe860ab3dd6d0de8829b6e1d6fb9f498918bd72adc022743e7ace350be3eb9b
-05185963447f0cedc29d1ce6b3b1d17a2fe862109391429c969b8cbe9c092b5a
-ca648987076f18b5e5088f3485b1d6eae3cec0bd61ae1cc758e85b03ca6217aa
diff --git a/desktop/qt5/depends b/desktop/qt5/depends
deleted file mode 100644 (file)
index 8311c19..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-byacc         make
-flex          make
-freetype-harfbuzz
-gperf         make
-libXslt
-libinput
-libjpeg-turbo
-libpng
-libxkbcommon
-libxml2
-linux-headers make
-m4            make
-mesa
-mtdev
-perl          make
-sqlite
-zlib
diff --git a/desktop/qt5/files/qt.conf b/desktop/qt5/files/qt.conf
deleted file mode 100644 (file)
index 32ceb6c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-[Paths]
-Prefix = /usr
-ArchData = /usr/lib/qt
-Data = /usr/share/qt
-Documentation = /usr/share/doc/qt
-Headers = /usr/include/qt
-Libraries = /usr/lib
-LibraryExecutables = /usr/lib/qt/libexec
-Binaries = /usr/bin
-Plugins = /usr/lib/qt/plugins
-Imports = /usr/lib/qt/imports
-Qml2Imports = /usr/lib/qt/qml
-Translations = /usr/share/qt/translations
-Settings = /etc/xdg
-HostData = /usr/lib/qt
-HostSpec = linux-clang-libc++
diff --git a/desktop/qt5/patches/clang-socklen-match-gcc.patch b/desktop/qt5/patches/clang-socklen-match-gcc.patch
deleted file mode 100644 (file)
index 242bf14..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/mkspecs/linux-clang/qplatformdefs.h
-+++ b/mkspecs/linux-clang/qplatformdefs.h
-@@ -81,10 +81,10 @@
- #undef QT_SOCKLEN_T
--#if defined(__GLIBC__) && (__GLIBC__ >= 2)
--#define QT_SOCKLEN_T            socklen_t
--#else
-+#if defined(__GLIBC__) && (__GLIBC__ < 2)
- #define QT_SOCKLEN_T            int
-+#else
-+#define QT_SOCKLEN_T            socklen_t
- #endif
- #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
diff --git a/desktop/qt5/patches/libressl.patch b/desktop/qt5/patches/libressl.patch
deleted file mode 100644 (file)
index 997e681..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-From 2aa448121ff62e104d333f192a7f19fc76d0cf19 Mon Sep 17 00:00:00 2001
-From: Stefan Strogin <steils@gentoo.org>
-Date: Wed, 5 Feb 2020 03:49:35 +0200
-Subject: [PATCH] [PATCH] QSslSocket - add LibreSSL support
-
-Upstream-Status: Inappropriate
-[Upstream is not willing to accept any patches for LibreSSL support]
-Signed-off-by: Stefan Strogin <steils@gentoo.org>
----
- src/network/ssl/qsslcertificate_openssl.cpp   |  2 +-
- src/network/ssl/qsslcontext_openssl.cpp       | 19 +++++++-
- src/network/ssl/qsslcontext_openssl_p.h       |  7 +++
- src/network/ssl/qsslkey_openssl.cpp           |  2 +-
- src/network/ssl/qsslsocket_openssl.cpp        |  2 +-
- .../ssl/qsslsocket_openssl_symbols.cpp        | 37 ++++++++++++++-
- .../ssl/qsslsocket_openssl_symbols_p.h        | 45 ++++++++++++++++++-
- 7 files changed, 107 insertions(+), 7 deletions(-)
-
-diff --git qtbase/src/network/ssl/qsslcertificate_openssl.cpp qtbase/src/network/ssl/qsslcertificate_openssl.cpp
-index ca9d61ccb1..19774432ce 100644
---- qtbase/src/network/ssl/qsslcertificate_openssl.cpp
-+++ qtbase/src/network/ssl/qsslcertificate_openssl.cpp
-@@ -661,7 +661,7 @@ static QMultiMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name)
-         unsigned char *data = nullptr;
-         int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
-         info.insert(name, QString::fromUtf8((char*)data, size));
--#if QT_CONFIG(opensslv11)
-+#if QT_CONFIG(opensslv11) && !defined(LIBRESSL_VERSION_NUMBER)
-         q_CRYPTO_free(data, nullptr, 0);
- #else
-         q_CRYPTO_free(data);
-diff --git qtbase/src/network/ssl/qsslcontext_openssl.cpp qtbase/src/network/ssl/qsslcontext_openssl.cpp
-index c9f202f573..2ecdbbb7e5 100644
---- qtbase/src/network/ssl/qsslcontext_openssl.cpp
-+++ qtbase/src/network/ssl/qsslcontext_openssl.cpp
-@@ -351,9 +351,11 @@ init_context:
-         return;
-     }
-+#ifndef LIBRESSL_VERSION_NUMBER
-     // A nasty hacked OpenSSL using a level that will make our auto-tests fail:
-     if (q_SSL_CTX_get_security_level(sslContext->ctx) > 1 && *forceSecurityLevel())
-         q_SSL_CTX_set_security_level(sslContext->ctx, 1);
-+#endif
-     const long anyVersion =
- #if QT_CONFIG(dtls)
-@@ -408,16 +410,28 @@ init_context:
-         maxVersion = DTLS1_VERSION;
-         break;
-     case QSsl::DtlsV1_0OrLater:
-+#ifdef DTLS_MAX_VERSION
-         minVersion = DTLS1_VERSION;
-         maxVersion = DTLS_MAX_VERSION;
-+#else
-+        Q_UNREACHABLE();
-+#endif // DTLS_MAX_VERSION
-         break;
-     case QSsl::DtlsV1_2:
-+#ifdef DTLS1_2_VERSION
-         minVersion = DTLS1_2_VERSION;
-         maxVersion = DTLS1_2_VERSION;
-+#else
-+        Q_UNREACHABLE();
-+#endif // DTLS1_2_VERSION
-         break;
-     case QSsl::DtlsV1_2OrLater:
-+#if defined(DTLS1_2_VERSION) && defined(DTLS_MAX_VERSION)
-         minVersion = DTLS1_2_VERSION;
-         maxVersion = DTLS_MAX_VERSION;
-+#else
-+        Q_UNREACHABLE();
-+#endif // DTLS1_2_VERSION && DTLS_MAX_VERSION
-         break;
-     case QSsl::TlsV1_3OrLater:
- #ifdef TLS1_3_VERSION
-@@ -722,6 +736,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext)
-     }
- #endif // ocsp
-+#ifndef LIBRESSL_VERSION_NUMBER
-     QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free);
-     if (cctx) {
-         q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx);
-@@ -768,7 +783,9 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext)
-             sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed"));
-             sslContext->errorCode = QSslError::UnspecifiedError;
-         }
--    } else {
-+    } else
-+#endif // LIBRESSL_VERSION_NUMBER
-+    {
-         sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed"));
-         sslContext->errorCode = QSslError::UnspecifiedError;
-     }
-diff --git qtbase/src/network/ssl/qsslcontext_openssl_p.h qtbase/src/network/ssl/qsslcontext_openssl_p.h
-index 70cb97aad8..01a61cf535 100644
---- qtbase/src/network/ssl/qsslcontext_openssl_p.h
-+++ qtbase/src/network/ssl/qsslcontext_openssl_p.h
-@@ -61,6 +61,13 @@
- QT_BEGIN_NAMESPACE
-+#ifndef DTLS_ANY_VERSION
-+#define DTLS_ANY_VERSION 0x1FFFF
-+#endif
-+#ifndef TLS_ANY_VERSION
-+#define TLS_ANY_VERSION 0x10000
-+#endif
-+
- #ifndef QT_NO_SSL
- class QSslContextPrivate;
-diff --git qtbase/src/network/ssl/qsslkey_openssl.cpp qtbase/src/network/ssl/qsslkey_openssl.cpp
-index 43cb8c6de8..a27336aa26 100644
---- qtbase/src/network/ssl/qsslkey_openssl.cpp
-+++ qtbase/src/network/ssl/qsslkey_openssl.cpp
-@@ -360,7 +360,7 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
-     q_EVP_CipherUpdate(ctx,
-         reinterpret_cast<unsigned char *>(output.data()), &len,
-         reinterpret_cast<const unsigned char *>(data.constData()), data.size());
--    q_EVP_CipherFinal(ctx,
-+    q_EVP_CipherFinal_ex(ctx,
-         reinterpret_cast<unsigned char *>(output.data()) + len, &i);
-     len += i;
-diff --git qtbase/src/network/ssl/qsslsocket_openssl.cpp qtbase/src/network/ssl/qsslsocket_openssl.cpp
-index 277037e59c..f599498df5 100644
---- qtbase/src/network/ssl/qsslsocket_openssl.cpp
-+++ qtbase/src/network/ssl/qsslsocket_openssl.cpp
-@@ -653,7 +653,7 @@ bool QSslSocketBackendPrivate::initSslContext()
-     else if (mode == QSslSocket::SslServerMode)
-         q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback);
--#if OPENSSL_VERSION_NUMBER >= 0x10101006L
-+#if OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER)
-     // Set the client callback for TLSv1.3 PSK
-     if (mode == QSslSocket::SslClientMode
-         && QSslSocket::sslLibraryBuildVersionNumber() >= 0x10101006L) {
-diff --git qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
-index ed80fc14bd..bad2ee2e41 100644
---- qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
-+++ qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
-@@ -146,10 +146,13 @@ DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return)
- DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return)
- DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return)
- DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return)
-+#ifndef LIBRESSL_VERSION_NUMBER
- DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return)
-+#endif
- DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return)
- DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return)
- DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return)
-+#ifndef LIBRESSL_VERSION_NUMBER
- DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return)
- DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return)
- DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
-@@ -157,10 +160,20 @@ DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return null
- DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG)
- DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG)
- DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return)
-+#else
-+DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
-+DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
-+DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return)
-+DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG)
-+DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG)
-+DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return)
-+#endif // LIBRESSL_VERSION_NUMBER
- DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return)
- DEFINEFUNC2(unsigned long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, unsigned long op, op, return 0, return)
-+#ifndef LIBRESSL_VERSION_NUMBER
- DEFINEFUNC(int, SSL_CTX_get_security_level, const SSL_CTX *ctx, ctx, return -1, return)
- DEFINEFUNC2(void, SSL_CTX_set_security_level, SSL_CTX *ctx, ctx, int level, level, return, return)
-+#endif
- #ifdef TLS1_3_VERSION
- DEFINEFUNC2(int, SSL_CTX_set_ciphersuites, SSL_CTX *ctx, ctx, const char *str, str, return 0, return)
- DEFINEFUNC2(void, SSL_set_psk_use_session_callback, SSL *ssl, ssl, q_SSL_psk_use_session_cb_func_t callback, callback, return, DUMMYARG)
-@@ -184,7 +197,11 @@ DEFINEFUNC2(void, X509_STORE_set_verify_cb, X509_STORE *a, a, X509_STORE_CTX_ver
- DEFINEFUNC3(int, X509_STORE_set_ex_data, X509_STORE *a, a, int idx, idx, void *data, data, return 0, return)
- DEFINEFUNC2(void *, X509_STORE_get_ex_data, X509_STORE *r, r, int idx, idx, return nullptr, return)
- DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return nullptr, return)
-+#ifndef LIBRESSL_VERSION_NUMBER
- DEFINEFUNC3(void, CRYPTO_free, void *str, str, const char *file, file, int line, line, return, DUMMYARG)
-+#else
-+DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
-+#endif
- DEFINEFUNC(long, OpenSSL_version_num, void, DUMMYARG, return 0, return)
- DEFINEFUNC(const char *, OpenSSL_version, int a, a, return nullptr, return)
- DEFINEFUNC(unsigned long, SSL_SESSION_get_ticket_lifetime_hint, const SSL_SESSION *session, session, return 0, return)
-@@ -224,7 +241,9 @@ DEFINEFUNC5(int, OCSP_id_get0_info, ASN1_OCTET_STRING **piNameHash, piNameHash,
-             ASN1_OCTET_STRING **piKeyHash, piKeyHash, ASN1_INTEGER **pserial, pserial, OCSP_CERTID *cid, cid,
-             return 0, return)
- DEFINEFUNC2(OCSP_RESPONSE *, OCSP_response_create, int status, status, OCSP_BASICRESP *bs, bs, return nullptr, return)
-+#ifndef LIBRESSL_VERSION_NUMBER
- DEFINEFUNC(const STACK_OF(X509) *, OCSP_resp_get0_certs, const OCSP_BASICRESP *bs, bs, return nullptr, return)
-+#endif
- DEFINEFUNC2(int, OCSP_id_cmp, OCSP_CERTID *a, a, OCSP_CERTID *b, b, return -1, return)
- DEFINEFUNC7(OCSP_SINGLERESP *, OCSP_basic_add1_status, OCSP_BASICRESP *r, r, OCSP_CERTID *c, c, int s, s,
-             int re, re, ASN1_TIME *rt, rt, ASN1_TIME *t, t, ASN1_TIME *n, n, return nullptr, return)
-@@ -269,7 +288,7 @@ DEFINEFUNC2(int, EVP_CIPHER_CTX_set_key_length, EVP_CIPHER_CTX *ctx, ctx, int ke
- DEFINEFUNC5(int, EVP_CipherInit, EVP_CIPHER_CTX *ctx, ctx, const EVP_CIPHER *type, type, const unsigned char *key, key, const unsigned char *iv, iv, int enc, enc, return 0, return)
- DEFINEFUNC6(int, EVP_CipherInit_ex, EVP_CIPHER_CTX *ctx, ctx, const EVP_CIPHER *cipher, cipher, ENGINE *impl, impl, const unsigned char *key, key, const unsigned char *iv, iv, int enc, enc, return 0, return)
- DEFINEFUNC5(int, EVP_CipherUpdate, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, const unsigned char *in, in, int inl, inl, return 0, return)
--DEFINEFUNC3(int, EVP_CipherFinal, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, return 0, return)
-+DEFINEFUNC3(int, EVP_CipherFinal_ex, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, return 0, return)
- DEFINEFUNC(const EVP_MD *, EVP_get_digestbyname, const char *name, name, return nullptr, return)
- #ifndef OPENSSL_NO_DES
- DEFINEFUNC(const EVP_CIPHER *, EVP_des_cbc, DUMMYARG, DUMMYARG, return nullptr, return)
-@@ -356,12 +375,14 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return -
- DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
- DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
- DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return)
-+#ifndef LIBRESSL_VERSION_NUMBER
- DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return);
- DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return);
- DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return);
- DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return);
- DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return);
- DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return);
-+#endif
- DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG)
- DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return)
- DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return)
-@@ -846,20 +867,26 @@ bool q_resolveOpenSslSymbols()
-     RESOLVEFUNC(EVP_CIPHER_CTX_reset)
-     RESOLVEFUNC(EVP_PKEY_up_ref)
-     RESOLVEFUNC(EVP_PKEY_CTX_new)
-+#ifndef LIBRESSL_VERSION_NUMBER
-     RESOLVEFUNC(EVP_PKEY_param_check)
-+#endif
-     RESOLVEFUNC(EVP_PKEY_CTX_free)
-     RESOLVEFUNC(EVP_PKEY_base_id)
-     RESOLVEFUNC(RSA_bits)
-+#ifndef LIBRESSL_VERSION_NUMBER
-     RESOLVEFUNC(OPENSSL_sk_new_null)
-     RESOLVEFUNC(OPENSSL_sk_push)
-     RESOLVEFUNC(OPENSSL_sk_free)
-     RESOLVEFUNC(OPENSSL_sk_num)
-     RESOLVEFUNC(OPENSSL_sk_pop_free)
-     RESOLVEFUNC(OPENSSL_sk_value)
-+#endif
-     RESOLVEFUNC(DH_get0_pqg)
-     RESOLVEFUNC(SSL_CTX_set_options)
-+#ifndef LIBRESSL_VERSION_NUMBER
-     RESOLVEFUNC(SSL_CTX_get_security_level)
-     RESOLVEFUNC(SSL_CTX_set_security_level)
-+#endif
- #ifdef TLS1_3_VERSION
-     RESOLVEFUNC(SSL_CTX_set_ciphersuites)
-     RESOLVEFUNC(SSL_set_psk_use_session_callback)
-@@ -898,7 +925,9 @@ bool q_resolveOpenSslSymbols()
-     RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint)
-     RESOLVEFUNC(DH_bits)
-+#ifndef LIBRESSL_VERSION_NUMBER
-     RESOLVEFUNC(DSA_bits)
-+#endif
- #if QT_CONFIG(dtls)
-     RESOLVEFUNC(DTLSv1_listen)
-@@ -928,7 +957,9 @@ bool q_resolveOpenSslSymbols()
-     RESOLVEFUNC(OCSP_check_validity)
-     RESOLVEFUNC(OCSP_cert_to_id)
-     RESOLVEFUNC(OCSP_id_get0_info)
-+#ifndef LIBRESSL_VERSION_NUMBER
-     RESOLVEFUNC(OCSP_resp_get0_certs)
-+#endif
-     RESOLVEFUNC(OCSP_basic_sign)
-     RESOLVEFUNC(OCSP_response_create)
-     RESOLVEFUNC(i2d_OCSP_RESPONSE)
-@@ -979,7 +1010,7 @@ bool q_resolveOpenSslSymbols()
-     RESOLVEFUNC(EVP_CipherInit)
-     RESOLVEFUNC(EVP_CipherInit_ex)
-     RESOLVEFUNC(EVP_CipherUpdate)
--    RESOLVEFUNC(EVP_CipherFinal)
-+    RESOLVEFUNC(EVP_CipherFinal_ex)
-     RESOLVEFUNC(EVP_get_digestbyname)
- #ifndef OPENSSL_NO_DES
-     RESOLVEFUNC(EVP_des_cbc)
-@@ -1058,12 +1089,14 @@ bool q_resolveOpenSslSymbols()
-     RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
-     RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
-     RESOLVEFUNC(SSL_CTX_get_cert_store);
-+#ifndef LIBRESSL_VERSION_NUMBER
-     RESOLVEFUNC(SSL_CONF_CTX_new);
-     RESOLVEFUNC(SSL_CONF_CTX_free);
-     RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
-     RESOLVEFUNC(SSL_CONF_CTX_set_flags);
-     RESOLVEFUNC(SSL_CONF_CTX_finish);
-     RESOLVEFUNC(SSL_CONF_cmd);
-+#endif
-     RESOLVEFUNC(SSL_accept)
-     RESOLVEFUNC(SSL_clear)
-     RESOLVEFUNC(SSL_connect)
-diff --git qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
-index c46afcf53e..3945bada5f 100644
---- qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
-+++ qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
-@@ -80,6 +80,13 @@ QT_BEGIN_NAMESPACE
- #define DUMMYARG
-+#ifdef LIBRESSL_VERSION_NUMBER
-+typedef _STACK STACK;
-+typedef STACK OPENSSL_STACK;
-+typedef void OPENSSL_INIT_SETTINGS;
-+typedef int (*X509_STORE_CTX_verify_cb)(int ok,X509_STORE_CTX *ctx);
-+#endif
-+
- #if !defined QT_LINKED_OPENSSL
- // **************** Shared declarations ******************
- // ret func(arg)
-@@ -230,7 +237,11 @@ const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
- Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
- Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
-+#ifndef LIBRESSL_VERSION_NUMBER
- int q_DSA_bits(DSA *a);
-+#else
-+#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p)
-+#endif
- int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
- Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
- EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
-@@ -238,12 +249,29 @@ void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
- int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
- int q_EVP_PKEY_base_id(EVP_PKEY *a);
- int q_RSA_bits(RSA *a);
-+
-+#ifndef LIBRESSL_VERSION_NUMBER
- Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
- Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
- Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
- Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
- Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
- Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
-+#else // LIBRESSL_VERSION_NUMBER
-+int q_sk_num(STACK *a);
-+#define q_OPENSSL_sk_num(a) q_sk_num(a)
-+void q_sk_pop_free(STACK *a, void (*b)(void *));
-+#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
-+STACK *q_sk_new_null();
-+#define q_OPENSSL_sk_new_null() q_sk_new_null()
-+void q_sk_push(STACK *st, void *data);
-+#define q_OPENSSL_sk_push(st, data) q_sk_push(st, data)
-+void q_sk_free(STACK *a);
-+#define q_OPENSSL_sk_free q_sk_free
-+void *q_sk_value(STACK *a, int b);
-+#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
-+#endif // LIBRESSL_VERSION_NUMBER
-+
- int q_SSL_session_reused(SSL *a);
- unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
- int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
-@@ -269,8 +297,13 @@ int q_DH_bits(DH *dh);
- # define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
-                                                        | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
-+#ifndef LIBRESSL_VERSION_NUMBER
- #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
- #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
-+#else
-+#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
-+#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
-+#endif // LIBRESSL_VERSION_NUMBER
- #define q_OPENSSL_add_all_algorithms_conf()  q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
-                                                                    | OPENSSL_INIT_ADD_ALL_DIGESTS \
-@@ -279,7 +312,11 @@ int q_DH_bits(DH *dh);
-                                                                     | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
- int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
-+#ifndef LIBRESSL_VERSION_NUMBER
- void q_CRYPTO_free(void *str, const char *file, int line);
-+#else
-+void q_CRYPTO_free(void *a);
-+#endif
- long q_OpenSSL_version_num();
- const char *q_OpenSSL_version(int type);
-@@ -395,7 +432,7 @@ int q_EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
- int q_EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, const unsigned char *key, const unsigned char *iv, int enc);
- int q_EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv, int enc);
- int q_EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl);
--int q_EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
-+int q_EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
- const EVP_MD *q_EVP_get_digestbyname(const char *name);
- #ifndef OPENSSL_NO_DES
-@@ -497,12 +534,14 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
- int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
- int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
- X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
-+#ifndef LIBRESSL_VERSION_NUMBER
- SSL_CONF_CTX *q_SSL_CONF_CTX_new();
- void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
- void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
- unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
- int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
- int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
-+#endif
- void q_SSL_free(SSL *a);
- STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a);
- const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);
-@@ -728,7 +767,11 @@ int q_OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, ASN1_GENERALIZEDTIME *n
- int q_OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, ASN1_OCTET_STRING **pikeyHash,
-                         ASN1_INTEGER **pserial, OCSP_CERTID *cid);
-+#ifndef LIBRESSL_VERSION_NUMBER
- const STACK_OF(X509) *q_OCSP_resp_get0_certs(const OCSP_BASICRESP *bs);
-+#else
-+#define q_OCSP_resp_get0_certs(bs) ((bs)->certs)
-+#endif
- Q_AUTOTEST_EXPORT OCSP_CERTID *q_OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer);
- Q_AUTOTEST_EXPORT void q_OCSP_CERTID_free(OCSP_CERTID *cid);
- int q_OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b);
--- 
-2.29.2
-
diff --git a/desktop/qt5/sources b/desktop/qt5/sources
deleted file mode 100644 (file)
index 669c5f9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtbase-everywhere-src-5.15.2.tar.xz
-files/qt.conf
-patches/clang-socklen-match-gcc.patch
-patches/libressl.patch
diff --git a/desktop/qt5/version b/desktop/qt5/version
deleted file mode 100644 (file)
index f2dc81e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5.15.2 1
diff --git a/desktop/skeous-gtk-theme/build b/desktop/skeous-gtk-theme/build
deleted file mode 100755 (executable)
index 8473d26..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/sh -e
-
-make PREFIX=/usr
-make DESTDIR="$1" install
diff --git a/desktop/skeous-gtk-theme/checksums b/desktop/skeous-gtk-theme/checksums
deleted file mode 100644 (file)
index 5a9eb05..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2d9f885e965eb9376cf149ff3839f1deb2af905e9c1eca2250a4395e029b0513
diff --git a/desktop/skeous-gtk-theme/depends b/desktop/skeous-gtk-theme/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/desktop/skeous-gtk-theme/sources b/desktop/skeous-gtk-theme/sources
deleted file mode 100644 (file)
index 26ae2a8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/daniruiz/skeuos-gtk/archive/refs/tags/20210526.tar.gz
diff --git a/desktop/skeous-gtk-theme/version b/desktop/skeous-gtk-theme/version
deleted file mode 100644 (file)
index 9b34607..0000000
+++ /dev/null
@@ -1 +0,0 @@
-20210526 1
diff --git a/desktop/webkit2gtk/build b/desktop/webkit2gtk/build
deleted file mode 100755 (executable)
index e7f85cd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-
-export DESTDIR="$1"
-
-# Remove gettext requirement.
-sed -i 's/ngettext/printf/g' Tools/MiniBrowser/gtk/BrowserDownloadsBar.c
-sed -i '/po_files \*\.po/d'  Source/WebCore/platform/gtk/po/CMakeLists.txt
-sed -i '/^GETTEXT_C/d'       Source/WebCore/platform/gtk/po/CMakeLists.txt
-
-# Fix clang build.
-sed -i '/LC_ALL/d'       Source/JavaScriptCore/jsc.cpp
-sed -i '/WTFLogAlways/d' Source/JavaScriptCore/jsc.cpp
-
-cmake -B build \
-    -DCMAKE_BUILD_TYPE=Release \
-    -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \
-    -DCMAKE_INSTALL_PREFIX=/usr \
-    -DCMAKE_SKIP_RPATH=ON \
-    -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
-    -DENABLE_GAMEPAD=OFF \
-    -DENABLE_GEOLOCATION=OFF \
-    -DENABLE_GLES2=ON \
-    -DENABLE_INTROSPECTION=OFF \
-    -DENABLE_MINIBROWSER=OFF \
-    -DENABLE_SAMPLING_PROFILER=OFF \
-    -DENABLE_SPELLCHECK=OFF \
-    -DENABLE_VIDEO=OFF \
-    -DENABLE_WEB_AUDIO=OFF \
-    -DENABLE_WEB_CRYPTO=OFF \
-    -DLIB_INSTALL_DIR=/usr/lib \
-    -DPORT=GTK \
-    -DUSE_GSTREAMER_GL=OFF \
-    -DUSE_LIBHYPHEN=OFF \
-    -DUSE_LIBNOTIFY=OFF \
-    -DUSE_LIBSECRET=OFF \
-    -DUSE_OPENJPEG=ON \
-    -DUSE_SYSTEMD=OFF \
-    -DUSE_WOFF2=OFF \
-    -DUSE_WPE_RENDERER=OFF \
-    -Wno-dev
-
-cmake --build   build
-cmake --install build
diff --git a/desktop/webkit2gtk/checksums b/desktop/webkit2gtk/checksums
deleted file mode 100644 (file)
index d54dac3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-136117317f70f66486f71b8edf5e46f8776403c5d8a296e914b11a36ef836917
diff --git a/desktop/webkit2gtk/depends b/desktop/webkit2gtk/depends
deleted file mode 100644 (file)
index 5b17708..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-cairo
-cmake  make
-glib-networking
-gperf  make
-gtk+3
-harfbuzz-icu
-libXt
-libgcrypt
-libsoup
-libwebp
-libxslt
-mesa
-openjpeg2
-perl   make
-python make
-ruby   make
-sqlite
diff --git a/desktop/webkit2gtk/sources b/desktop/webkit2gtk/sources
deleted file mode 100644 (file)
index 44800c4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://webkitgtk.org/releases/webkitgtk-2.32.1.tar.xz
diff --git a/desktop/webkit2gtk/version b/desktop/webkit2gtk/version
deleted file mode 100644 (file)
index 0bada59..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2.32.1 1
diff --git a/desktop/xvile/build b/desktop/xvile/build
deleted file mode 100755 (executable)
index 98d4340..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/sh -e
-
-[ -d /usr/share/vile ] || filters="--with-builtin-filters"
-
-./configure \
-    --prefix=/usr \
-    $filters \
-    --with-screen=neXtaw
-
-make
-make DESTDIR="$1" install
diff --git a/desktop/xvile/checksums b/desktop/xvile/checksums
deleted file mode 100644 (file)
index beb064d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-dea31c023aa7a90271056c712c826a5d16d19ad61df5cf5f299aa1025af280d6
diff --git a/desktop/xvile/depends b/desktop/xvile/depends
deleted file mode 100644 (file)
index 2a97ca9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-flex
-neXtaw
diff --git a/desktop/xvile/sources b/desktop/xvile/sources
deleted file mode 100644 (file)
index eb2480b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://invisible-mirror.net/archives/vile/vile-9.8.tgz
diff --git a/desktop/xvile/version b/desktop/xvile/version
deleted file mode 100644 (file)
index 77a50e8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-9.8 1
diff --git a/extra/acpid/build b/extra/acpid/build
new file mode 100755 (executable)
index 0000000..258802e
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sbindir=/usr/bin
+
+make
+make DESTDIR="$1" install
+
+# Install runit service.
+install -Dm755 acpid.run         "$1/etc/sv/acpid/run"
+ln -s /run/runit/supervise.acpid "$1/etc/sv/acpid/supervise"
+
+# Required otherwise daemon fails to launch.
+mkdir -p "$1/etc/acpi/events"
diff --git a/extra/acpid/checksums b/extra/acpid/checksums
new file mode 100644 (file)
index 0000000..dd8917f
--- /dev/null
@@ -0,0 +1,2 @@
+f2d2d30b3edc3234bd82f6f7186699a6aa3c85c8d20bc4e30e9b3c68a1ed157e  acpid-2.0.32.tar.xz
+ebd61afac770d3d9cae5c411f44002496fb18b28cf7b77520072a3909852246e  acpid.run
diff --git a/extra/acpid/depends b/extra/acpid/depends
new file mode 100644 (file)
index 0000000..1f97bc3
--- /dev/null
@@ -0,0 +1 @@
+linux-headers make
diff --git a/extra/acpid/files/acpid.run b/extra/acpid/files/acpid.run
new file mode 100644 (file)
index 0000000..5baf800
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec acpid -f
diff --git a/extra/acpid/sources b/extra/acpid/sources
new file mode 100644 (file)
index 0000000..7dc4321
--- /dev/null
@@ -0,0 +1,2 @@
+https://downloads.sourceforge.net/sourceforge/acpid2/acpid-2.0.32.tar.xz
+files/acpid.run
diff --git a/extra/acpid/version b/extra/acpid/version
new file mode 100644 (file)
index 0000000..df3fe75
--- /dev/null
@@ -0,0 +1 @@
+2.0.32 1
diff --git a/extra/ag/build b/extra/ag/build
deleted file mode 100755 (executable)
index eadd9f9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/sh -e
-
-./configure --prefix=/usr
-
-make
-make DESTDIR="$1" install
-
-rm -r "$1/usr/share/the_silver_searcher" "$1/usr/share/zsh"
diff --git a/extra/ag/checksums b/extra/ag/checksums
deleted file mode 100644 (file)
index c2e7910..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1e453e52c4cfee17bbbbc5e27eb7930ff3e18b7823704bdb5b2e0954c3470272
diff --git a/extra/ag/depends b/extra/ag/depends
deleted file mode 100644 (file)
index 5828762..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-automake make
-pcre
-zlib
diff --git a/extra/ag/sources b/extra/ag/sources
deleted file mode 100644 (file)
index 805b38d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://ftp.armaanb.net/software/ag/ag-git-a61f178.tar.xz
diff --git a/extra/ag/version b/extra/ag/version
deleted file mode 100644 (file)
index 2eda578..0000000
+++ /dev/null
@@ -1 +0,0 @@
-git 5
diff --git a/extra/alsa-lib/build b/extra/alsa-lib/build
new file mode 100755 (executable)
index 0000000..544d049
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+# Fix a missing include
+sed -i '/<dirent.h>/a #include <limits.h>' src/ucm/ucm_exec.c
+
+./configure \
+    --without-debug \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/alsa-lib/checksums b/extra/alsa-lib/checksums
new file mode 100644 (file)
index 0000000..11068dc
--- /dev/null
@@ -0,0 +1 @@
+628421d950cecaf234de3f899d520c0a6923313c964ad751ffac081df331438e
diff --git a/extra/alsa-lib/depends b/extra/alsa-lib/depends
new file mode 100644 (file)
index 0000000..1f97bc3
--- /dev/null
@@ -0,0 +1 @@
+linux-headers make
diff --git a/extra/alsa-lib/sources b/extra/alsa-lib/sources
new file mode 100644 (file)
index 0000000..035cb3b
--- /dev/null
@@ -0,0 +1 @@
+https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.5.1.tar.bz2
diff --git a/extra/alsa-lib/version b/extra/alsa-lib/version
new file mode 100644 (file)
index 0000000..9e7ce45
--- /dev/null
@@ -0,0 +1 @@
+1.2.5.1 1
diff --git a/extra/alsa-utils/build b/extra/alsa-utils/build
new file mode 100755 (executable)
index 0000000..54fbfa1
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+
+# Fix a missing include
+sed -i '/<syslog.h>/a #include <limits.h>' alsactl/utils.c
+
+./configure \
+    --prefix=/usr \
+    --sbindir=/usr/bin \
+    --with-udev-rules-dir=/usr/lib/udev/rules.d \
+    --disable-alsaconf \
+    --disable-bat \
+    --disable-xmlto \
+    --disable-nls
+
+make
+make DESTDIR="$1" install
diff --git a/extra/alsa-utils/checksums b/extra/alsa-utils/checksums
new file mode 100644 (file)
index 0000000..e1555d4
--- /dev/null
@@ -0,0 +1 @@
+9c169ae37a49295f9b97b92ace772803daf6b6510a19574e0b78f87e562118d0
diff --git a/extra/alsa-utils/depends b/extra/alsa-utils/depends
new file mode 100644 (file)
index 0000000..121c051
--- /dev/null
@@ -0,0 +1,3 @@
+alsa-lib
+linux-headers make
+ncurses
diff --git a/extra/alsa-utils/sources b/extra/alsa-utils/sources
new file mode 100644 (file)
index 0000000..b27d432
--- /dev/null
@@ -0,0 +1 @@
+https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.5.1.tar.bz2
diff --git a/extra/alsa-utils/version b/extra/alsa-utils/version
new file mode 100644 (file)
index 0000000..9e7ce45
--- /dev/null
@@ -0,0 +1 @@
+1.2.5.1 1
diff --git a/extra/aspell/depends b/extra/aspell/depends
deleted file mode 100644 (file)
index e69de29..0000000
index bb52117ed88cf9cf66e1bb9bd6d60985c6446592..6c00bc8596b5be886ff6c8e4933507ed91de15b0 100644 (file)
@@ -1 +1 @@
-0.60.8 2
+0.60.8 1
diff --git a/extra/atk/build b/extra/atk/build
new file mode 100755 (executable)
index 0000000..5ed96b1
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+# Don't build tests.
+sed -i "/subdir('tests')/d" meson.build
+
+meson \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man \
+    -Ddocs=false \
+    -Dintrospection=false \
+    . output
+
+ninja -C output
+ninja -C output install
diff --git a/extra/atk/checksums b/extra/atk/checksums
new file mode 100644 (file)
index 0000000..00ffc54
--- /dev/null
@@ -0,0 +1 @@
+fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788
diff --git a/extra/atk/depends b/extra/atk/depends
new file mode 100644 (file)
index 0000000..44ea227
--- /dev/null
@@ -0,0 +1,4 @@
+glib
+libffi
+meson   make
+pkgconf make
diff --git a/extra/atk/sources b/extra/atk/sources
new file mode 100644 (file)
index 0000000..069914b
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.gnome.org/pub/gnome/sources/atk/2.36/atk-2.36.0.tar.xz
diff --git a/extra/atk/version b/extra/atk/version
new file mode 100644 (file)
index 0000000..c3e6319
--- /dev/null
@@ -0,0 +1 @@
+2.36.0 1
diff --git a/extra/bmake/build b/extra/bmake/build
new file mode 100755 (executable)
index 0000000..aaa026f
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+
+cd bmake
+
+sed -i 's/build) op_test/build) /' boot-strap
+sed -i 's/     op_test//' boot-strap
+
+export CFLAGS="$CFLAGS -static"
+export LDFLAGS="$LDFLAGS -static"
+
+./boot-strap --with-default-sys-path=/usr/share/mk op=build
+INSTALL=install ./boot-strap --prefix=/usr --with-mksrc=/usr/share/mk --install-destdir="$1" op=install
+
+rm -rf "$1/usr/share/man/cat1"
+install -Dm644 bmake.1 "$1/usr/share/man/man1/bmake.1"
+ln -s bmake "$1/usr/bin/make"
diff --git a/extra/bmake/checksums b/extra/bmake/checksums
new file mode 100644 (file)
index 0000000..2e2ee57
--- /dev/null
@@ -0,0 +1 @@
+aa97b2f602fd31a71336ce97c54a1c74c2b3437fb24100830c1fff15cbd9ff3e
diff --git a/extra/bmake/sources b/extra/bmake/sources
new file mode 100644 (file)
index 0000000..a0210b4
--- /dev/null
@@ -0,0 +1 @@
+http://www.crufty.net/ftp/pub/sjg/bmake-20210621.tar.gz bmake/
diff --git a/extra/bmake/version b/extra/bmake/version
new file mode 100644 (file)
index 0000000..ef4a9ae
--- /dev/null
@@ -0,0 +1 @@
+20210621 1
diff --git a/extra/cairo/build b/extra/cairo/build
new file mode 100755 (executable)
index 0000000..597dfd0
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+
+# Disable building 'cairo-sphinx'.
+sed -i "s/BUILD_SPHINX_TRUE=/BUILD_SPHINX_TRUE='#'/"   configure
+sed -i "s/BUILD_SPHINX_FALSE='#'/BUILD_SPHINX_FALSE=/" configure
+
+# Disable building tests.
+sed -i 's/test perf//g' Makefile.in
+
+./configure \
+    --prefix=/usr \
+    --disable-static \
+    --enable-tee \
+    --enable-gl \
+    --enable-egl \
+    --enable-xlib-xcb \
+    --enable-xcb \
+    --enable-xlib-xrender \
+    --enable-xlib \
+    --disable-trace \
+    --disable-valgrind \
+    --disable-gtk-doc-html
+
+make
+make DESTDIR="$1" install
diff --git a/extra/cairo/checksums b/extra/cairo/checksums
new file mode 100644 (file)
index 0000000..83f9db7
--- /dev/null
@@ -0,0 +1 @@
+5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331
diff --git a/extra/cairo/depends b/extra/cairo/depends
new file mode 100644 (file)
index 0000000..f5621ff
--- /dev/null
@@ -0,0 +1,10 @@
+fontconfig
+glib
+libXext
+libXrender
+libffi
+libpng
+mesa
+pixman
+pkgconf make
+zlib
diff --git a/extra/cairo/sources b/extra/cairo/sources
new file mode 100644 (file)
index 0000000..e43c5aa
--- /dev/null
@@ -0,0 +1 @@
+https://cairographics.org/releases/cairo-1.16.0.tar.xz
diff --git a/extra/cairo/version b/extra/cairo/version
new file mode 100644 (file)
index 0000000..df10ebf
--- /dev/null
@@ -0,0 +1 @@
+1.16.0 1
index e47357bf8771c24387b18ac91b260f4dc6eecf89..aead5414d52678b39da0f9daee25295f3e211c74 100644 (file)
@@ -1 +1 @@
-4.3 2
+4.3 1
diff --git a/extra/checkpassword/depends b/extra/checkpassword/depends
deleted file mode 100644 (file)
index e69de29..0000000
index 273b8c9855861a357532f8c0824e24c4344e4837..338ab82067cead9a4737a6f9de97d494289adfc2 100644 (file)
@@ -1 +1 @@
-https://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
\ No newline at end of file
+https://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
diff --git a/extra/chorizo/build b/extra/chorizo/build
new file mode 100755 (executable)
index 0000000..954aa1f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make
+make PREFIX=/usr DESTDIR="$1" install
diff --git a/extra/chorizo/checksums b/extra/chorizo/checksums
new file mode 100644 (file)
index 0000000..0419344
--- /dev/null
@@ -0,0 +1 @@
+53e3f04bc42c0f1151f021993c3cee5c1247d0e2c9a8f52e0bc5e8b29f90b209
diff --git a/extra/chorizo/depends b/extra/chorizo/depends
new file mode 100644 (file)
index 0000000..7b5b7b5
--- /dev/null
@@ -0,0 +1 @@
+webkitgtk
diff --git a/extra/chorizo/sources b/extra/chorizo/sources
new file mode 100644 (file)
index 0000000..b16e5aa
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.armaanb.net/software/chorizo/chorizo-v1.0.0.tar.gz
diff --git a/extra/chorizo/version b/extra/chorizo/version
new file mode 100644 (file)
index 0000000..4448996
--- /dev/null
@@ -0,0 +1 @@
+1.0.0 1
diff --git a/extra/clac/depends b/extra/clac/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/extra/cmake/build b/extra/cmake/build
deleted file mode 100755 (executable)
index 7697439..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh -e
-
-patch -p1 < cmake-no-execinfo.patch
-
-./configure \
-    --prefix=/usr \
-    --system-curl \
-    --system-expat \
-    --system-zlib \
-    --system-bzip2
-
-make
-make DESTDIR="$1" install
-
-rm -rf \
-    "$1/usr/doc" \
-    "$1/usr/share/cmake"*/Help \
-    "$1/usr/share/vim" \
-    "$1/usr/share/emacs"
diff --git a/extra/cmake/checksums b/extra/cmake/checksums
deleted file mode 100644 (file)
index 56ff7e3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-12c8040ef5c6f1bc5b8868cede16bb7926c18980f59779e299ab52cbc6f15bb0
-93f5582efd076673f9bcb3e639bd594e378954a5a3130e5921027ede23c3325c
diff --git a/extra/cmake/depends b/extra/cmake/depends
deleted file mode 100644 (file)
index 1a51841..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-bzip2
-curl
-expat
-libressl
-linux-headers make
-zlib
diff --git a/extra/cmake/patches/cmake-no-execinfo.patch b/extra/cmake/patches/cmake-no-execinfo.patch
deleted file mode 100644 (file)
index fd1e715..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-diff --git a/Source/kwsys/SystemInformation.cxx b/Source/kwsys/SystemInformation.cxx
-index ed1cdc0..d3afe21 100644
---- a/Source/kwsys/SystemInformation.cxx
-+++ b/Source/kwsys/SystemInformation.cxx
-@@ -150,18 +150,8 @@ typedef struct rlimit ResourceLimitType;
- #  include <OS.h>
- #endif
--#if defined(KWSYS_SYSTEMINFORMATION_HAS_BACKTRACE)
--#  include <execinfo.h>
--#  if defined(KWSYS_SYSTEMINFORMATION_HAS_CPP_DEMANGLE)
--#    include <cxxabi.h>
--#  endif
--#  if defined(KWSYS_SYSTEMINFORMATION_HAS_SYMBOL_LOOKUP)
--#    include <dlfcn.h>
--#  endif
--#else
- #  undef KWSYS_SYSTEMINFORMATION_HAS_CPP_DEMANGLE
- #  undef KWSYS_SYSTEMINFORMATION_HAS_SYMBOL_LOOKUP
--#endif
- #include <cctype> // int isdigit(int c);
- #include <cstdio>
-diff --git a/Source/kwsys/kwsysPlatformTestsCXX.cxx b/Source/kwsys/kwsysPlatformTestsCXX.cxx
-index 0bfa20e..0208417 100644
---- a/Source/kwsys/kwsysPlatformTestsCXX.cxx
-+++ b/Source/kwsys/kwsysPlatformTestsCXX.cxx
-@@ -102,24 +102,6 @@ int main()
- }
- #endif
--#ifdef TEST_KWSYS_CXX_HAS_BACKTRACE
--#  if defined(__PATHSCALE__) || defined(__PATHCC__) ||                        \
--    (defined(__LSB_VERSION__) && (__LSB_VERSION__ < 41))
--backtrace does not work with this compiler or os
--#  endif
--#  if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
--#    define _GNU_SOURCE
--#  endif
--#  include <execinfo.h>
--int main()
--{
--  void* stackSymbols[256];
--  backtrace(stackSymbols, 256);
--  backtrace_symbols(&stackSymbols[0], 1);
--  return 0;
--}
--#endif
--
- #ifdef TEST_KWSYS_CXX_HAS_DLADDR
- #  if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
- #    define _GNU_SOURCE
diff --git a/extra/cmake/sources b/extra/cmake/sources
deleted file mode 100644 (file)
index 0e66b45..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-https://cmake.org/files/v3.20/cmake-3.20.5.tar.gz
-patches/cmake-no-execinfo.patch
diff --git a/extra/cmake/version b/extra/cmake/version
deleted file mode 100644 (file)
index c561214..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3.20.5 2
diff --git a/extra/colorpicker/build b/extra/colorpicker/build
new file mode 100755 (executable)
index 0000000..7de21ee
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make
+make DESTDIR="$1" install
diff --git a/extra/colorpicker/depends b/extra/colorpicker/depends
new file mode 100644 (file)
index 0000000..1903bba
--- /dev/null
@@ -0,0 +1 @@
+libX11
diff --git a/extra/colorpicker/sources b/extra/colorpicker/sources
new file mode 100644 (file)
index 0000000..d9d860e
--- /dev/null
@@ -0,0 +1 @@
+git+https://github.com/ym1234/colorpicker
diff --git a/extra/colorpicker/version b/extra/colorpicker/version
new file mode 100644 (file)
index 0000000..a383ea1
--- /dev/null
@@ -0,0 +1 @@
+git 1
diff --git a/extra/dejavu-ttf/build b/extra/dejavu-ttf/build
new file mode 100755 (executable)
index 0000000..ed4b519
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh -e
+
+for file in ttf/*.ttf; do
+    install -Dm644 "$file" "$1/usr/share/fonts/TTF/${file##*/}"
+done
diff --git a/extra/dejavu-ttf/checksums b/extra/dejavu-ttf/checksums
new file mode 100644 (file)
index 0000000..a5b8409
--- /dev/null
@@ -0,0 +1 @@
+fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7  dejavu-fonts-ttf-2.37.tar.bz2
diff --git a/extra/dejavu-ttf/post-install b/extra/dejavu-ttf/post-install
new file mode 100755 (executable)
index 0000000..60cac80
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+fc-cache -f
diff --git a/extra/dejavu-ttf/sources b/extra/dejavu-ttf/sources
new file mode 100644 (file)
index 0000000..5d17b78
--- /dev/null
@@ -0,0 +1 @@
+https://sourceforge.net/projects/dejavu/files/dejavu/2.37/dejavu-fonts-ttf-2.37.tar.bz2
diff --git a/extra/dejavu-ttf/version b/extra/dejavu-ttf/version
new file mode 100644 (file)
index 0000000..c304d36
--- /dev/null
@@ -0,0 +1 @@
+2.37 1
diff --git a/extra/dhcpcd/build b/extra/dhcpcd/build
new file mode 100755 (executable)
index 0000000..954bc10
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sbindir=/usr/bin \
+    --sysconfdir=/etc \
+    --rundir=/run \
+    --libexecdir=/usr/lib/dhcpcd
+
+make
+make DESTDIR="$1" install
+
+# Install runit service.
+install -Dm 755 dhcpcd.run        "$1/etc/sv/dhcpcd/run"
+ln -s /run/runit/supervise.dhcpcd "$1/etc/sv/dhcpcd/supervise"
diff --git a/extra/dhcpcd/checksums b/extra/dhcpcd/checksums
new file mode 100644 (file)
index 0000000..fa7c4d2
--- /dev/null
@@ -0,0 +1,2 @@
+9bac373f17e8a2f8102aecdc4be65f33de60046abb4416e543901c66861828cd
+2b56c7e91bebcd8ca87e04998551a454b19a904dfb6d1cd0a9255c2feceda418
diff --git a/extra/dhcpcd/depends b/extra/dhcpcd/depends
new file mode 100644 (file)
index 0000000..1f97bc3
--- /dev/null
@@ -0,0 +1 @@
+linux-headers make
diff --git a/extra/dhcpcd/files/dhcpcd.run b/extra/dhcpcd/files/dhcpcd.run
new file mode 100644 (file)
index 0000000..23c25c4
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec dhcpcd -BM
diff --git a/extra/dhcpcd/sources b/extra/dhcpcd/sources
new file mode 100644 (file)
index 0000000..f5f44a0
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/rsmarples/dhcpcd/archive/dhcpcd-9.4.0.tar.gz
+files/dhcpcd.run
diff --git a/extra/dhcpcd/version b/extra/dhcpcd/version
new file mode 100644 (file)
index 0000000..53139a7
--- /dev/null
@@ -0,0 +1 @@
+9.4.0 1
diff --git a/extra/dmenu/build b/extra/dmenu/build
new file mode 100755 (executable)
index 0000000..431cc72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make
+make DESTDIR="$1" PREFIX=/usr install
diff --git a/extra/dmenu/checksums b/extra/dmenu/checksums
new file mode 100644 (file)
index 0000000..5de6c5e
--- /dev/null
@@ -0,0 +1 @@
+fe18e142c4dbcf71ba5757dbbdea93b1c67d58fc206fc116664f4336deef6ed3
diff --git a/extra/dmenu/depends b/extra/dmenu/depends
new file mode 100644 (file)
index 0000000..4d83943
--- /dev/null
@@ -0,0 +1,3 @@
+libXft
+libXinerama
+xorg-server
diff --git a/extra/dmenu/sources b/extra/dmenu/sources
new file mode 100644 (file)
index 0000000..7212199
--- /dev/null
@@ -0,0 +1 @@
+https://dl.suckless.org/tools/dmenu-5.0.tar.gz
diff --git a/extra/dmenu/version b/extra/dmenu/version
new file mode 100644 (file)
index 0000000..d80bad4
--- /dev/null
@@ -0,0 +1 @@
+5.0 1
index dcdec4b9d440d3de8bbc7fb8d07e538c69c39fa3..55da98fdcfe767a7ffb9fa397e5450e395e71d6d 100644 (file)
@@ -1 +1 @@
-https://git.sr.ht/~gsthnz/dtfl/blob/master/dtfl
\ No newline at end of file
+https://git.sr.ht/~gsthnz/dtfl/blob/master/dtfl
diff --git a/extra/dwm/build b/extra/dwm/build
new file mode 100755 (executable)
index 0000000..0110ff5
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+# Amend install path to '/usr'.
+sed -i'' "s#/usr/local#/usr#" config.mk
+
+# Remove pixel gap.
+sed -i'' "s/static const int resizehints = 1/static const int resizehints = 0/" config.def.h
+
+make
+make DESTDIR="$1" install
diff --git a/extra/dwm/checksums b/extra/dwm/checksums
new file mode 100644 (file)
index 0000000..595f243
--- /dev/null
@@ -0,0 +1 @@
+97902e2e007aaeaa3c6e3bed1f81785b817b7413947f1db1d3b62b8da4cd110e  dwm-6.2.tar.gz
diff --git a/extra/dwm/depends b/extra/dwm/depends
new file mode 100644 (file)
index 0000000..f4fdd35
--- /dev/null
@@ -0,0 +1,2 @@
+libXft
+libXinerama
diff --git a/extra/dwm/sources b/extra/dwm/sources
new file mode 100644 (file)
index 0000000..c9d3f5e
--- /dev/null
@@ -0,0 +1 @@
+https://dl.suckless.org/dwm/dwm-6.2.tar.gz
diff --git a/extra/dwm/version b/extra/dwm/version
new file mode 100644 (file)
index 0000000..1fa8eec
--- /dev/null
@@ -0,0 +1 @@
+6.2 1
diff --git a/extra/e2fsprogs/build b/extra/e2fsprogs/build
new file mode 100755 (executable)
index 0000000..715722f
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh -e
+
+export LDFLAGS="$LDFLAGS -static"
+
+./configure \
+    --prefix=/usr \
+    --sbindir=/usr/bin \
+    --sysconfdir=/etc \
+    --enable-symlink-install \
+    --enable-libuuid \
+    --enable-libblkid \
+    --disable-nls \
+    --disable-uuidd \
+    --disable-fsck \
+    --disable-elf-shlibs
+
+# MKDIR_P fixes an install issue on musl/busybox.
+make
+make MKDIR_P="install -d" DESTDIR="$1" install
+
+# Our e2fsprogs build uses the private libblkid
+# and libuuid libraries which ship with it.
+#
+# It is then built statically which allows us to
+# remove the libraries entirely.
+#
+# This is all done to remove the util-linux
+# dependency from this package.
+#
+# The build system doesn't provide a target
+# for this so we must do it ourselves.
+rm -rf \
+    "$1/usr/bin/blkid" \
+    "$1/usr/bin/uuidgen" \
+    "$1/usr/bin/findfs" \
+    "$1/usr/share/man/man8/findfs.8" \
+    "$1/usr/share/man/man8/blkid.8" \
+    "$1/usr/share/man/man3/libblkid.3" \
+    "$1/usr/share/man/man3/"uuid* \
+    "$1/usr/share/man/man1/uuidgen.1" \
+    "$1/usr/lib/pkgconfig/uuid.pc" \
+    "$1/usr/lib/pkgconfig/blkid.pc" \
+    "$1/usr/lib/libuuid.a" \
+    "$1/usr/lib/libblkid.a" \
+    "$1/usr/include/blkid" \
+    "$1/usr/include/uuid"
diff --git a/extra/e2fsprogs/checksums b/extra/e2fsprogs/checksums
new file mode 100644 (file)
index 0000000..15a3252
--- /dev/null
@@ -0,0 +1 @@
+f1ef0161aa8918182d088c4b576a5485a60aa3aff3e16cf10824698af5d34dcf
diff --git a/extra/e2fsprogs/sources b/extra/e2fsprogs/sources
new file mode 100644 (file)
index 0000000..08bfe54
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/tytso/e2fsprogs/archive/v1.46.2.tar.gz
diff --git a/extra/e2fsprogs/version b/extra/e2fsprogs/version
new file mode 100644 (file)
index 0000000..49efa08
--- /dev/null
@@ -0,0 +1 @@
+1.46.2 1
diff --git a/extra/enchant/depends b/extra/enchant/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/extra/ffmpeg/build b/extra/ffmpeg/build
new file mode 100755 (executable)
index 0000000..c3dfbba
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh -e
+
+./configure \
+    --cc="${CC:-cc}" \
+    --cxx="${CXX:-c++}" \
+    --prefix=/usr \
+    --enable-shared \
+    --disable-static \
+    --enable-gpl \
+    --enable-version3 \
+    --enable-nonfree \
+    --enable-openssl \
+    --enable-libass \
+    --enable-libmp3lame \
+    --enable-libopus \
+    --enable-libvorbis \
+    --enable-libvpx \
+    --enable-libx264 \
+    --enable-libx265 \
+    --enable-libxvid \
+    --enable-libwebp \
+    --enable-libdrm \
+    --x86asmexe=nasm \
+    --disable-debug \
+    --disable-libxml2
+
+make
+make DESTDIR="$1" install
+
+rm -rf "$1/usr/share/ffmpeg/examples"
diff --git a/extra/ffmpeg/checksums b/extra/ffmpeg/checksums
new file mode 100644 (file)
index 0000000..54a682e
--- /dev/null
@@ -0,0 +1 @@
+06b10a183ce5371f915c6bb15b7b1fffbe046e8275099c96affc29e17645d909
diff --git a/extra/ffmpeg/depends b/extra/ffmpeg/depends
new file mode 100644 (file)
index 0000000..a358651
--- /dev/null
@@ -0,0 +1,15 @@
+alsa-lib
+lame
+libass
+libogg
+libressl
+libvorbis
+libvpx
+libwebp
+linux-headers make
+nasm          make
+opus
+pkgconf       make
+x264
+x265
+xvidcore
diff --git a/extra/ffmpeg/sources b/extra/ffmpeg/sources
new file mode 100644 (file)
index 0000000..db8d2b5
--- /dev/null
@@ -0,0 +1 @@
+https://www.ffmpeg.org/releases/ffmpeg-4.4.tar.xz
diff --git a/extra/ffmpeg/version b/extra/ffmpeg/version
new file mode 100644 (file)
index 0000000..3fa426f
--- /dev/null
@@ -0,0 +1 @@
+4.4 1
diff --git a/extra/file/build b/extra/file/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/file/checksums b/extra/file/checksums
new file mode 100644 (file)
index 0000000..33e0710
--- /dev/null
@@ -0,0 +1 @@
+167321f43c148a553f68a0ea7f579821ef3b11c27b8cbe158e4df897e4a5dd57
diff --git a/extra/file/depends b/extra/file/depends
new file mode 100644 (file)
index 0000000..f22003e
--- /dev/null
@@ -0,0 +1 @@
+zlib
diff --git a/extra/file/sources b/extra/file/sources
new file mode 100644 (file)
index 0000000..0978639
--- /dev/null
@@ -0,0 +1 @@
+https://astron.com/pub/file/file-5.40.tar.gz
diff --git a/extra/file/version b/extra/file/version
new file mode 100644 (file)
index 0000000..cc2c3dc
--- /dev/null
@@ -0,0 +1 @@
+5.40 1
diff --git a/extra/flex/build b/extra/flex/build
new file mode 100755 (executable)
index 0000000..2a1bda0
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    ac_cv_func_malloc_0_nonnull=yes \
+    ac_cv_func_realloc_0_nonnull=yes
+
+make
+make DESTDIR="$1" install
+
+ln -s flex "$1/usr/bin/lex"
diff --git a/extra/flex/checksums b/extra/flex/checksums
new file mode 100644 (file)
index 0000000..5f05df5
--- /dev/null
@@ -0,0 +1 @@
+e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995  flex-2.6.4.tar.gz
diff --git a/extra/flex/depends b/extra/flex/depends
new file mode 100644 (file)
index 0000000..e8fb4a1
--- /dev/null
@@ -0,0 +1 @@
+m4 make
diff --git a/extra/flex/sources b/extra/flex/sources
new file mode 100644 (file)
index 0000000..c10fca7
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
diff --git a/extra/flex/version b/extra/flex/version
new file mode 100644 (file)
index 0000000..c689264
--- /dev/null
@@ -0,0 +1 @@
+2.6.4 1
diff --git a/extra/fontconfig/build b/extra/fontconfig/build
new file mode 100755 (executable)
index 0000000..8cb6254
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+./configure \
+    AUTOMAKE=/bin/true \
+    --prefix=/usr \
+    --localstatedir=/var \
+    --sysconfdir=/etc \
+    --with-xmldir=/etc/fonts \
+    --enable-static \
+    --disable-docs \
+    --disable-nls
+
+make
+make DESTDIR="$1" install
diff --git a/extra/fontconfig/checksums b/extra/fontconfig/checksums
new file mode 100644 (file)
index 0000000..e275512
--- /dev/null
@@ -0,0 +1 @@
+a5f052cb73fd479ffb7b697980510903b563bbb55b8f7a2b001fcfb94026003c
diff --git a/extra/fontconfig/depends b/extra/fontconfig/depends
new file mode 100644 (file)
index 0000000..4bb81d1
--- /dev/null
@@ -0,0 +1,5 @@
+expat
+freetype-harfbuzz
+gperf   make
+pkgconf make
+python  make
diff --git a/extra/fontconfig/post-install b/extra/fontconfig/post-install
new file mode 100755 (executable)
index 0000000..50861de
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+fc-cache -vf
diff --git a/extra/fontconfig/sources b/extra/fontconfig/sources
new file mode 100644 (file)
index 0000000..8e4b95d
--- /dev/null
@@ -0,0 +1 @@
+https://freedesktop.org/software/fontconfig/release/fontconfig-2.13.94.tar.xz
diff --git a/extra/fontconfig/version b/extra/fontconfig/version
new file mode 100644 (file)
index 0000000..76fd9b4
--- /dev/null
@@ -0,0 +1 @@
+2.13.94 1
diff --git a/extra/fortune/build b/extra/fortune/build
deleted file mode 100755 (executable)
index efef42d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh -e
-
-install -Dm755 fortune                     "$1/usr/bin/fortune"
-install -Dm644 kiss                        "$1/usr/share/fortune/kiss"
-install -Dm644 fortune-mod/datfiles/cookie "$1/usr/share/fortune/cookie"
diff --git a/extra/fortune/checksums b/extra/fortune/checksums
deleted file mode 100644 (file)
index 65435c3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-0449c157d973d3711d57860dd861c32fd6deba8a1f3ad7fc2f28ed1999122260
-e3ade5ff950564f34dad39e7956cd15e9a32d669917b18dcbab8e02a0671120a
-bf805c1200e03b08393b7cfa5e54315d36efa5c08b8ec009020414c77697dfec
diff --git a/extra/fortune/depends b/extra/fortune/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/extra/fortune/files/kiss b/extra/fortune/files/kiss
deleted file mode 100644 (file)
index 3777e4c..0000000
+++ /dev/null
@@ -1,640 +0,0 @@
-<kiedtl> "You will see Dylan's ghost by candlelight tonight."
-%
-<dylanaraps> I say "no a lot"
-%
-<necromancy> modprobe that doozy
-%
-<dilyn> you've made me violently ill
-%
-<dilyn> Google gNoogle gUgle
-%
-<midfavila> man, I get nervous every time I power up my workstation, haha
-%
-<jaafard> Btw, dilyn, are you Dylan Araps? Or is it just a similar nick?
-<dilyn> i wish i was
-%
-<dilyn> like, at least they don't think i'm Boris Johnson's dog
-%
-<dilyn> i spent eighteen months working at starbucks; i am the stereotype of my
-degrees lmao
-%
-<ominous_anonymou> somewhere drew devault needs to change his pants and he
-doesn't know why
-%
-<midfavila1> one sec gotta cut up an onion
-%
-<midfavila> "OH WOW I CAN PUT IT IN BOTH WAYS THIS TOTALLY JUSTIFIES LOSING
-BACKWARDS COMPATIBILITY WITH EVERYTHING FROM THE PAST TWENTY-FIVE
-YEARS11!11!1!1!1!11"
-%
-<dilyn> gemini got a new bdfl
-<ctb0> who Sundar Pichai?
-%
-<dilyn> Let's just drop support for input devices
-%
- * midfavila1 nods
-%
- * midfavila1 flexes on acheam
-%
-<dilyn> I will rage
-<dilyn> and we will go back to the good old days of being the goatpiss
-organization
-%
-<acheam> doom is fine, as long as it isn't doom emacs
-<merakor> WHAT
-<acheam> I said what I said.
-<phoebos[m]1> omg
-<merakor> I AM SCREAMING AT YOU THROUGH MY IRC CLIENT ON DOOM EMACS
-<acheam> ah, the natural rage of an emacs user. Quite fitting indeed.
-%
-<dilyn> emacs is for 5head humans
-<dilyn> he has to justify learning lisp to program his OS-within-an-OS, forgive
-him
-<dilyn> what like you've never done what is essentially firing up a Windows VM
-to run notepad?
-%
-<midfavila> kiss becomes k becomes kiss
-<midfavila> the araps cycle
-%
-<dilyn> I don't need sudo to yell at me too :(
-<midfavila> it's okay dilyn I can yell at you instead
-<dilyn> thanks dad
-<midfavila> ya winning, son?
-%
-<dilyn> if my biggest contribution to this project is a bunch of fucking meme
-quotes i swear to god
-%
-<acheam> something something unix philosiphy
-<dilyn> something something changing your keymap with xorg
-<dilyn> something something do I need a xorg.conf
-<dilyn> something something how do i keyboard
-<midfavila> well idk about you but I change my keyboard layout by flashing
-firmware files
-<dilyn> man turns out i was a cuck the whole time huh
-<dilyn> why didn't I think of that!
-<midfavila> the starbucks and philosophy thing gave it away
-<midfavila> i bet you use a filthy macbook too
-%
-<kiedtl> except the matrix heathens ofc
-<acheam> *cough cough* dilyn
-<midfavila> yeah well they don't matter anyway
-<dilyn> Hey I was just trying it out(tm)
-<midfavila> nope
-<midfavila> opinion discarded
-%
-<dilyn> maybe I can convince them i'm dylan and I just misspelled my name and
-lied about living in greece
-%
-<midfavila> if dilyn is kill then we just elect another bdfl
-<midfavila> they just grow on trees after all
-<dilyn> can confirm; grew on a willow tree for fifteen years
-<midfavila> explains everything
-<dilyn> yeah it's why i cry so much
-<midfavila> why couldn't we have an oak bdfl
-<midfavila> smh
-%
-<konimex> KISS doesn't use apt so I don't know why you mention it
-<midfavila> apt is a word
-<midfavila> smh
-<midfavila> konimex should be our next-in-line bdfl
-<midfavila> switch kiss to apt
-%
-<midfavila> that sounds like a you thing no offense
-<dilyn> everyone so fiesty today
-<midfavila> i'm always fiesty
-<midfavila> but getting smacked in the face by a frying pan and not having cream
-for my tea made me extra fiest
-<sh4rm4^bnc> sounds like an ubuntu release
-<sh4rm4^bnc> fiesty fucker
-<midfavila> that should be my project role
-<midfavila> kiss linux/fiesty fucker/midfavila
-<dilyn> you say feisty, I say focker
-<acheam> feisty
-(silence)
-%
-<midfavila> if you're a KISS user I either expect you don't have a phone
-<midfavila> or you're using a rooted android
-%
-<midfavila> if you stare into #kisslinux for long enough, #kisslinux will stare
-back
-%
-<midfavila> >iPhone
-<midfavila> no
-<midfavila> bad
-<midfavila> don't make me get the newspaper
-%
-<midfavila> i just use an old blackberry
-<midfavila> although for a while I did have a GNU userland on it
-<midfavila> using nano on a blackberry is p good
-<dilyn> is this sacrilege, or cancer? i can't tell
-<midfavila> yes
-<midfavila> completely unironically I used a QNX tty on my phone as my primary
-computing environment for about a month and a half
-<midfavila> literally fight me, iToddlers
-<dilyn> I would rather have both of my thumbs sewn up my own ass and be forced
-to use TTS for a year than use a TTY on my phone
-%
-<ominous_anonymou> too many devault rants to read, i don't have time for petty
-things like reading for fun
-%
-<dilyn> I'm just so obsessed with this opinionated man
-<midfavila> nobody except me is allowed to have opinions
-%
- * dilyn cries
-<midfavila> gee guys my notification just went off but I can't see anything
-<midfavila> weird
-%
-<midfavila> NOOOOOOOOOOOOOOOOOOO YOU CAN'T JUST USE OUT OF DATE SOFTWARE!
-<midfavila> think of muh securideee :D
-<midfavila> heil CVE
-%
-<DilynCorner[m]> Now you just sound like a 200 level CSE prof
-<DilynCorner[m]> 'the answer is, of course, recursion'
-%
-<dilyn> vibin' is what i do best on the cloc
-%
-<dilyn> he's just mad he isn't poettering
-<dilyn> rip sad lad
-%
-<acheam> for (i=0; i<1000000000000; i++); do
-echo "." >> file; git commit file -m "update"; done; git push
- * dilyn chef's kiss
-<dilyn> check out this *bespoke distro*
-<dilyn> commits just say 're'
-<necromansy> commits are just an ever increasing amount of e's
-<dilyn> systemreeeeeeeeeeeeeeeeeeeeEeEeEeEeEeEEEEEEEEEEEEEEEEE
-%
-<dilyn> :)
-<midfavila> :))))))))
-<acheam> :)))))))))))))))))
-%
-<midfavila> I Can't Believe It's Not Chrome!
-%
-<acheam> mid, stop taking a monopoly in the fortune file
-<midfavila> fuckin make me
-<midfavila> can't tell me what to do
-<acheam> mid, stop taking a monopoly in the fortune file
-<dilyn> mid, stop taking a monopoly in the fortune file
- * midfavila smacks both with newspaper
-%
-<dilyn> I mean I love cankin' it to wayland as much as the next guy
-<midfavila> i too enjoy participating in circlejerks in obscure eye are see
-gahnoo's not yoonix loonix chats
-<midfavila> that's why I'm here after all
-%
-soon (tm)
-%
-<midfavila> jfc the fortunes file is literally like 80% me shitposting
-%
-<midfavila> there will always be a place for you in the embrace of xorg
-%
-<dilyn> i interface with my computer via a bluetooth chip i implanted in my
-brain
-%
-<midfavila> i'm a GOAT
-<midfavila> fuckin humans man
-%
-<acheam> oh my
-%
-<midfavila> totally unrelated but man
-<midfavila> I'm having *way* too much fun with my bayonet
-<midfavila> an adult needs to confiscate it from me
-<dilyn> teenager restraint code activated
-<dilyn> please stand by while a responsible adult is sent to your location
-%
-<midfavila1> "Kernel? Kernel who?"
-%
-<kiedtl> cc flags are so darn complicated
-<kiedtl> so much for unix simplicity
-<acheam> the solution?
-<acheam> rust.
--- Mode #kisslinux [+q acheam!*@*] by kiedtl
-<midfavila1> i'm banning you acheam
-<kiedtl> Bad.
-<acheam> :mode -q acheam
--- Mode #kisslinux [-q acheam!*@*] by kiedtl
- * midfavila1 smacks acheam cruelly for their stupidity
-<acheam> big move quieting an op
-%
-<midfavila1> "The one who does not fight, lasts the longest"
-<midfavila1> -Sun Tzu probably
-%
-(mocking midfavila) <kiedtl> "Look at me ma, I fixed an egg salad sandwich with
-a century-old bayonet"
-<midfavila1> once I have two bayonets I can do the whole "gee mid why does your
-mom let you have *two* bayonets?"
-%
-<dilyn> i've sucked dick more dismissive than that
-%
- * midfavila facedesks
-%
-<midfavila> smgl literally has a command to exorcise things
-%
-<midfavila> i said the heathen
-<midfavila> not me
-<kiedtl> you asked me to
-<midfavila> i'm like, the prophet
-<kiedtl> and you are?
-<kiedtl> the prophet of the heathen?
-<kiedtl> I'm confused
-<midfavila> the prophet of KISS
-<kiedtl> KISS is not heathen
-<midfavila> i channel the spirit of dylan
-<midfavila> using my 2x4
-<kiedtl> The spirit of dylan does not manifest itself in the bodies of the
-unsanctified.
-<midfavila> i'd use a ouija board but that's too complex
-<midfavila> and besides it's not usable by a single person
-<necromansy> gotta respect the daemons
-<midfavila> exactly
-<midfavila> you must chant "Keep it simple stupid" three times before beginning
-the trance
-<midfavila> and only then will dylan manifest
-<kiedtl> Even a heathen prophet is still not eligible for that privilege
-%
-<acheam> we need to make a #kisslinux-whining where its just a place that we
-can go to rant about software lol
-<midfavila> then this channel wouldn't get used
-%
-rtfm
-%
-<dilyn> landley couldn't have written a better grep than *checks notes*
-BurntSushi, could he??
-<dilyn> it would probably go zoom much quick
-%
-<dilyn> i take back everything. gnu is bae.
-%
-<acheam> posix shell gang
-%
-<nxghtmvrx> Any useful tips?
-<midfavila> install gentoo
-<acheam> run while you can
-<midfavila> it's already too late
-%
-<midfavila> exhaustion and low morale are huge problems. controversial
-statements only in #kisslinux
-%
-<midfavila> apply the unix philosophy to your life. do one thing and do it well.
-<midfavila> *become* the coreutil
-%
-<midfavila> normie detected
-<midfavila> termination initiated
-%
-<midfavila> ZOMG w00t!1!! XD
-<dilyn> 1337
-<necromansy> h4x0r5
-<midfavila> v37y e11t3
-<necromansy> r4wr x3
-%
-<travankor> but m-muh chemical weapons?!?
-<dilyn> god this channel is so weird
-%
-<acheam> what did the git tiny patch do?
-<acheam> besides making git tiny
-<midfavila> made it teeny, in addition to tiny
-%
-<dilyn> does it even use https
-<dilyn> lol they can insert 'dilyn eats rocks' into your logs ooohhh
-neeeoooooooooo
-<midfavila> "ereps is next"
-<dilyn> if you're https fan boy, don't CONSULT ME
-<dilyn> if i found that in a log i would deadass delete my existence
-%
-<hellboy2d> Picasso is an ati driver?
-<acheam> picasso is an artist
-<midfavila> picasso is a pain-
-<midfavila> FUCK
-<hellboy2d> KKKKKKKK
-<midfavila> godDAMN you, acheam
-%
-<midfavila> s/cringe/cringe
-%
-<necromansy> money money moneey
-<dilyn> $$$$$$$$$$$$$$$
-<dilyn> grubbing intensifies
-%
-** acheam complaining about python **
-<midfavila> the pythonista cries out in pain as he witnesses the horrors of C
-%
-<dilyn> click clack never get your time back
-%
-<dilyn> hippity hoppity your source tree is my property
-%
-<acheam> dilyn: true love is posix shell, not gurlfrend
-<dilyn> #!/bin/she
-<acheam> bad interpreter: /bin/she: no such file or directory
-<dilyn> she just doesn't understand me
-%
-<dilyn> cat /dev/null >> /dev/sdc2
-<acheam> ohh yeah thats the stuff
-<dilyn> fill my disk with zeroes daddy mmmm
-%
-<dgre> systemd rust gtk4
--- Mode #kisslinux [+q dgre!*@*] by acheam
-%
-<ominous_anonymou> but but i thought BSDs aren't relevant any more?
-%
-<acheam> if you have extra credit, spin up some tor relays, or a folding at
-home instace
-<nxghtmvrx> Mine some crypto or something lol
-<testingkirc> acheam wants to use the credit to help society nxghtmvrx wants to
-mine crypto XD
-<nxghtmvrx> Hell yes. Just make it part of botnet or some nasty stuff
-%
-<nxghtmvrx> That should be some real hard glasses. Not these modern fragile
-ones. Thinkpad in the world of sunglasses
-%
-<midfavila> before long you'll be screaming about pickles
-<dilyn> i fucking love pickles dog
-<midfavila> I'M PICKLE DYLAAAN
-%
-<omanom> max recursion depth reached!
-%
-<dilyn> perl is fucking trash
-<dilyn> why is their build system so wiggidy wiggidy wack
-<midfavila> because it's basically python for boomers
-<midfavila> combining shit and shit just gets you a bigger pile of shit
-<midfavila> you don't need a maths degree to figure that out lmao
-%
-<midfavila> perl knows best, betaboi
-<dilyn> :|
-<midfavila> :p
-<midfavila> I'm a valued contributor to this project
-<dilyn> :| |:
-<dilyn> \ ._. /
-<midfavila> lmfao
-<midfavila> you know you'd miss me if I was gone
-<dilyn> lol
-%
-<midfavila> go to your room acheam
-<midfavila> no more internet for tonight
-%
-<dilyn> welcome to the present, palememe
-%
-<dilyn> i have said many things, sometimes it's hard for even me to keep them
-all straight c:
-<acheam> the wise words of a lunatic
-%
-<acheam> mozilla is dying
-<dilyn> f
-<acheam> dilyn: you don't have a right to say f, you chromium scum
-<dilyn> mozilla is dead, and I killed him
-<acheam> *gasp*
-%
-<sh4rm4^bnc> new feature: rewrite lisp code in C because it was too slow
-<dilyn> sh4rm4^bnc: s/feature/torture device/
-%
-<hellboy2d> carbs actually works?
-%
-<merakor> I watched EmacsCon from mpv
-<merakor> Damn it, why not Emacs
-%
-<necromansy> ITS A HANDGUN
-%
-<midfavila> carry a crossbow around
-<midfavila> and that's totally a-okay
-%
-<merakor> firefox is basically "javascript implemented in rust"
-%
-<midfavila> should just rewrite your init scripts with filesystem-specific
-checkers
-<midfavila> smh
-<dilyn> i'm dead
-<dilyn> I'm dead and mid has killed me
-%
-<midfavila> Everything I Don't Like Is Literally A Cargo Cult!
-%
-<dilyn> if my hands aren't flying across my keyboard as I furiously type my
-diatribes, am I even using a computer?
-%
-<midfavila> i'm not shitposting
-<midfavila> i'm Contributing:tm:
-%
-<acheam> GUIs? we don't need no stinking GUIs!
-%
-<midfavila> all kiss linux users have a moral god-given obligation to maintain
-at least ten thousand packages
-%
-<E5ten> this just reminded me to update git, so I was terrified that my patch
-wasn't gonna apply and I was gonna have to modify it to fit the current
-upstream, which would be a nightmare cuz I just got high lol
-<merakor> I remember sending a mail patch to Dylan while drunk
-<merakor> And I sent like 5 mails because I was so fucking high and wrote 4
-garbage patches
-<merakor> All my mails were "I got it this time I'm so sorry"
-<acheam> try finding contributors of this quality anywhere else folks!
-%
-<<<<<<< HEAD
-%
-<midfavila> gotta encrypt it using the strongest cipher
-<midfavila> otherwise known as base64
-%
-<merakor> Nothing quite like the warmth of compiling Webkit on a cold morning
-%
-<nxghtmvrx> In EmacsOS with systemd-kerneld everything just works too. You may
-just switch at this point :p
-<nxghtmvrx> Its in development for 20+ light years and tools from it used in
-different OSes so no one can stop you
-<dilyn> that's a long distance to be in development
-<nxghtmvrx> So yeah we measure its development in kilometers. Don't ask why
-<nxghtmvrx> Well actually that's because of SpaceMacs I think
-%
-<dilyn> oh sweet baby fucking jesus christ
-%
-<midfavila> the virgin nxgh vs the chad acheam
-%
-<acheam> tree / | aplay
-%
-word of the day: "/usr/etc"
-%
-<acheam> midfavila: what do you mean? .tar iS compression
-<acheam> you do know that the .gz and .xz are optional, and only put there by
-legacy programs, right?
-%
-<dilyn> mfw KISSfoundation is the new Mozilla Foundation
-%
-<travankor> CDDL: the copyleft license that bsd people like
-%
-A camel is a horse designed by a committee.
-%
-This wiki is incomplete, you can help by expanding it!
-%
-<AndroUser> Hello world
-<acheam> hi AndroUser
-<kiedtl> ehlo
-<dilynm> Hallo
-<testuser_[m]> hi
-<M4R10zM0113R> helo
-<claudia02> hola.
-<eudaldgr> hola
-%
-<dilynm> I am an abuser
-%
-<acheam> we shall expand our empire with force!
-<dilyn> #manifestdestiny
-<acheam> kiss shall be known in academia for centuries to come
-<midfavila> is manifest destiny our distro slogan
-<dilyn> heck naw
-<dilyn> gotta be something like...
-<dilyn> dream distro meme distro
-<dilyn> what you wish gentoo could've been
-<midfavila> the slogan can't just be a fucking description
-<dilyn> 'the meme has gone too far'
-<dilyn> hold onto your lips?
-<midfavila> "KISS Linux: 'The meme has gone too far'"
-<midfavila> ...
-<midfavila> Slogan of the day?
-<dilyn> -wayne gretzky -michael scott -dilyn corner
-%
-<GMR> hiii bro
-<GMR> i want to join hacking groups
-<GMR> help plz
-<acheam> if you want to be a 733t hackerz, there is one crucial step:
-<acheam> create an altar to Dylan Araps, and light an effigy
-<acheam> everything after that comes naturally
-<GMR> sorry i don't understand what are you saying
-GMR (~DELL@2409:4051:7:f478:d93d:c65e:92e9:cd07) has quit (Quit: Leaving)
-%
-<kiedtl> 733t l00n1x haggerz kissing each other
-%
-<dilyn> hyperbola, parabola, webola
-<dilyn> parabopolis
-<midfavila> something something parabolas and hyperbolas are different elements
-of a shape
-<dilyn> the art of abola
-<midfavila> or something
-<midfavila> you're forgetting ebola
-<acheam> thats the one with systemd, right?
-<midfavila> systemd+ebola gnu/linux
-%
-<dilyn> isn't /usr/include your pocket reference for C
-%
-<dilyn> whenever I login to a new system my first order of business is to
-`chown -R root:root ~/*`
-<dilyn> just to show the sysadmin I have nothing to hide
-%
-<noocsharp> ive always wanted a vibrator for my terminal
-%
-<dilyn> `touch` all the things
-<necromansy> woah woah hey settle down dilyn
-%
-<dilyn> merakor: I'll peak at your patch tomorrow and see if I can reproduce
-the issue. what is /bin/sh ?
-<acheam> wow I never would have though I would have to explain this to you.
-/bin/sh is the path to the posix compliant shell on the system, jeez dilyn
-<kiedtl> *Hopefully* posix compliant
-<kiedtl> but like, the bdfl of a strictly-posix distro having to ask 'what is
-/bin/sh' is just... wow
-%
-<dilyn> big https://github.com/aabacchus/pp
-<acheam> starred it.
-<dilyn> let's abuse seo and make this the most viewed github repo
-<mmatongo> thats a big pp
-<kiedtl> wtf is this
-%
-zenomat leaves: Quit: WeeChat 3.1
-<mmatongo> YESSS
-<mmatongo> YESSS
-zenomat arrives in #kisslinux
-<mmatongo> Feel my frustration
-%
-<testuser_[m]> gnu's not unix network object model environment is alright
-%
-<dilyn> mawnk awk iawk sawk pawkerfawkl
-%
-<necromansy> \o/
-<acheam> \o/
-<dilyn> \o/
-<merakor> \o_
-<testuser_[m]> /o\
-<merakor> _o/
-<necromansy> (o/
-<phoebos> _o/
-%
-<necromansy> aight now that ive sufficiently stumbled into errors in programs,
-imma go sleep
-%
-"instead of having every app be an electron app, I turned my electron app into
-every app"
-    -- Dilyn Corner on his use of Chromium
-%
-<dilyn> i like the sound of your fork
-<acheam> did you aplay it?
-%
-<phoebos> minimalism is mostly not being smart enough to learn all the commands
-in a big program
-%
-<dilyn> fuck science lmfao
-%
-<claudia> I have no desktop for my computer. Just several spots to crouch.
-%
-<dilyn> fun is illegal
-%
-<dilyn> Is it illegal to be sexually attracted to a piece of software
-%
-zenomat leaves: Quit: Never gonna give you up, except my client just did
-%
-<dilyn> repo-bin just got heckin' chonky
-%
-<dilyn> how can you NOT have a wallpaper...
-<dilyn> black screens hurt my soul
-<acheam> I don't have a wallpaper
-<acheam> just good ol #000000
-<dilyn> burn the blasphemer
-<dilyn> it's just the psychological impact of knowing a pretty picture is there
-to catch me when chromium randomly crashes
-<dilyn> keeps me sane, you know?
-%
-<dilyn> easiest alsa setup i've ever had (:
-<dilyn> KISS == Linux on EZ mode
-%
-<acheam> "I can't believe its not shell!"
-%
-<acheam> hmmm
-%
-<dilyn> what is this, BSD?
-<dilyn> things don't make sense here
-%
-<kiedtl> Quick, someone kill dilyn!
-<kiedtl> *kill their connection
-%
-<dilyn> a pacman is a wacka wacka wacka
-%
-"Just as I thought. No actual simplicity, just some neckbeards complaining
-about software evolving in the last 20 years."
-    -- Anonymous testimonial
-%
-"Not gonna lie, the attitude of the maintainer kinda makes my skin crawl, but
-to each their own."
-    -- Anonymous testimonial
-%
-"Literally the opposite of KISS. At lest don't use hypocritical excuses for
-your crusades."
-    -- Anonymous testimonial
-%
-"Oh this touches something deep in me."
-    -- Anonymous testimonial
-%
-<dilyn> the internet is cancer. I don't blame dylan for leaving
-<jslick> uh-oh, are we needing a new bdfl again?
-<dilyn> only if these 1337 hack3r5 get me
-%
-<dilyn> I am not a salesman, just a bringer of bad omens
-%
-<thermatix> is it a bad idea to have musl and glibc at the same time?
-<dilyn> it will result in what people in the industry call "a bad time"
-<thermatix> I get the feeling you're underselling how bad a time I will have...
-%
-<acheam> deer god I hope that you're kidding
-<acheam> s/deer/dear
-<acheam> i don't care about the god of bucks
-%
-<claudia02> btw dilyn, sometimes your sarcasm takes a lot of my brain power to
-process.
-%
-<thermatix> so what you're really saying is that I'm going to immortalised as
-an amusing quote?
-<thermatix> awesome!
-%
-<dilyn> a git for femboys is a git made for me
-%
diff --git a/extra/fortune/sources b/extra/fortune/sources
deleted file mode 100644 (file)
index 5c1924c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-https://git.sr.ht/~armaan/bin/archive/v0.0.1.tar.gz
-https://github.com/shlomif/fortune-mod/releases/download/fortune-mod-3.4.1/fortune-mod-3.4.1.tar.xz fortune-mod
-files/kiss
diff --git a/extra/fortune/version b/extra/fortune/version
deleted file mode 100644 (file)
index fed9176..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0.0.1 2
diff --git a/extra/freetype-harfbuzz/build b/extra/freetype-harfbuzz/build
new file mode 100755 (executable)
index 0000000..86c7a48
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh -e
+
+build_freetype() (
+    cd freetype
+
+    CFLAGS="$CFLAGS -DDEFAULT_TT_INTERPRETER_VERSION=TT_INTERPRETER_VERSION_40" \
+    ./configure \
+        --prefix=/usr \
+        --enable-freetype-config \
+        --with-harfbuzz="$2"
+
+    make
+    make DESTDIR="$1" install
+)
+
+build_harfbuzz() (
+    # Point Harfbuzz to the Freetype files.
+    export CFLAGS="$CFLAGS -I$1/usr/include/freetype2"
+    export CXXFLAGS="$CXXFLAGS -I$1/usr/include/freetype2"
+    export LDFLAGS="$LDFLAGS -L$1/usr/lib"
+
+    cd harfbuzz
+
+    export DESTDIR="$1"
+    meson \
+        --prefix=/usr \
+        -Dpkg_config_path="$1/usr/lib/pkgconfig" \
+        -Ddefault_library=both \
+        -Dglib=enabled \
+        -Dfreetype=enabled \
+        -Dcairo=disabled \
+        -Dicu=disabled \
+        -Dbenchmark=disabled \
+        -Dtests=disabled \
+        . output
+
+    ninja -C output
+    ninja -C output install
+)
+
+build_freetype "$1" no
+build_harfbuzz "$1"
+
+# Point Freetype to the Harfbuzz files.
+export HARFBUZZ_CFLAGS="-I$PWD/harfbuzz/src"
+export HARFBUZZ_LIBS="-L$PWD/harfbuzz/output/src -lharfbuzz"
+
+build_freetype "$1" yes
diff --git a/extra/freetype-harfbuzz/checksums b/extra/freetype-harfbuzz/checksums
new file mode 100644 (file)
index 0000000..c9eabcc
--- /dev/null
@@ -0,0 +1,2 @@
+86a854d8905b19698bbc8f23b860bc104246ce4854dcea8e3b0fb21284f75784
+b3f17394c5bccee456172b2b30ddec0bb87e9c5df38b4559a973d14ccd04509d
diff --git a/extra/freetype-harfbuzz/depends b/extra/freetype-harfbuzz/depends
new file mode 100644 (file)
index 0000000..6b36f25
--- /dev/null
@@ -0,0 +1,19 @@
+bzip2
+expat
+glib
+libX11
+libXau
+libXdamage
+libXext
+libXfixes
+libXrender
+libXxf86vm
+libdrm
+libpng
+libxcb
+libxshmfence
+mesa
+meson   make
+pixman
+pkgconf make
+zlib
diff --git a/extra/freetype-harfbuzz/sources b/extra/freetype-harfbuzz/sources
new file mode 100644 (file)
index 0000000..1773f70
--- /dev/null
@@ -0,0 +1,2 @@
+https://download-mirror.savannah.gnu.org/releases/freetype/freetype-2.10.4.tar.xz freetype
+https://github.com/harfbuzz/harfbuzz/archive/2.8.1.tar.gz harfbuzz
diff --git a/extra/freetype-harfbuzz/version b/extra/freetype-harfbuzz/version
new file mode 100644 (file)
index 0000000..93d2d3f
--- /dev/null
@@ -0,0 +1 @@
+2.10.4+2.8.1 1
diff --git a/extra/fribidi/build b/extra/fribidi/build
new file mode 100755 (executable)
index 0000000..cdabf58
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-static
+
+make
+make DESTDIR="$1" install
diff --git a/extra/fribidi/checksums b/extra/fribidi/checksums
new file mode 100644 (file)
index 0000000..2a5dfc8
--- /dev/null
@@ -0,0 +1 @@
+7f1c687c7831499bcacae5e8675945a39bacbad16ecaa945e9454a32df653c01  fribidi-1.0.10.tar.xz
diff --git a/extra/fribidi/sources b/extra/fribidi/sources
new file mode 100644 (file)
index 0000000..0ddde5e
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/fribidi/fribidi/releases/download/v1.0.10/fribidi-1.0.10.tar.xz
diff --git a/extra/fribidi/version b/extra/fribidi/version
new file mode 100644 (file)
index 0000000..2d248d7
--- /dev/null
@@ -0,0 +1 @@
+1.0.10 1
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -0,0 +1 @@
+
diff --git a/extra/gdk-pixbuf/build b/extra/gdk-pixbuf/build
new file mode 100755 (executable)
index 0000000..1d4c839
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+sed -i "/subdir('tests')/d" meson.build
+
+meson \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man \
+    -Dgir=false \
+    -Djasper=false \
+    -Dpng=true \
+    -Ddocs=false \
+    -Dman=false \
+    -Dgio_sniffing=false \
+    -Dinstalled_tests=false \
+    -Dbuiltin_loaders=all \
+    . output
+
+ninja -C output
+ninja -C output install
diff --git a/extra/gdk-pixbuf/checksums b/extra/gdk-pixbuf/checksums
new file mode 100644 (file)
index 0000000..12f4eac
--- /dev/null
@@ -0,0 +1 @@
+c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f
diff --git a/extra/gdk-pixbuf/depends b/extra/gdk-pixbuf/depends
new file mode 100644 (file)
index 0000000..9f23cbd
--- /dev/null
@@ -0,0 +1,5 @@
+glib
+libX11
+libpng
+meson   make
+pkgconf make
diff --git a/extra/gdk-pixbuf/post-install b/extra/gdk-pixbuf/post-install
new file mode 100755 (executable)
index 0000000..b97f005
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+gdk-pixbuf-query-loaders --update-cache
diff --git a/extra/gdk-pixbuf/sources b/extra/gdk-pixbuf/sources
new file mode 100644 (file)
index 0000000..680a73f
--- /dev/null
@@ -0,0 +1 @@
+https://download.gnome.org/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.6.tar.xz
diff --git a/extra/gdk-pixbuf/version b/extra/gdk-pixbuf/version
new file mode 100644 (file)
index 0000000..038a394
--- /dev/null
@@ -0,0 +1 @@
+2.42.6 1
diff --git a/extra/giflib/build b/extra/giflib/build
new file mode 100755 (executable)
index 0000000..431cc72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make
+make DESTDIR="$1" PREFIX=/usr install
diff --git a/extra/giflib/checksums b/extra/giflib/checksums
new file mode 100644 (file)
index 0000000..023118b
--- /dev/null
@@ -0,0 +1 @@
+31da5562f44c5f15d63340a09a4fd62b48c45620cd302f77a6d9acf0077879bd  giflib-5.2.1.tar.gz
diff --git a/extra/giflib/sources b/extra/giflib/sources
new file mode 100644 (file)
index 0000000..dc1326b
--- /dev/null
@@ -0,0 +1 @@
+https://downloads.sourceforge.net/giflib/giflib-5.2.1.tar.gz
diff --git a/extra/giflib/version b/extra/giflib/version
new file mode 100644 (file)
index 0000000..a06ff62
--- /dev/null
@@ -0,0 +1 @@
+5.2.1 1
diff --git a/extra/girara/build b/extra/girara/build
new file mode 100755 (executable)
index 0000000..79b33a0
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+meson build \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --buildtype=release \
+    -Djson=enabled \
+    -Dnotify=disabled \
+    -Ddocs=disabled \
+    -Dtests=disabled 
+
+DESTDIR="$1" ninja -C build install
diff --git a/extra/girara/checksums b/extra/girara/checksums
new file mode 100644 (file)
index 0000000..8c2e5bb
--- /dev/null
@@ -0,0 +1 @@
+ce6bc8cb95ec886dc01c6ce8ea8ccf1d17db523d78dec1aa380115b2804971d8  0.3.5.tar.gz
diff --git a/extra/girara/depends b/extra/girara/depends
new file mode 100644 (file)
index 0000000..b9d1b6e
--- /dev/null
@@ -0,0 +1,5 @@
+glib
+gtk+3
+json-c
+meson make
+pkgconf make
diff --git a/extra/girara/sources b/extra/girara/sources
new file mode 100644 (file)
index 0000000..422cb59
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/pwmt/girara/archive/0.3.5.tar.gz
diff --git a/extra/girara/version b/extra/girara/version
new file mode 100644 (file)
index 0000000..86cee77
--- /dev/null
@@ -0,0 +1 @@
+0.3.5 1 
diff --git a/extra/glib-networking/build b/extra/glib-networking/build
new file mode 100755 (executable)
index 0000000..b2f67d5
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+# Don't build tests that fail due to `gnutls` not being built with `p11-kit`.
+sed -i "/subdir('tls\/tests')/d" meson.build
+
+meson \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --localstatedir=/var \
+    -Dlibproxy=disabled \
+    -Dopenssl=disabled \
+    -Dgnutls=enabled \
+    . output
+
+ninja -C output
+ninja -C output install
diff --git a/extra/glib-networking/checksums b/extra/glib-networking/checksums
new file mode 100644 (file)
index 0000000..3fbcbf1
--- /dev/null
@@ -0,0 +1 @@
+d05d8bd124a9f53fc2b93b18f2386d512e4f48bc5a80470a7967224f3bf53b30
diff --git a/extra/glib-networking/depends b/extra/glib-networking/depends
new file mode 100644 (file)
index 0000000..da4851d
--- /dev/null
@@ -0,0 +1,4 @@
+glib
+gnutls
+meson make
+pkgconf make
diff --git a/extra/glib-networking/sources b/extra/glib-networking/sources
new file mode 100644 (file)
index 0000000..422533d
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.gnome.org/pub/gnome/sources/glib-networking/2.68/glib-networking-2.68.1.tar.xz
diff --git a/extra/glib-networking/version b/extra/glib-networking/version
new file mode 100644 (file)
index 0000000..be5bbb4
--- /dev/null
@@ -0,0 +1 @@
+2.68.1 1
diff --git a/extra/glib/build b/extra/glib/build
new file mode 100755 (executable)
index 0000000..a476dcd
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+# Remove 'libelf' and 'util-linux' dependencies.
+sed -i 's/HAVE_LIBELF/HAVE_ASD/'      gio/meson.build
+sed -i 's/libmount_dep.found()/false/' meson.build
+
+# Don't build tests/fuzzing stuff.
+find . -type f -name meson.build -exec \
+    sed -i "/subdir('tests')/d;/subdir('fuzzing')/d" {} +
+
+meson \
+    --prefix=/usr \
+    -Dlibmount=disabled \
+    -Dinstalled_tests=false \
+    -Ddefault_library=both \
+    -Dman=false \
+    -Dfam=false \
+    -Dinternal_pcre=true \
+    . build
+
+ninja -C build
+ninja -C build install
+
+rm -rf "$1/usr/bin/gdbus"
diff --git a/extra/glib/checksums b/extra/glib/checksums
new file mode 100644 (file)
index 0000000..87396a4
--- /dev/null
@@ -0,0 +1 @@
+e7e1a3c20c026109c45c9ec4a31d8dcebc22e86c69486993e565817d64be3138
diff --git a/extra/glib/depends b/extra/glib/depends
new file mode 100644 (file)
index 0000000..f7659f3
--- /dev/null
@@ -0,0 +1,4 @@
+libffi
+meson   make
+pkgconf make
+zlib
diff --git a/extra/glib/sources b/extra/glib/sources
new file mode 100644 (file)
index 0000000..5c66aca
--- /dev/null
@@ -0,0 +1 @@
+https://download.gnome.org/sources/glib/2.68/glib-2.68.3.tar.xz
diff --git a/extra/glib/version b/extra/glib/version
new file mode 100644 (file)
index 0000000..51f3a41
--- /dev/null
@@ -0,0 +1 @@
+2.68.3 1
diff --git a/extra/gnutls/build b/extra/gnutls/build
new file mode 100755 (executable)
index 0000000..52f527a
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-nls \
+    --with-nettle-mini \
+    --with-included-libtasn1 \
+    --with-included-unistring \
+    --enable-static \
+    --without-p11-kit
+
+make
+make DESTDIR="$1" install
diff --git a/extra/gnutls/checksums b/extra/gnutls/checksums
new file mode 100644 (file)
index 0000000..837e755
--- /dev/null
@@ -0,0 +1 @@
+1b79b381ac283d8b054368b335c408fedcb9b7144e0c07f531e3537d4328f3b3
diff --git a/extra/gnutls/depends b/extra/gnutls/depends
new file mode 100644 (file)
index 0000000..bf6011a
--- /dev/null
@@ -0,0 +1,2 @@
+nettle
+pkgconf make
diff --git a/extra/gnutls/sources b/extra/gnutls/sources
new file mode 100644 (file)
index 0000000..e8e85f2
--- /dev/null
@@ -0,0 +1 @@
+https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.16.tar.xz
diff --git a/extra/gnutls/version b/extra/gnutls/version
new file mode 100644 (file)
index 0000000..227c9c9
--- /dev/null
@@ -0,0 +1 @@
+3.6.16 1
diff --git a/extra/gobject-introspection/build b/extra/gobject-introspection/build
new file mode 100755 (executable)
index 0000000..80efb1c
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/sh -e
+
+mkdir build
+cd    build
+
+meson --prefix=/usr ..
+ninja
+DESTDIR="$1" ninja install
diff --git a/extra/gobject-introspection/depends b/extra/gobject-introspection/depends
new file mode 100644 (file)
index 0000000..c84ae75
--- /dev/null
@@ -0,0 +1,5 @@
+glib
+libffi
+meson make
+ninja make
+python
diff --git a/extra/gobject-introspection/sources b/extra/gobject-introspection/sources
new file mode 100644 (file)
index 0000000..b7aeedc
--- /dev/null
@@ -0,0 +1 @@
+git+https://gitlab.gnome.org/GNOME/gobject-introspection.git
diff --git a/extra/gobject-introspection/version b/extra/gobject-introspection/version
new file mode 100644 (file)
index 0000000..a383ea1
--- /dev/null
@@ -0,0 +1 @@
+git 1
diff --git a/extra/gperf/build b/extra/gperf/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/gperf/checksums b/extra/gperf/checksums
new file mode 100644 (file)
index 0000000..96f73ec
--- /dev/null
@@ -0,0 +1 @@
+588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2  gperf-3.1.tar.gz
diff --git a/extra/gperf/sources b/extra/gperf/sources
new file mode 100644 (file)
index 0000000..2ead637
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz
diff --git a/extra/gperf/version b/extra/gperf/version
new file mode 100644 (file)
index 0000000..e751c9e
--- /dev/null
@@ -0,0 +1 @@
+3.1 1
diff --git a/extra/gstreamer/build b/extra/gstreamer/build
new file mode 100755 (executable)
index 0000000..3602ee7
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+sed -i \
+    -e 's/win_bison/byacc/g' \
+    -e 's/--version/-V/g' \
+    -e 's/2.4/0/g' \
+    -e 's/-1/-2/g' \
+    gst/parse/meson.build
+
+sed -i 's/yfile, '\''-o'\'', cfile/'\''-o'\'', cfile, yfile/g' \
+               gst/parse/gen_grammar.py.in
+
+meson \
+    --prefix=/usr \
+    --libexecdir=/usr/lib \
+    -Dbuildtype=release \
+    -Ddbghelp=disabled \
+    -Dintrospection=disabled \
+    -Dexamples=disabled \
+    -Dgtk_doc=disabled \
+    . output
+
+ninja -C output
+ninja -C output install
diff --git a/extra/gstreamer/checksums b/extra/gstreamer/checksums
new file mode 100644 (file)
index 0000000..aea5a71
--- /dev/null
@@ -0,0 +1 @@
+9aeec99b38e310817012aa2d1d76573b787af47f8a725a65b833880a094dfbc5
diff --git a/extra/gstreamer/depends b/extra/gstreamer/depends
new file mode 100644 (file)
index 0000000..b41cbb9
--- /dev/null
@@ -0,0 +1,3 @@
+byacc make
+glib
+meson make
diff --git a/extra/gstreamer/sources b/extra/gstreamer/sources
new file mode 100644 (file)
index 0000000..35833b5
--- /dev/null
@@ -0,0 +1 @@
+https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.18.4.tar.xz
diff --git a/extra/gstreamer/version b/extra/gstreamer/version
new file mode 100644 (file)
index 0000000..e13698d
--- /dev/null
@@ -0,0 +1 @@
+1.18.4 1
diff --git a/extra/gtk+3/build b/extra/gtk+3/build
new file mode 100755 (executable)
index 0000000..8317fc8
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh -e
+
+# Remove 'atk-bridge' dependency which removes the 'dbus' dependency.
+sed -i 's/ATK_PACKAGES="atk atk-bridge-2.0"/ATK_PACKAGES="atk"/' \
+    configure
+
+sed -i '/<atk-bridge.h>/d;/atk_bridge_adaptor_init/d' \
+    gtk/a11y/gtkaccessibility.c
+
+# Don't build GTK examples/demos/testsuite.
+sed -i 's/demos tests testsuite examples//' Makefile.am Makefile.in
+sed -i 's/docs m4macros/m4macros/'          Makefile.am Makefile.in
+
+./configure \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --localstatedir=/var \
+    --enable-xkb \
+    --enable-xinerama \
+    --enable-xrandr \
+    --enable-xfixes \
+    --enable-xcomposite \
+    --enable-xdamage \
+    --enable-x11-backend \
+    --disable-schemas-compile \
+    --disable-cups \
+    --disable-papi \
+    --disable-cloudprint \
+    --disable-glibtest \
+    --disable-nls \
+    --disable-installed-tests \
+    --enable-introspection=no \
+    --enable-colord=no \
+    --enable-gtk-doc-html=no
+
+make
+make DESTDIR="$1" install
+
+# We don't compile with librsvg which leads to this
+# utility solely causing compiler errors for some
+# packages. It has no use at all.
+rm -f "$1/usr/bin/gtk-encode-symbolic-svg"
diff --git a/extra/gtk+3/checksums b/extra/gtk+3/checksums
new file mode 100644 (file)
index 0000000..8e8e9ef
--- /dev/null
@@ -0,0 +1 @@
+f57ec4ade8f15cab0c23a80dcaee85b876e70a8823d9105f067ce335a8268caa
diff --git a/extra/gtk+3/depends b/extra/gtk+3/depends
new file mode 100644 (file)
index 0000000..561ac12
--- /dev/null
@@ -0,0 +1,14 @@
+atk
+fribidi
+gdk-pixbuf
+libXcomposite
+libXcursor
+libXdamage
+libXext
+libXi
+libXinerama
+libXrandr
+libepoxy
+pango
+pkgconf make
+python  make
diff --git a/extra/gtk+3/post-install b/extra/gtk+3/post-install
new file mode 100755 (executable)
index 0000000..75de5fa
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+glib-compile-schemas /usr/share/glib-2.0/schemas/
diff --git a/extra/gtk+3/sources b/extra/gtk+3/sources
new file mode 100644 (file)
index 0000000..42aee20
--- /dev/null
@@ -0,0 +1 @@
+https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.29.tar.xz
diff --git a/extra/gtk+3/version b/extra/gtk+3/version
new file mode 100644 (file)
index 0000000..c2f912a
--- /dev/null
@@ -0,0 +1 @@
+3.24.29 1
diff --git a/extra/harfbuzz-icu/build b/extra/harfbuzz-icu/build
new file mode 100755 (executable)
index 0000000..1cf8e03
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh -e
+
+# Will store the built package's files to
+# allow us to cherry-pick the ICU related files.
+mkdir -p tmp
+export DESTDIR="$PWD/tmp"
+
+meson \
+    --prefix=/usr \
+    -Dglib=enabled \
+    -Dicu=enabled \
+    -Dicu_builtin=false \
+    -Dbenchmark=disabled \
+    -Dcairo=disabled \
+    -Ddocs=disabled \
+    . output
+
+ninja -C output
+ninja -C output install
+
+install -Dt "$1/usr/lib"              tmp/usr/lib/libharfbuzz-icu*
+install -Dt "$1/usr/lib/pkgconfig"    tmp/usr/lib/pkgconfig/harfbuzz-icu.pc
+install -Dt "$1/usr/include/harfbuzz" tmp/usr/include/harfbuzz/hb-icu.h
diff --git a/extra/harfbuzz-icu/checksums b/extra/harfbuzz-icu/checksums
new file mode 100644 (file)
index 0000000..d98b9c8
--- /dev/null
@@ -0,0 +1 @@
+b3f17394c5bccee456172b2b30ddec0bb87e9c5df38b4559a973d14ccd04509d
diff --git a/extra/harfbuzz-icu/depends b/extra/harfbuzz-icu/depends
new file mode 100644 (file)
index 0000000..f103c80
--- /dev/null
@@ -0,0 +1,3 @@
+freetype-harfbuzz
+icu
+meson make
diff --git a/extra/harfbuzz-icu/sources b/extra/harfbuzz-icu/sources
new file mode 100644 (file)
index 0000000..edf4292
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/harfbuzz/harfbuzz/archive/2.8.1.tar.gz
diff --git a/extra/harfbuzz-icu/version b/extra/harfbuzz-icu/version
new file mode 100644 (file)
index 0000000..4214617
--- /dev/null
@@ -0,0 +1 @@
+2.8.1 1
diff --git a/extra/icu/build b/extra/icu/build
new file mode 100755 (executable)
index 0000000..39bb094
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+# Change the order for checking installed compilers as
+# the ccache clang symlink might exist, but clang might not be installed.
+sed -i 's/clang gcc cc/cc clang gcc/g'       source/configure
+sed -i 's/clang++ g++ c++/c++ clang++ g++/g' source/configure
+
+source/configure \
+    --prefix=/usr \
+    --sbindir=/usr/bin
+
+make
+make DESTDIR="$1" install
diff --git a/extra/icu/checksums b/extra/icu/checksums
new file mode 100644 (file)
index 0000000..0127fd6
--- /dev/null
@@ -0,0 +1 @@
+4cba7b7acd1d3c42c44bb0c14be6637098c7faf2b330ce876bc5f3b915d09745
diff --git a/extra/icu/sources b/extra/icu/sources
new file mode 100644 (file)
index 0000000..86d8a44
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz
diff --git a/extra/icu/version b/extra/icu/version
new file mode 100644 (file)
index 0000000..4156826
--- /dev/null
@@ -0,0 +1 @@
+69.1 1
diff --git a/extra/intltool/build b/extra/intltool/build
deleted file mode 100755 (executable)
index eb98e92..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/sh -e
-
-./configure --prefix=/usr
-
-make
-make DESTDIR="$1" install
diff --git a/extra/intltool/checksums b/extra/intltool/checksums
deleted file mode 100644 (file)
index 8c1cad0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd
diff --git a/extra/intltool/depends b/extra/intltool/depends
deleted file mode 100644 (file)
index 5084e70..0000000
+++ /dev/null
@@ -1 +0,0 @@
-perl-xml # in midfavila's repo
diff --git a/extra/intltool/sources b/extra/intltool/sources
deleted file mode 100644 (file)
index 852fad1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz
diff --git a/extra/intltool/version b/extra/intltool/version
deleted file mode 100644 (file)
index 302672a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0.51.0 2
diff --git a/extra/isync/build b/extra/isync/build
deleted file mode 100755 (executable)
index 04b682f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh -e
-
-./configure \
-    --prefix=/usr \
-    --without-sasl
-
-make
-make DESTDIR="$1" install
diff --git a/extra/isync/checksums b/extra/isync/checksums
deleted file mode 100644 (file)
index 6de528b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1935e7ed412fd6b5928aaea656f290aa8d3222c5feda31534903934ce4755343
diff --git a/extra/isync/depends b/extra/isync/depends
deleted file mode 100644 (file)
index 9ee911a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-libressl
-zlib
diff --git a/extra/isync/sources b/extra/isync/sources
deleted file mode 100644 (file)
index 1ce49ee..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://downloads.sourceforge.net/sourceforge/isync/isync-1.4.2.tar.gz
diff --git a/extra/isync/version b/extra/isync/version
deleted file mode 100644 (file)
index c87d200..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.4.2 2
diff --git a/extra/jetbrainsmono-nf/depends b/extra/jetbrainsmono-nf/depends
deleted file mode 100644 (file)
index e69de29..0000000
index a6309ed2b2e542af02997298a4de6203116976da..57532361926015c28a5ead5cd08e85ca75f15442 100644 (file)
@@ -1 +1 @@
-4.6 2
+4.6 1
diff --git a/extra/json-c/build b/extra/json-c/build
new file mode 100755 (executable)
index 0000000..7f4f480
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+cmake -B build \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_INSTALL_LIBDIR=lib \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DBUILD_TESTING=OFF
+
+cmake --build   build
+cmake --install build
diff --git a/extra/json-c/checksums b/extra/json-c/checksums
new file mode 100644 (file)
index 0000000..7f35ddc
--- /dev/null
@@ -0,0 +1 @@
+4ba9a090a42cf1e12b84c64e4464bb6fb893666841d5843cc5bef90774028882  json-c-0.15-20200726.tar.gz
diff --git a/extra/json-c/depends b/extra/json-c/depends
new file mode 100644 (file)
index 0000000..7d91ec2
--- /dev/null
@@ -0,0 +1 @@
+cmake make
diff --git a/extra/json-c/sources b/extra/json-c/sources
new file mode 100644 (file)
index 0000000..d72f151
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/json-c/json-c/archive/json-c-0.15-20200726.tar.gz
diff --git a/extra/json-c/version b/extra/json-c/version
new file mode 100644 (file)
index 0000000..a78cbfc
--- /dev/null
@@ -0,0 +1 @@
+0.15 1
diff --git a/extra/lame/build b/extra/lame/build
new file mode 100755 (executable)
index 0000000..9e85cfc
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-shared
+
+make
+make DESTDIR="$1" install
diff --git a/extra/lame/checksums b/extra/lame/checksums
new file mode 100644 (file)
index 0000000..3b885b2
--- /dev/null
@@ -0,0 +1 @@
+ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e  lame-3.100.tar.gz
diff --git a/extra/lame/sources b/extra/lame/sources
new file mode 100644 (file)
index 0000000..8cc2835
--- /dev/null
@@ -0,0 +1 @@
+https://downloads.sourceforge.net/lame/lame-3.100.tar.gz
diff --git a/extra/lame/version b/extra/lame/version
new file mode 100644 (file)
index 0000000..3e9a898
--- /dev/null
@@ -0,0 +1 @@
+3.100 1
diff --git a/extra/lcms/build b/extra/lcms/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/lcms/checksums b/extra/lcms/checksums
new file mode 100644 (file)
index 0000000..4af6c15
--- /dev/null
@@ -0,0 +1 @@
+e501f1482fc424550ef3abbf86bf1c66090e1661249e89552d39ed5bf935df66
diff --git a/extra/lcms/depends b/extra/lcms/depends
new file mode 100644 (file)
index 0000000..ba6ea94
--- /dev/null
@@ -0,0 +1,2 @@
+libjpeg-turbo
+tiff
diff --git a/extra/lcms/sources b/extra/lcms/sources
new file mode 100644 (file)
index 0000000..81188e6
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/mm2/Little-CMS/archive/2.12.tar.gz
diff --git a/extra/lcms/version b/extra/lcms/version
new file mode 100644 (file)
index 0000000..469c791
--- /dev/null
@@ -0,0 +1 @@
+2.12 1
diff --git a/extra/libass/build b/extra/libass/build
new file mode 100755 (executable)
index 0000000..1193889
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-fontconfig
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libass/checksums b/extra/libass/checksums
new file mode 100644 (file)
index 0000000..ea2a7e0
--- /dev/null
@@ -0,0 +1 @@
+1cdd39c9d007b06e737e7738004d7f38cf9b1e92843f37307b24e7ff63ab8e53
diff --git a/extra/libass/depends b/extra/libass/depends
new file mode 100644 (file)
index 0000000..4220926
--- /dev/null
@@ -0,0 +1,6 @@
+expat
+fontconfig
+freetype-harfbuzz
+fribidi
+nasm    make
+pkgconf make
diff --git a/extra/libass/sources b/extra/libass/sources
new file mode 100644 (file)
index 0000000..a627189
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/libass/libass/releases/download/0.15.1/libass-0.15.1.tar.xz
diff --git a/extra/libass/version b/extra/libass/version
new file mode 100644 (file)
index 0000000..a506fde
--- /dev/null
@@ -0,0 +1 @@
+0.15.1 1
diff --git a/extra/libdrm/build b/extra/libdrm/build
new file mode 100755 (executable)
index 0000000..a4efcbe
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+meson \
+    --prefix=/usr \
+    . build
+
+ninja -C build
+ninja -C build install
diff --git a/extra/libdrm/checksums b/extra/libdrm/checksums
new file mode 100644 (file)
index 0000000..fc2e6e1
--- /dev/null
@@ -0,0 +1 @@
+c554cef03b033636a975543eab363cc19081cb464595d3da1ec129f87370f888
diff --git a/extra/libdrm/depends b/extra/libdrm/depends
new file mode 100644 (file)
index 0000000..58247fb
--- /dev/null
@@ -0,0 +1,4 @@
+libpciaccess
+linux-headers make
+meson         make
+pkgconf       make
diff --git a/extra/libdrm/sources b/extra/libdrm/sources
new file mode 100644 (file)
index 0000000..4de5763
--- /dev/null
@@ -0,0 +1 @@
+https://dri.freedesktop.org/libdrm/libdrm-2.4.107.tar.xz
diff --git a/extra/libdrm/version b/extra/libdrm/version
new file mode 100644 (file)
index 0000000..5e5f0bf
--- /dev/null
@@ -0,0 +1 @@
+2.4.107 1
diff --git a/extra/libelf/build b/extra/libelf/build
new file mode 100755 (executable)
index 0000000..4c2da98
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh -e
+
+# Build sometimes forces -Werror.
+export CFLAGS="$CFLAGS -Wno-error"
+
+# Disable configure error for missing argp, fts, and obstack.
+sed -i -e 's/as_fn_error.*argp/: "/g' \
+       -e 's/as_fn_error.*fts/: "/g' \
+       -e 's/as_fn_error.*obstack/: "/g' configure
+
+# Don't compile two unrelated C files which require argp.
+sed -i 's/color.*printversion../#/g' lib/Makefile.in
+
+./configure \
+    --prefix=/usr \
+    --disable-symbol-versioning \
+    --disable-debuginfod \
+    --disable-nls \
+    ac_cv_c99=yes # Override check for Clang.
+
+# Skip the default make target and build only what we need.
+make -C lib
+make -C libelf
+make -C libelf DESTDIR="$1" install
+
+mkdir -p "$1/usr/lib/pkgconfig"
+cp -f config/libelf.pc "$1/usr/lib/pkgconfig/libelf.pc"
diff --git a/extra/libelf/checksums b/extra/libelf/checksums
new file mode 100644 (file)
index 0000000..d5dbb04
--- /dev/null
@@ -0,0 +1,2 @@
+dc8d3e74ab209465e7f568e1b3bb9a5a142f8656e2b57d10049a73da2ae6b5a6
+bf11b56670c7919b44e33b5b0f3a216b7f20cf2859b74bf5e2e837532f8e0579
diff --git a/extra/libelf/depends b/extra/libelf/depends
new file mode 100644 (file)
index 0000000..70b01bc
--- /dev/null
@@ -0,0 +1,2 @@
+pkgconf make
+zlib
diff --git a/extra/libelf/files/error.h b/extra/libelf/files/error.h
new file mode 100644 (file)
index 0000000..ef06827
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _ERROR_H_
+#define _ERROR_H_
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+static unsigned int error_message_count = 0;
+
+static inline void error(int status, int errnum, const char* format, ...)
+{
+       va_list ap;
+       fprintf(stderr, "%s: ", program_invocation_name);
+       va_start(ap, format);
+       vfprintf(stderr, format, ap);
+       va_end(ap);
+       if (errnum)
+               fprintf(stderr, ": %s", strerror(errnum));
+       fprintf(stderr, "\n");
+       error_message_count++;
+       if (status)
+               exit(status);
+}
+
+#endif /* _ERROR_H_ */
diff --git a/extra/libelf/sources b/extra/libelf/sources
new file mode 100644 (file)
index 0000000..1903c16
--- /dev/null
@@ -0,0 +1,2 @@
+https://sourceware.org/elfutils/ftp/0.185/elfutils-0.185.tar.bz2
+files/error.h lib
diff --git a/extra/libelf/version b/extra/libelf/version
new file mode 100644 (file)
index 0000000..4b6b3ae
--- /dev/null
@@ -0,0 +1 @@
+0.185 1
diff --git a/extra/libepoxy/build b/extra/libepoxy/build
new file mode 100755 (executable)
index 0000000..5447552
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+meson \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man \
+    -Dhas-dlvsym=false \
+    . output
+
+ninja -C output
+ninja -C output install
diff --git a/extra/libepoxy/checksums b/extra/libepoxy/checksums
new file mode 100644 (file)
index 0000000..836b50e
--- /dev/null
@@ -0,0 +1 @@
+0cd80cb040b75cbe77fadd45c48282ebab82d845c597ce11ee5e8cb9c1efeabb
diff --git a/extra/libepoxy/depends b/extra/libepoxy/depends
new file mode 100644 (file)
index 0000000..e68256b
--- /dev/null
@@ -0,0 +1,2 @@
+mesa  make
+meson make
diff --git a/extra/libepoxy/sources b/extra/libepoxy/sources
new file mode 100644 (file)
index 0000000..5d6338d
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/anholt/libepoxy/archive/1.5.8.tar.gz
diff --git a/extra/libepoxy/version b/extra/libepoxy/version
new file mode 100644 (file)
index 0000000..7f26b0d
--- /dev/null
@@ -0,0 +1 @@
+1.5.8 1
diff --git a/extra/libevdev/build b/extra/libevdev/build
new file mode 100755 (executable)
index 0000000..0cccff6
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-gcov
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libevdev/checksums b/extra/libevdev/checksums
new file mode 100644 (file)
index 0000000..9a572ce
--- /dev/null
@@ -0,0 +1 @@
+63f4ea1489858a109080e0b40bd43e4e0903a1e12ea888d581db8c495747c2d0
diff --git a/extra/libevdev/depends b/extra/libevdev/depends
new file mode 100644 (file)
index 0000000..0efd8db
--- /dev/null
@@ -0,0 +1,2 @@
+linux-headers make
+python        make
diff --git a/extra/libevdev/sources b/extra/libevdev/sources
new file mode 100644 (file)
index 0000000..839ef67
--- /dev/null
@@ -0,0 +1 @@
+https://www.freedesktop.org/software/libevdev/libevdev-1.11.0.tar.xz
diff --git a/extra/libevdev/version b/extra/libevdev/version
new file mode 100644 (file)
index 0000000..0da43b1
--- /dev/null
@@ -0,0 +1 @@
+1.11.0 1
diff --git a/extra/libexif/build b/extra/libexif/build
new file mode 100755 (executable)
index 0000000..dd147fb
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-nls \
+    ac_cv_path_DOXYGEN=false
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libexif/checksums b/extra/libexif/checksums
new file mode 100644 (file)
index 0000000..1724924
--- /dev/null
@@ -0,0 +1 @@
+5048f1c8fc509cc636c2f97f4b40c293338b6041a5652082d5ee2cf54b530c56  libexif-0.6.22.tar.xz
diff --git a/extra/libexif/sources b/extra/libexif/sources
new file mode 100644 (file)
index 0000000..1ac73b4
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/libexif/libexif/releases/download/libexif-0_6_22-release/libexif-0.6.22.tar.xz
diff --git a/extra/libexif/version b/extra/libexif/version
new file mode 100644 (file)
index 0000000..4da7a56
--- /dev/null
@@ -0,0 +1 @@
+0.6.22 1
diff --git a/extra/libinput/build b/extra/libinput/build
new file mode 100755 (executable)
index 0000000..52895f7
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+pkg-config --exists libudev || {
+    printf 'udev (or libudev-zero) is required\n'
+    exit 1
+}
+
+meson \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man \
+    --libexecdir=/usr/lib \
+    -Ddebug-gui=false \
+    -Ddocumentation=false \
+    -Dtests=false \
+    -Dlibwacom=false \
+    . output
+
+ninja -C output
+ninja -C output install
diff --git a/extra/libinput/checksums b/extra/libinput/checksums
new file mode 100644 (file)
index 0000000..f62e01c
--- /dev/null
@@ -0,0 +1 @@
+65a657490de896081935cf0830a9773aa76756b8e9961edeffcce1074706bbe6
diff --git a/extra/libinput/depends b/extra/libinput/depends
new file mode 100644 (file)
index 0000000..c323c7a
--- /dev/null
@@ -0,0 +1,5 @@
+libevdev
+linux-headers make
+meson         make
+mtdev
+pkgconf       make
diff --git a/extra/libinput/post-install b/extra/libinput/post-install
new file mode 100755 (executable)
index 0000000..e682fc0
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+cat <<EOF
+
+NOTE: You also need \e[1mxf86-input-libinput\e[m.
+
+EOF
diff --git a/extra/libinput/sources b/extra/libinput/sources
new file mode 100644 (file)
index 0000000..c52f167
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/wayland-project/libinput/archive/1.18.0.tar.gz
diff --git a/extra/libinput/version b/extra/libinput/version
new file mode 100644 (file)
index 0000000..f0fb559
--- /dev/null
@@ -0,0 +1 @@
+1.18.0 1
diff --git a/extra/libjpeg-turbo/build b/extra/libjpeg-turbo/build
new file mode 100755 (executable)
index 0000000..650b25f
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+cmake -B build \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+    -DCMAKE_SHARED_LIBS=True \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DWITH_JPEG8=1
+
+cmake --build   build
+cmake --install build
diff --git a/extra/libjpeg-turbo/checksums b/extra/libjpeg-turbo/checksums
new file mode 100644 (file)
index 0000000..29007f8
--- /dev/null
@@ -0,0 +1 @@
+d6b7790927d658108dfd3bee2f0c66a2924c51ee7f9dc930f62c452f4a638c52
diff --git a/extra/libjpeg-turbo/depends b/extra/libjpeg-turbo/depends
new file mode 100644 (file)
index 0000000..8e82f95
--- /dev/null
@@ -0,0 +1,2 @@
+cmake make
+nasm  make
diff --git a/extra/libjpeg-turbo/sources b/extra/libjpeg-turbo/sources
new file mode 100644 (file)
index 0000000..80e0a26
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/libjpeg-turbo/libjpeg-turbo/archive/2.1.0.tar.gz
diff --git a/extra/libjpeg-turbo/version b/extra/libjpeg-turbo/version
new file mode 100644 (file)
index 0000000..ef86239
--- /dev/null
@@ -0,0 +1 @@
+2.1.0 1
diff --git a/extra/libogg/build b/extra/libogg/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libogg/checksums b/extra/libogg/checksums
new file mode 100644 (file)
index 0000000..cfa165d
--- /dev/null
@@ -0,0 +1 @@
+c4d91be36fc8e54deae7575241e03f4211eb102afb3fc0775fbbc1b740016705
diff --git a/extra/libogg/sources b/extra/libogg/sources
new file mode 100644 (file)
index 0000000..a865524
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/xiph/ogg/releases/download/v1.3.5/libogg-1.3.5.tar.xz
diff --git a/extra/libogg/version b/extra/libogg/version
new file mode 100644 (file)
index 0000000..a06f6a2
--- /dev/null
@@ -0,0 +1 @@
+1.3.5 1
diff --git a/extra/libpng/build b/extra/libpng/build
new file mode 100755 (executable)
index 0000000..5be67a8
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+patch -p1 < libpng-1.6.37-apng.patch
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libpng/checksums b/extra/libpng/checksums
new file mode 100644 (file)
index 0000000..d0278b6
--- /dev/null
@@ -0,0 +1,2 @@
+ca74a0dace179a8422187671aee97dd3892b53e168627145271cad5b5ac81307  v1.6.37.tar.gz
+18b71dcd329af6ddb483cb6d145535861e04918f7eb95e8051545f0bbce7d517  libpng-1.6.37-apng.patch
diff --git a/extra/libpng/depends b/extra/libpng/depends
new file mode 100644 (file)
index 0000000..f22003e
--- /dev/null
@@ -0,0 +1 @@
+zlib
diff --git a/extra/libpng/patches/libpng-1.6.37-apng.patch b/extra/libpng/patches/libpng-1.6.37-apng.patch
new file mode 100644 (file)
index 0000000..8aaa50b
--- /dev/null
@@ -0,0 +1,1728 @@
+diff -Naru libpng-1.6.37.org/png.h libpng-1.6.37/png.h
+--- libpng-1.6.37.org/png.h    2019-04-19 07:21:37.398024800 +0900
++++ libpng-1.6.37/png.h        2019-04-19 07:22:37.871245630 +0900
+@@ -330,6 +330,10 @@
+ #   include "pnglibconf.h"
+ #endif
++#define PNG_APNG_SUPPORTED
++#define PNG_READ_APNG_SUPPORTED
++#define PNG_WRITE_APNG_SUPPORTED
++
+ #ifndef PNG_VERSION_INFO_ONLY
+ /* Machine specific configuration. */
+ #  include "pngconf.h"
+@@ -425,6 +429,17 @@
+  * See pngconf.h for base types that vary by machine/system
+  */
++#ifdef PNG_APNG_SUPPORTED
++/* dispose_op flags from inside fcTL */
++#define PNG_DISPOSE_OP_NONE        0x00U
++#define PNG_DISPOSE_OP_BACKGROUND  0x01U
++#define PNG_DISPOSE_OP_PREVIOUS    0x02U
++
++/* blend_op flags from inside fcTL */
++#define PNG_BLEND_OP_SOURCE        0x00U
++#define PNG_BLEND_OP_OVER          0x01U
++#endif /* PNG_APNG_SUPPORTED */
++
+ /* This triggers a compiler error in png.c, if png.c and png.h
+  * do not agree upon the version number.
+  */
+@@ -746,6 +761,10 @@
+ #define PNG_INFO_sCAL 0x4000U  /* ESR, 1.0.6 */
+ #define PNG_INFO_IDAT 0x8000U  /* ESR, 1.0.6 */
+ #define PNG_INFO_eXIf 0x10000U /* GR-P, 1.6.31 */
++#ifdef PNG_APNG_SUPPORTED
++#define PNG_INFO_acTL 0x20000U
++#define PNG_INFO_fcTL 0x40000U
++#endif
+ /* This is used for the transformation routines, as some of them
+  * change these values for the row.  It also should enable using
+@@ -783,6 +802,10 @@
+ #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+ typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop));
+ typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop));
++#ifdef PNG_APNG_SUPPORTED
++typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, (png_structp,
++    png_uint_32));
++#endif
+ /* The following callback receives png_uint_32 row_number, int pass for the
+  * png_bytep data of the row.  When transforming an interlaced image the
+@@ -3226,6 +3249,74 @@
+ /*******************************************************************************
+  *  END OF HARDWARE AND SOFTWARE OPTIONS
+  ******************************************************************************/
++#ifdef PNG_APNG_SUPPORTED
++PNG_EXPORT(250, png_uint_32, png_get_acTL, (png_structp png_ptr,
++   png_infop info_ptr, png_uint_32 *num_frames, png_uint_32 *num_plays));
++
++PNG_EXPORT(251, png_uint_32, png_set_acTL, (png_structp png_ptr,
++   png_infop info_ptr, png_uint_32 num_frames, png_uint_32 num_plays));
++
++PNG_EXPORT(252, png_uint_32, png_get_num_frames, (png_structp png_ptr,
++   png_infop info_ptr));
++
++PNG_EXPORT(253, png_uint_32, png_get_num_plays, (png_structp png_ptr,
++   png_infop info_ptr));
++
++PNG_EXPORT(254, png_uint_32, png_get_next_frame_fcTL,
++   (png_structp png_ptr, png_infop info_ptr, png_uint_32 *width,
++   png_uint_32 *height, png_uint_32 *x_offset, png_uint_32 *y_offset,
++   png_uint_16 *delay_num, png_uint_16 *delay_den, png_byte *dispose_op,
++   png_byte *blend_op));
++
++PNG_EXPORT(255, png_uint_32, png_set_next_frame_fcTL,
++   (png_structp png_ptr, png_infop info_ptr, png_uint_32 width,
++   png_uint_32 height, png_uint_32 x_offset, png_uint_32 y_offset,
++   png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++   png_byte blend_op));
++
++PNG_EXPORT(256, png_uint_32, png_get_next_frame_width,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(257, png_uint_32, png_get_next_frame_height,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(258, png_uint_32, png_get_next_frame_x_offset,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(259, png_uint_32, png_get_next_frame_y_offset,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(260, png_uint_16, png_get_next_frame_delay_num,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(261, png_uint_16, png_get_next_frame_delay_den,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(262, png_byte, png_get_next_frame_dispose_op,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(263, png_byte, png_get_next_frame_blend_op,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(264, png_byte, png_get_first_frame_is_hidden,
++   (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(265, png_uint_32, png_set_first_frame_is_hidden,
++   (png_structp png_ptr, png_infop info_ptr, png_byte is_hidden));
++
++#ifdef PNG_READ_APNG_SUPPORTED
++PNG_EXPORT(266, void, png_read_frame_head, (png_structp png_ptr,
++   png_infop info_ptr));
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++PNG_EXPORT(267, void, png_set_progressive_frame_fn, (png_structp png_ptr,
++   png_progressive_frame_ptr frame_info_fn,
++   png_progressive_frame_ptr frame_end_fn));
++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
++#endif /* PNG_READ_APNG_SUPPORTED */
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++PNG_EXPORT(268, void, png_write_frame_head, (png_structp png_ptr,
++   png_infop info_ptr, png_bytepp row_pointers,
++   png_uint_32 width, png_uint_32 height,
++   png_uint_32 x_offset, png_uint_32 y_offset,
++   png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++   png_byte blend_op));
++
++PNG_EXPORT(269, void, png_write_frame_tail, (png_structp png_ptr,
++   png_infop info_ptr));
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++#endif /* PNG_APNG_SUPPORTED */
+ /* Maintainer: Put new public prototypes here ^, in libpng.3, in project
+  * defs, and in scripts/symbols.def.
+@@ -3235,7 +3326,11 @@
+  * one to use is one more than this.)
+  */
+ #ifdef PNG_EXPORT_LAST_ORDINAL
++#ifdef PNG_APNG_SUPPORTED
++  PNG_EXPORT_LAST_ORDINAL(269);
++#else
+   PNG_EXPORT_LAST_ORDINAL(249);
++#endif /* PNG_APNG_SUPPORTED */
+ #endif
+ #ifdef __cplusplus
+diff -Naru libpng-1.6.37.org/pngget.c libpng-1.6.37/pngget.c
+--- libpng-1.6.37.org/pngget.c 2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pngget.c     2019-04-19 07:22:37.850245901 +0900
+@@ -1246,4 +1246,166 @@
+ #  endif
+ #endif
++#ifdef PNG_APNG_SUPPORTED
++png_uint_32 PNGAPI
++png_get_acTL(png_structp png_ptr, png_infop info_ptr,
++             png_uint_32 *num_frames, png_uint_32 *num_plays)
++{
++    png_debug1(1, "in %s retrieval function", "acTL");
++
++    if (png_ptr != NULL && info_ptr != NULL &&
++        (info_ptr->valid & PNG_INFO_acTL) &&
++        num_frames != NULL && num_plays != NULL)
++    {
++        *num_frames = info_ptr->num_frames;
++        *num_plays = info_ptr->num_plays;
++        return (1);
++    }
++
++    return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_num_frames(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_num_frames()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->num_frames);
++    return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_num_plays(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_num_plays()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->num_plays);
++    return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr,
++             png_uint_32 *width, png_uint_32 *height,
++             png_uint_32 *x_offset, png_uint_32 *y_offset,
++             png_uint_16 *delay_num, png_uint_16 *delay_den,
++             png_byte *dispose_op, png_byte *blend_op)
++{
++    png_debug1(1, "in %s retrieval function", "fcTL");
++
++    if (png_ptr != NULL && info_ptr != NULL &&
++        (info_ptr->valid & PNG_INFO_fcTL) &&
++        width != NULL && height != NULL &&
++        x_offset != NULL && y_offset != NULL &&
++        delay_num != NULL && delay_den != NULL &&
++        dispose_op != NULL && blend_op != NULL)
++    {
++        *width = info_ptr->next_frame_width;
++        *height = info_ptr->next_frame_height;
++        *x_offset = info_ptr->next_frame_x_offset;
++        *y_offset = info_ptr->next_frame_y_offset;
++        *delay_num = info_ptr->next_frame_delay_num;
++        *delay_den = info_ptr->next_frame_delay_den;
++        *dispose_op = info_ptr->next_frame_dispose_op;
++        *blend_op = info_ptr->next_frame_blend_op;
++        return (1);
++    }
++
++    return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_width(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_width()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_width);
++    return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_height(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_height()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_height);
++    return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_x_offset(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_x_offset()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_x_offset);
++    return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_y_offset(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_y_offset()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_y_offset);
++    return (0);
++}
++
++png_uint_16 PNGAPI
++png_get_next_frame_delay_num(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_delay_num()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_delay_num);
++    return (0);
++}
++
++png_uint_16 PNGAPI
++png_get_next_frame_delay_den(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_delay_den()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_delay_den);
++    return (0);
++}
++
++png_byte PNGAPI
++png_get_next_frame_dispose_op(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_dispose_op()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_dispose_op);
++    return (0);
++}
++
++png_byte PNGAPI
++png_get_next_frame_blend_op(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_get_next_frame_blend_op()");
++
++    if (png_ptr != NULL && info_ptr != NULL)
++        return (info_ptr->next_frame_blend_op);
++    return (0);
++}
++
++png_byte PNGAPI
++png_get_first_frame_is_hidden(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_first_frame_is_hidden()");
++
++    if (png_ptr != NULL)
++       return (png_byte)(png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN);
++
++    PNG_UNUSED(info_ptr)
++
++    return 0;
++}
++#endif /* PNG_APNG_SUPPORTED */
+ #endif /* READ || WRITE */
+diff -Naru libpng-1.6.37.org/pnginfo.h libpng-1.6.37/pnginfo.h
+--- libpng-1.6.37.org/pnginfo.h        2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pnginfo.h    2019-04-19 07:22:37.850245901 +0900
+@@ -263,5 +263,18 @@
+    png_bytepp row_pointers;        /* the image bits */
+ #endif
++#ifdef PNG_APNG_SUPPORTED
++   png_uint_32 num_frames; /* including default image */
++   png_uint_32 num_plays;
++   png_uint_32 next_frame_width;
++   png_uint_32 next_frame_height;
++   png_uint_32 next_frame_x_offset;
++   png_uint_32 next_frame_y_offset;
++   png_uint_16 next_frame_delay_num;
++   png_uint_16 next_frame_delay_den;
++   png_byte next_frame_dispose_op;
++   png_byte next_frame_blend_op;
++#endif
++
+ };
+ #endif /* PNGINFO_H */
+diff -Naru libpng-1.6.37.org/pngpread.c libpng-1.6.37/pngpread.c
+--- libpng-1.6.37.org/pngpread.c       2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pngpread.c   2019-04-19 07:22:37.850245901 +0900
+@@ -195,6 +195,106 @@
+    chunk_name = png_ptr->chunk_name;
++#ifdef PNG_READ_APNG_SUPPORTED
++   if (png_ptr->num_frames_read > 0 &&
++       png_ptr->num_frames_read < info_ptr->num_frames)
++   {
++      if (chunk_name == png_IDAT)
++      {
++         /* Discard trailing IDATs for the first frame */
++         if (png_ptr->mode & PNG_HAVE_fcTL || png_ptr->num_frames_read > 1)
++            png_error(png_ptr, "out of place IDAT");
++
++         if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++         {
++            png_push_save_buffer(png_ptr);
++            return;
++         }
++
++         png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++         return;
++      }
++      else if (chunk_name == png_fdAT)
++      {
++         if (png_ptr->buffer_size < 4)
++         {
++            png_push_save_buffer(png_ptr);
++            return;
++         }
++
++         png_ensure_sequence_number(png_ptr, 4);
++
++         if (!(png_ptr->mode & PNG_HAVE_fcTL))
++         {
++            /* Discard trailing fdATs for frames other than the first */
++            if (png_ptr->num_frames_read < 2)
++               png_error(png_ptr, "out of place fdAT");
++
++            if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++            {
++               png_push_save_buffer(png_ptr);
++               return;
++            }
++
++            png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++            return;
++         }
++
++         else
++         {
++            /* frame data follows */
++            png_ptr->idat_size = png_ptr->push_length - 4;
++            png_ptr->mode |= PNG_HAVE_IDAT;
++            png_ptr->process_mode = PNG_READ_IDAT_MODE;
++
++            return;
++         }
++      }
++
++      else if (chunk_name == png_fcTL)
++      {
++         if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++         {
++            png_push_save_buffer(png_ptr);
++            return;
++         }
++
++         png_read_reset(png_ptr);
++         png_ptr->mode &= ~PNG_HAVE_fcTL;
++
++         png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length);
++
++         if (!(png_ptr->mode & PNG_HAVE_fcTL))
++            png_error(png_ptr, "missing required fcTL chunk");
++
++         png_read_reinit(png_ptr, info_ptr);
++         png_progressive_read_reset(png_ptr);
++
++         if (png_ptr->frame_info_fn != NULL)
++            (*(png_ptr->frame_info_fn))(png_ptr, png_ptr->num_frames_read);
++
++         png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++
++         return;
++      }
++
++      else
++      {
++         if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++         {
++            png_push_save_buffer(png_ptr);
++            return;
++         }
++         png_warning(png_ptr, "Skipped (ignored) a chunk "
++                              "between APNG chunks");
++         png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++         return;
++      }
++
++      return;
++   }
++#endif /* PNG_READ_APNG_SUPPORTED */
++
+    if (chunk_name == png_IDAT)
+    {
+       if ((png_ptr->mode & PNG_AFTER_IDAT) != 0)
+@@ -261,6 +361,9 @@
+    else if (chunk_name == png_IDAT)
+    {
++#ifdef PNG_READ_APNG_SUPPORTED
++      png_have_info(png_ptr, info_ptr);
++#endif
+       png_ptr->idat_size = png_ptr->push_length;
+       png_ptr->process_mode = PNG_READ_IDAT_MODE;
+       png_push_have_info(png_ptr, info_ptr);
+@@ -406,6 +509,30 @@
+       png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length);
+    }
+ #endif
++#ifdef PNG_READ_APNG_SUPPORTED
++   else if (chunk_name == png_acTL)
++   {
++      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++      {
++         png_push_save_buffer(png_ptr);
++         return;
++      }
++
++      png_handle_acTL(png_ptr, info_ptr, png_ptr->push_length);
++   }
++
++   else if (chunk_name == png_fcTL)
++   {
++      if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++      {
++         png_push_save_buffer(png_ptr);
++         return;
++      }
++
++      png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length);
++   }
++
++#endif /* PNG_READ_APNG_SUPPORTED */
+    else
+    {
+@@ -539,7 +666,11 @@
+       png_byte chunk_tag[4];
+       /* TODO: this code can be commoned up with the same code in push_read */
++#ifdef PNG_READ_APNG_SUPPORTED
++      PNG_PUSH_SAVE_BUFFER_IF_LT(12)
++#else
+       PNG_PUSH_SAVE_BUFFER_IF_LT(8)
++#endif
+       png_push_fill_buffer(png_ptr, chunk_length, 4);
+       png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
+       png_reset_crc(png_ptr);
+@@ -547,17 +678,64 @@
+       png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag);
+       png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
++#ifdef PNG_READ_APNG_SUPPORTED
++      if (png_ptr->chunk_name != png_fdAT && png_ptr->num_frames_read > 0)
++      {
++          if (png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)
++          {
++              png_ptr->process_mode = PNG_READ_CHUNK_MODE;
++              if (png_ptr->frame_end_fn != NULL)
++                 (*(png_ptr->frame_end_fn))(png_ptr, png_ptr->num_frames_read);
++              png_ptr->num_frames_read++;
++              return;
++          }
++          else
++          {
++              if (png_ptr->chunk_name == png_IEND)
++                  png_error(png_ptr, "Not enough image data");
++              if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++              {
++                 png_push_save_buffer(png_ptr);
++                 return;
++              }
++              png_warning(png_ptr, "Skipping (ignoring) a chunk between "
++                                   "APNG chunks");
++              png_crc_finish(png_ptr, png_ptr->push_length);
++              png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++              return;
++          }
++      }
++      else
++#endif
++#ifdef PNG_READ_APNG_SUPPORTED
++      if (png_ptr->chunk_name != png_IDAT && png_ptr->num_frames_read == 0)
++#else
+       if (png_ptr->chunk_name != png_IDAT)
++#endif
+       {
+          png_ptr->process_mode = PNG_READ_CHUNK_MODE;
+          if ((png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0)
+             png_error(png_ptr, "Not enough compressed data");
++#ifdef PNG_READ_APNG_SUPPORTED
++         if (png_ptr->frame_end_fn != NULL)
++            (*(png_ptr->frame_end_fn))(png_ptr, png_ptr->num_frames_read);
++         png_ptr->num_frames_read++;
++#endif
++
+          return;
+       }
+       png_ptr->idat_size = png_ptr->push_length;
++
++#ifdef PNG_READ_APNG_SUPPORTED
++      if (png_ptr->num_frames_read > 0)
++      {
++         png_ensure_sequence_number(png_ptr, 4);
++         png_ptr->idat_size -= 4;
++      }
++#endif
+    }
+    if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0)
+@@ -631,6 +809,15 @@
+    if (!(buffer_length > 0) || buffer == NULL)
+       png_error(png_ptr, "No IDAT data (internal error)");
++#ifdef PNG_READ_APNG_SUPPORTED
++   /* If the app is not APNG-aware, decode only the first frame */
++   if (!(png_ptr->apng_flags & PNG_APNG_APP) && png_ptr->num_frames_read > 0)
++   {
++     png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED;
++     return;
++   }
++#endif
++
+    /* This routine must process all the data it has been given
+     * before returning, calling the row callback as required to
+     * handle the uncompressed results.
+@@ -1085,6 +1272,18 @@
+    png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer);
+ }
++#ifdef PNG_READ_APNG_SUPPORTED
++void PNGAPI
++png_set_progressive_frame_fn(png_structp png_ptr,
++   png_progressive_frame_ptr frame_info_fn,
++   png_progressive_frame_ptr frame_end_fn)
++{
++   png_ptr->frame_info_fn = frame_info_fn;
++   png_ptr->frame_end_fn = frame_end_fn;
++   png_ptr->apng_flags |= PNG_APNG_APP;
++}
++#endif
++
+ png_voidp PNGAPI
+ png_get_progressive_ptr(png_const_structrp png_ptr)
+ {
+diff -Naru libpng-1.6.37.org/pngpriv.h libpng-1.6.37/pngpriv.h
+--- libpng-1.6.37.org/pngpriv.h        2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pngpriv.h    2019-04-19 07:22:37.850245901 +0900
+@@ -637,6 +637,10 @@
+ #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000U /* Have another chunk after IDAT */
+                    /*             0x4000U (unused) */
+ #define PNG_IS_READ_STRUCT        0x8000U /* Else is a write struct */
++#ifdef PNG_APNG_SUPPORTED
++#define PNG_HAVE_acTL            0x10000U
++#define PNG_HAVE_fcTL            0x20000U
++#endif
+ /* Flags for the transformations the PNG library does on the image data */
+ #define PNG_BGR                 0x0001U
+@@ -873,6 +877,16 @@
+ #define png_tRNS PNG_U32(116,  82,  78,  83)
+ #define png_zTXt PNG_U32(122,  84,  88, 116)
++#ifdef PNG_APNG_SUPPORTED
++#define png_acTL PNG_U32( 97,  99,  84,  76)
++#define png_fcTL PNG_U32(102,  99,  84,  76)
++#define png_fdAT PNG_U32(102, 100,  65,  84)
++
++/* For png_struct.apng_flags: */
++#define PNG_FIRST_FRAME_HIDDEN       0x0001U
++#define PNG_APNG_APP                 0x0002U
++#endif
++
+ /* The following will work on (signed char*) strings, whereas the get_uint_32
+  * macro will fail on top-bit-set values because of the sign extension.
+  */
+@@ -1644,6 +1658,47 @@
+     */
+ #endif
++#ifdef PNG_APNG_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_ensure_fcTL_is_valid,(png_structp png_ptr,
++   png_uint_32 width, png_uint_32 height,
++   png_uint_32 x_offset, png_uint_32 y_offset,
++   png_uint_16 delay_num, png_uint_16 delay_den,
++   png_byte dispose_op, png_byte blend_op), PNG_EMPTY);
++
++#ifdef PNG_READ_APNG_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_handle_acTL,(png_structp png_ptr, png_infop info_ptr,
++   png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_handle_fcTL,(png_structp png_ptr, png_infop info_ptr,
++   png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_handle_fdAT,(png_structp png_ptr, png_infop info_ptr,
++   png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_have_info,(png_structp png_ptr, png_infop info_ptr),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_ensure_sequence_number,(png_structp png_ptr,
++   png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_reset,(png_structp png_ptr),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_reinit,(png_structp png_ptr,
++   png_infop info_ptr),PNG_EMPTY);
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_progressive_read_reset,(png_structp png_ptr),PNG_EMPTY);
++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
++#endif /* PNG_READ_APNG_SUPPORTED */
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_write_acTL,(png_structp png_ptr,
++   png_uint_32 num_frames, png_uint_32 num_plays),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_fcTL,(png_structp png_ptr,
++   png_uint_32 width, png_uint_32 height,
++   png_uint_32 x_offset, png_uint_32 y_offset,
++   png_uint_16 delay_num, png_uint_16 delay_den,
++   png_byte dispose_op, png_byte blend_op),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_fdAT,(png_structp png_ptr,
++   png_const_bytep data, png_size_t length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_reset,(png_structp png_ptr),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_reinit,(png_structp png_ptr,
++   png_infop info_ptr, png_uint_32 width, png_uint_32 height),PNG_EMPTY);
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++#endif /* PNG_APNG_SUPPORTED */
++
+ /* Added at libpng version 1.4.0 */
+ #ifdef PNG_COLORSPACE_SUPPORTED
+ /* These internal functions are for maintaining the colorspace structure within
+diff -Naru libpng-1.6.37.org/pngread.c libpng-1.6.37/pngread.c
+--- libpng-1.6.37.org/pngread.c        2019-04-19 07:21:37.400024774 +0900
++++ libpng-1.6.37/pngread.c    2019-04-19 07:22:37.851245887 +0900
+@@ -161,6 +161,9 @@
+       else if (chunk_name == png_IDAT)
+       {
++#ifdef PNG_READ_APNG_SUPPORTED
++         png_have_info(png_ptr, info_ptr);
++#endif
+          png_ptr->idat_size = length;
+          break;
+       }
+@@ -255,6 +258,17 @@
+          png_handle_iTXt(png_ptr, info_ptr, length);
+ #endif
++#ifdef PNG_READ_APNG_SUPPORTED
++      else if (chunk_name == png_acTL)
++         png_handle_acTL(png_ptr, info_ptr, length);
++
++      else if (chunk_name == png_fcTL)
++         png_handle_fcTL(png_ptr, info_ptr, length);
++
++      else if (chunk_name == png_fdAT)
++         png_handle_fdAT(png_ptr, info_ptr, length);
++#endif
++
+       else
+          png_handle_unknown(png_ptr, info_ptr, length,
+              PNG_HANDLE_CHUNK_AS_DEFAULT);
+@@ -262,6 +276,72 @@
+ }
+ #endif /* SEQUENTIAL_READ */
++#ifdef PNG_READ_APNG_SUPPORTED
++void PNGAPI
++png_read_frame_head(png_structp png_ptr, png_infop info_ptr)
++{
++    png_byte have_chunk_after_DAT; /* after IDAT or after fdAT */
++
++    png_debug(0, "Reading frame head");
++
++    if (!(png_ptr->mode & PNG_HAVE_acTL))
++        png_error(png_ptr, "attempt to png_read_frame_head() but "
++                           "no acTL present");
++
++    /* do nothing for the main IDAT */
++    if (png_ptr->num_frames_read == 0)
++        return;
++
++    png_read_reset(png_ptr);
++    png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
++    png_ptr->mode &= ~PNG_HAVE_fcTL;
++
++    have_chunk_after_DAT = 0;
++    for (;;)
++    {
++        png_uint_32 length = png_read_chunk_header(png_ptr);
++
++        if (png_ptr->chunk_name == png_IDAT)
++        {
++            /* discard trailing IDATs for the first frame */
++            if (have_chunk_after_DAT || png_ptr->num_frames_read > 1)
++                png_error(png_ptr, "png_read_frame_head(): out of place IDAT");
++            png_crc_finish(png_ptr, length);
++        }
++
++        else if (png_ptr->chunk_name == png_fcTL)
++        {
++            png_handle_fcTL(png_ptr, info_ptr, length);
++            have_chunk_after_DAT = 1;
++        }
++
++        else if (png_ptr->chunk_name == png_fdAT)
++        {
++            png_ensure_sequence_number(png_ptr, length);
++
++            /* discard trailing fdATs for frames other than the first */
++            if (!have_chunk_after_DAT && png_ptr->num_frames_read > 1)
++                png_crc_finish(png_ptr, length - 4);
++            else if(png_ptr->mode & PNG_HAVE_fcTL)
++            {
++                png_ptr->idat_size = length - 4;
++                png_ptr->mode |= PNG_HAVE_IDAT;
++
++                break;
++            }
++            else
++                png_error(png_ptr, "png_read_frame_head(): out of place fdAT");
++        }
++        else
++        {
++            png_warning(png_ptr, "Skipped (ignored) a chunk "
++                                 "between APNG chunks");
++            png_crc_finish(png_ptr, length);
++        }
++    }
++}
++#endif /* PNG_READ_APNG_SUPPORTED */
++
+ /* Optional call to update the users info_ptr structure */
+ void PNGAPI
+ png_read_update_info(png_structrp png_ptr, png_inforp info_ptr)
+diff -Naru libpng-1.6.37.org/pngrutil.c libpng-1.6.37/pngrutil.c
+--- libpng-1.6.37.org/pngrutil.c       2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngrutil.c   2019-04-19 07:22:37.853245862 +0900
+@@ -865,6 +865,11 @@
+    filter_type = buf[11];
+    interlace_type = buf[12];
++#ifdef PNG_READ_APNG_SUPPORTED
++   png_ptr->first_frame_width = width;
++   png_ptr->first_frame_height = height;
++#endif
++
+    /* Set internal variables */
+    png_ptr->width = width;
+    png_ptr->height = height;
+@@ -2857,6 +2862,179 @@
+ }
+ #endif
++#ifdef PNG_READ_APNG_SUPPORTED
++void /* PRIVATE */
++png_handle_acTL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
++{
++    png_byte data[8];
++    png_uint_32 num_frames;
++    png_uint_32 num_plays;
++    png_uint_32 didSet;
++
++    png_debug(1, "in png_handle_acTL");
++
++    if (!(png_ptr->mode & PNG_HAVE_IHDR))
++    {
++        png_error(png_ptr, "Missing IHDR before acTL");
++    }
++    else if (png_ptr->mode & PNG_HAVE_IDAT)
++    {
++        png_warning(png_ptr, "Invalid acTL after IDAT skipped");
++        png_crc_finish(png_ptr, length);
++        return;
++    }
++    else if (png_ptr->mode & PNG_HAVE_acTL)
++    {
++        png_warning(png_ptr, "Duplicate acTL skipped");
++        png_crc_finish(png_ptr, length);
++        return;
++    }
++    else if (length != 8)
++    {
++        png_warning(png_ptr, "acTL with invalid length skipped");
++        png_crc_finish(png_ptr, length);
++        return;
++    }
++
++    png_crc_read(png_ptr, data, 8);
++    png_crc_finish(png_ptr, 0);
++
++    num_frames = png_get_uint_31(png_ptr, data);
++    num_plays = png_get_uint_31(png_ptr, data + 4);
++
++    /* the set function will do error checking on num_frames */
++    didSet = png_set_acTL(png_ptr, info_ptr, num_frames, num_plays);
++    if(didSet)
++        png_ptr->mode |= PNG_HAVE_acTL;
++}
++
++void /* PRIVATE */
++png_handle_fcTL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
++{
++    png_byte data[22];
++    png_uint_32 width;
++    png_uint_32 height;
++    png_uint_32 x_offset;
++    png_uint_32 y_offset;
++    png_uint_16 delay_num;
++    png_uint_16 delay_den;
++    png_byte dispose_op;
++    png_byte blend_op;
++
++    png_debug(1, "in png_handle_fcTL");
++
++    png_ensure_sequence_number(png_ptr, length);
++
++    if (!(png_ptr->mode & PNG_HAVE_IHDR))
++    {
++        png_error(png_ptr, "Missing IHDR before fcTL");
++    }
++    else if (png_ptr->mode & PNG_HAVE_IDAT)
++    {
++        /* for any frames other then the first this message may be misleading,
++        * but correct. PNG_HAVE_IDAT is unset before the frame head is read
++        * i can't think of a better message */
++        png_warning(png_ptr, "Invalid fcTL after IDAT skipped");
++        png_crc_finish(png_ptr, length-4);
++        return;
++    }
++    else if (png_ptr->mode & PNG_HAVE_fcTL)
++    {
++        png_warning(png_ptr, "Duplicate fcTL within one frame skipped");
++        png_crc_finish(png_ptr, length-4);
++        return;
++    }
++    else if (length != 26)
++    {
++        png_warning(png_ptr, "fcTL with invalid length skipped");
++        png_crc_finish(png_ptr, length-4);
++        return;
++    }
++
++    png_crc_read(png_ptr, data, 22);
++    png_crc_finish(png_ptr, 0);
++
++    width = png_get_uint_31(png_ptr, data);
++    height = png_get_uint_31(png_ptr, data + 4);
++    x_offset = png_get_uint_31(png_ptr, data + 8);
++    y_offset = png_get_uint_31(png_ptr, data + 12);
++    delay_num = png_get_uint_16(data + 16);
++    delay_den = png_get_uint_16(data + 18);
++    dispose_op = data[20];
++    blend_op = data[21];
++
++    if (png_ptr->num_frames_read == 0 && (x_offset != 0 || y_offset != 0))
++    {
++        png_warning(png_ptr, "fcTL for the first frame must have zero offset");
++        return;
++    }
++
++    if (info_ptr != NULL)
++    {
++        if (png_ptr->num_frames_read == 0 &&
++            (width != info_ptr->width || height != info_ptr->height))
++        {
++            png_warning(png_ptr, "size in first frame's fcTL must match "
++                               "the size in IHDR");
++            return;
++        }
++
++        /* The set function will do more error checking */
++        png_set_next_frame_fcTL(png_ptr, info_ptr, width, height,
++                                x_offset, y_offset, delay_num, delay_den,
++                                dispose_op, blend_op);
++
++        png_read_reinit(png_ptr, info_ptr);
++
++        png_ptr->mode |= PNG_HAVE_fcTL;
++    }
++}
++
++void /* PRIVATE */
++png_have_info(png_structp png_ptr, png_infop info_ptr)
++{
++    if((info_ptr->valid & PNG_INFO_acTL) && !(info_ptr->valid & PNG_INFO_fcTL))
++    {
++        png_ptr->apng_flags |= PNG_FIRST_FRAME_HIDDEN;
++        info_ptr->num_frames++;
++    }
++}
++
++void /* PRIVATE */
++png_handle_fdAT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
++{
++    png_ensure_sequence_number(png_ptr, length);
++
++    /* This function is only called from png_read_end(), png_read_info(),
++    * and png_push_read_chunk() which means that:
++    * - the user doesn't want to read this frame
++    * - or this is an out-of-place fdAT
++    * in either case it is safe to ignore the chunk with a warning */
++    png_warning(png_ptr, "ignoring fdAT chunk");
++    png_crc_finish(png_ptr, length - 4);
++    PNG_UNUSED(info_ptr)
++}
++
++void /* PRIVATE */
++png_ensure_sequence_number(png_structp png_ptr, png_uint_32 length)
++{
++    png_byte data[4];
++    png_uint_32 sequence_number;
++
++    if (length < 4)
++        png_error(png_ptr, "invalid fcTL or fdAT chunk found");
++
++    png_crc_read(png_ptr, data, 4);
++    sequence_number = png_get_uint_31(png_ptr, data);
++
++    if (sequence_number != png_ptr->next_seq_num)
++        png_error(png_ptr, "fcTL or fdAT chunk with out-of-order sequence "
++                           "number found");
++
++    png_ptr->next_seq_num++;
++}
++#endif /* PNG_READ_APNG_SUPPORTED */
++
+ #ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
+ /* Utility function for png_handle_unknown; set up png_ptr::unknown_chunk */
+ static int
+@@ -4165,7 +4343,38 @@
+       {
+          uInt avail_in;
+          png_bytep buffer;
++#ifdef PNG_READ_APNG_SUPPORTED
++         png_uint_32 bytes_to_skip = 0;
++
++         while (png_ptr->idat_size == 0 || bytes_to_skip != 0)
++         {
++            png_crc_finish(png_ptr, bytes_to_skip);
++            bytes_to_skip = 0;
++            png_ptr->idat_size = png_read_chunk_header(png_ptr);
++            if (png_ptr->num_frames_read == 0)
++            {
++               if (png_ptr->chunk_name != png_IDAT)
++                  png_error(png_ptr, "Not enough image data");
++            }
++            else
++            {
++               if (png_ptr->chunk_name == png_IEND)
++                  png_error(png_ptr, "Not enough image data");
++               if (png_ptr->chunk_name != png_fdAT)
++               {
++                  png_warning(png_ptr, "Skipped (ignored) a chunk "
++                                       "between APNG chunks");
++                  bytes_to_skip = png_ptr->idat_size;
++                  continue;
++               }
++
++               png_ensure_sequence_number(png_ptr, png_ptr->idat_size);
++
++               png_ptr->idat_size -= 4;
++            }
++         }
++#else
+          while (png_ptr->idat_size == 0)
+          {
+             png_crc_finish(png_ptr, 0);
+@@ -4177,7 +4386,7 @@
+             if (png_ptr->chunk_name != png_IDAT)
+                png_error(png_ptr, "Not enough image data");
+          }
+-
++#endif /* PNG_READ_APNG_SUPPORTED */
+          avail_in = png_ptr->IDAT_read_size;
+          if (avail_in > png_ptr->idat_size)
+@@ -4240,6 +4449,9 @@
+          png_ptr->mode |= PNG_AFTER_IDAT;
+          png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED;
++#ifdef PNG_READ_APNG_SUPPORTED
++         png_ptr->num_frames_read++;
++#endif
+          if (png_ptr->zstream.avail_in > 0 || png_ptr->idat_size > 0)
+             png_chunk_benign_error(png_ptr, "Extra compressed data");
+@@ -4678,4 +4890,80 @@
+    png_ptr->flags |= PNG_FLAG_ROW_INIT;
+ }
++
++#ifdef PNG_READ_APNG_SUPPORTED
++/* This function is to be called after the main IDAT set has been read and
++ * before a new IDAT is read. It resets some parts of png_ptr
++ * to make them usable by the read functions again */
++void /* PRIVATE */
++png_read_reset(png_structp png_ptr)
++{
++    png_ptr->mode &= ~PNG_HAVE_IDAT;
++    png_ptr->mode &= ~PNG_AFTER_IDAT;
++    png_ptr->row_number = 0;
++    png_ptr->pass = 0;
++}
++
++void /* PRIVATE */
++png_read_reinit(png_structp png_ptr, png_infop info_ptr)
++{
++    png_ptr->width = info_ptr->next_frame_width;
++    png_ptr->height = info_ptr->next_frame_height;
++    png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,png_ptr->width);
++    png_ptr->info_rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth,
++        png_ptr->width);
++    if (png_ptr->prev_row)
++        memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
++}
++
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++/* same as png_read_reset() but for the progressive reader */
++void /* PRIVATE */
++png_progressive_read_reset(png_structp png_ptr)
++{
++#ifdef PNG_READ_INTERLACING_SUPPORTED
++   /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
++
++   /* Start of interlace block */
++    const int png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
++
++    /* Offset to next interlace block */
++    const int png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
++
++    /* Start of interlace block in the y direction */
++    const int png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
++
++    /* Offset to next interlace block in the y direction */
++    const int png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
++
++    if (png_ptr->interlaced)
++    {
++        if (!(png_ptr->transformations & PNG_INTERLACE))
++            png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
++                                png_pass_ystart[0]) / png_pass_yinc[0];
++        else
++            png_ptr->num_rows = png_ptr->height;
++
++        png_ptr->iwidth = (png_ptr->width +
++                           png_pass_inc[png_ptr->pass] - 1 -
++                           png_pass_start[png_ptr->pass]) /
++                           png_pass_inc[png_ptr->pass];
++    }
++    else
++#endif /* PNG_READ_INTERLACING_SUPPORTED */
++    {
++        png_ptr->num_rows = png_ptr->height;
++        png_ptr->iwidth = png_ptr->width;
++    }
++    png_ptr->flags &= ~PNG_FLAG_ZSTREAM_ENDED;
++    if (inflateReset(&(png_ptr->zstream)) != Z_OK)
++        png_error(png_ptr, "inflateReset failed");
++    png_ptr->zstream.avail_in = 0;
++    png_ptr->zstream.next_in = 0;
++    png_ptr->zstream.next_out = png_ptr->row_buf;
++    png_ptr->zstream.avail_out = (uInt)PNG_ROWBYTES(png_ptr->pixel_depth,
++        png_ptr->iwidth) + 1;
++}
++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
++#endif /* PNG_READ_APNG_SUPPORTED */
+ #endif /* READ */
+diff -Naru libpng-1.6.37.org/pngset.c libpng-1.6.37/pngset.c
+--- libpng-1.6.37.org/pngset.c 2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngset.c     2019-04-19 07:22:37.858245798 +0900
+@@ -288,6 +288,11 @@
+    info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
+    info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width);
++
++#ifdef PNG_APNG_SUPPORTED
++   /* for non-animated png. this may be overwritten from an acTL chunk later */
++   info_ptr->num_frames = 1;
++#endif
+ }
+ #ifdef PNG_oFFs_SUPPORTED
+@@ -1158,6 +1163,147 @@
+ }
+ #endif /* sPLT */
++#ifdef PNG_APNG_SUPPORTED
++png_uint_32 PNGAPI
++png_set_acTL(png_structp png_ptr, png_infop info_ptr,
++    png_uint_32 num_frames, png_uint_32 num_plays)
++{
++    png_debug1(1, "in %s storage function", "acTL");
++
++    if (png_ptr == NULL || info_ptr == NULL)
++    {
++        png_warning(png_ptr,
++                    "Call to png_set_acTL() with NULL png_ptr "
++                    "or info_ptr ignored");
++        return (0);
++    }
++    if (num_frames == 0)
++    {
++        png_warning(png_ptr,
++                    "Ignoring attempt to set acTL with num_frames zero");
++        return (0);
++    }
++    if (num_frames > PNG_UINT_31_MAX)
++    {
++        png_warning(png_ptr,
++                    "Ignoring attempt to set acTL with num_frames > 2^31-1");
++        return (0);
++    }
++    if (num_plays > PNG_UINT_31_MAX)
++    {
++        png_warning(png_ptr,
++                    "Ignoring attempt to set acTL with num_plays "
++                    "> 2^31-1");
++        return (0);
++    }
++
++    info_ptr->num_frames = num_frames;
++    info_ptr->num_plays = num_plays;
++
++    info_ptr->valid |= PNG_INFO_acTL;
++
++    return (1);
++}
++
++/* delay_num and delay_den can hold any 16-bit values including zero */
++png_uint_32 PNGAPI
++png_set_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr,
++    png_uint_32 width, png_uint_32 height,
++    png_uint_32 x_offset, png_uint_32 y_offset,
++    png_uint_16 delay_num, png_uint_16 delay_den,
++    png_byte dispose_op, png_byte blend_op)
++{
++    png_debug1(1, "in %s storage function", "fcTL");
++
++    if (png_ptr == NULL || info_ptr == NULL)
++    {
++        png_warning(png_ptr,
++                    "Call to png_set_fcTL() with NULL png_ptr or info_ptr "
++                    "ignored");
++        return (0);
++    }
++
++    png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset,
++                             delay_num, delay_den, dispose_op, blend_op);
++
++    if (blend_op == PNG_BLEND_OP_OVER)
++    {
++        if (!(png_ptr->color_type & PNG_COLOR_MASK_ALPHA) &&
++            !(png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
++        {
++          png_warning(png_ptr, "PNG_BLEND_OP_OVER is meaningless "
++                               "and wasteful for opaque images, ignored");
++          blend_op = PNG_BLEND_OP_SOURCE;
++        }
++    }
++
++    info_ptr->next_frame_width = width;
++    info_ptr->next_frame_height = height;
++    info_ptr->next_frame_x_offset = x_offset;
++    info_ptr->next_frame_y_offset = y_offset;
++    info_ptr->next_frame_delay_num = delay_num;
++    info_ptr->next_frame_delay_den = delay_den;
++    info_ptr->next_frame_dispose_op = dispose_op;
++    info_ptr->next_frame_blend_op = blend_op;
++
++    info_ptr->valid |= PNG_INFO_fcTL;
++
++    return (1);
++}
++
++void /* PRIVATE */
++png_ensure_fcTL_is_valid(png_structp png_ptr,
++    png_uint_32 width, png_uint_32 height,
++    png_uint_32 x_offset, png_uint_32 y_offset,
++    png_uint_16 delay_num, png_uint_16 delay_den,
++    png_byte dispose_op, png_byte blend_op)
++{
++    if (width == 0 || width > PNG_UINT_31_MAX)
++        png_error(png_ptr, "invalid width in fcTL (> 2^31-1)");
++    if (height == 0 || height > PNG_UINT_31_MAX)
++        png_error(png_ptr, "invalid height in fcTL (> 2^31-1)");
++    if (x_offset > PNG_UINT_31_MAX)
++        png_error(png_ptr, "invalid x_offset in fcTL (> 2^31-1)");
++    if (y_offset > PNG_UINT_31_MAX)
++        png_error(png_ptr, "invalid y_offset in fcTL (> 2^31-1)");
++    if (width + x_offset > png_ptr->first_frame_width ||
++        height + y_offset > png_ptr->first_frame_height)
++        png_error(png_ptr, "dimensions of a frame are greater than"
++                           "the ones in IHDR");
++
++    if (dispose_op != PNG_DISPOSE_OP_NONE &&
++        dispose_op != PNG_DISPOSE_OP_BACKGROUND &&
++        dispose_op != PNG_DISPOSE_OP_PREVIOUS)
++        png_error(png_ptr, "invalid dispose_op in fcTL");
++
++    if (blend_op != PNG_BLEND_OP_SOURCE &&
++        blend_op != PNG_BLEND_OP_OVER)
++        png_error(png_ptr, "invalid blend_op in fcTL");
++
++    PNG_UNUSED(delay_num)
++    PNG_UNUSED(delay_den)
++}
++
++png_uint_32 PNGAPI
++png_set_first_frame_is_hidden(png_structp png_ptr, png_infop info_ptr,
++                              png_byte is_hidden)
++{
++    png_debug(1, "in png_first_frame_is_hidden()");
++
++    if (png_ptr == NULL)
++        return 0;
++
++    if (is_hidden)
++        png_ptr->apng_flags |= PNG_FIRST_FRAME_HIDDEN;
++    else
++        png_ptr->apng_flags &= ~PNG_FIRST_FRAME_HIDDEN;
++
++    PNG_UNUSED(info_ptr)
++
++    return 1;
++}
++#endif /* PNG_APNG_SUPPORTED */
++
+ #ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
+ static png_byte
+ check_location(png_const_structrp png_ptr, int location)
+diff -Naru libpng-1.6.37.org/pngstruct.h libpng-1.6.37/pngstruct.h
+--- libpng-1.6.37.org/pngstruct.h      2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngstruct.h  2019-04-19 07:22:37.854245849 +0900
+@@ -409,6 +409,27 @@
+    png_byte filter_type;
+ #endif
++#ifdef PNG_APNG_SUPPORTED
++   png_uint_32 apng_flags;
++   png_uint_32 next_seq_num;         /* next fcTL/fdAT chunk sequence number */
++   png_uint_32 first_frame_width;
++   png_uint_32 first_frame_height;
++
++#ifdef PNG_READ_APNG_SUPPORTED
++   png_uint_32 num_frames_read;      /* incremented after all image data of */
++                                     /* a frame is read */
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++   png_progressive_frame_ptr frame_info_fn; /* frame info read callback */
++   png_progressive_frame_ptr frame_end_fn;  /* frame data read callback */
++#endif
++#endif
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++   png_uint_32 num_frames_to_write;
++   png_uint_32 num_frames_written;
++#endif
++#endif /* PNG_APNG_SUPPORTED */
++
+ /* New members added in libpng-1.2.0 */
+ /* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
+diff -Naru libpng-1.6.37.org/pngtest.c libpng-1.6.37/pngtest.c
+--- libpng-1.6.37.org/pngtest.c        2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngtest.c    2019-04-19 07:22:37.854245849 +0900
+@@ -875,6 +875,10 @@
+    volatile int num_passes;
+    int pass;
+    int bit_depth, color_type;
++#ifdef PNG_APNG_SUPPORTED
++   png_uint_32 num_frames;
++   png_uint_32 num_plays;
++#endif
+    row_buf = NULL;
+    error_parameters.file_name = inname;
+@@ -1383,6 +1387,22 @@
+       }
+    }
+ #endif
++
++#ifdef PNG_APNG_SUPPORTED
++   if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL))
++   {
++      if (png_get_acTL(read_ptr, read_info_ptr, &num_frames, &num_plays))
++      {
++         png_byte is_hidden;
++         pngtest_debug2("Handling acTL chunks (frames %ld, plays %ld)",
++                    num_frames, num_plays);
++         png_set_acTL(write_ptr, write_info_ptr, num_frames, num_plays);
++         is_hidden = png_get_first_frame_is_hidden(read_ptr, read_info_ptr);
++         png_set_first_frame_is_hidden(write_ptr, write_info_ptr, is_hidden);
++      }
++   }
++#endif
++
+ #ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+    {
+       png_unknown_chunkp unknowns;
+@@ -1463,6 +1483,110 @@
+    t_misc += (t_stop - t_start);
+    t_start = t_stop;
+ #endif
++#ifdef PNG_APNG_SUPPORTED
++   if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL))
++   {
++      png_uint_32 frame;
++      for (frame = 0; frame < num_frames; frame++)
++      {
++         png_uint_32 frame_width;
++         png_uint_32 frame_height;
++         png_uint_32 x_offset;
++         png_uint_32 y_offset;
++         png_uint_16 delay_num;
++         png_uint_16 delay_den;
++         png_byte dispose_op;
++         png_byte blend_op;
++         png_read_frame_head(read_ptr, read_info_ptr);
++         if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_fcTL))
++         {
++            png_get_next_frame_fcTL(read_ptr, read_info_ptr,
++                                    &frame_width, &frame_height,
++                                    &x_offset, &y_offset,
++                                    &delay_num, &delay_den,
++                                    &dispose_op, &blend_op);
++         }
++         else
++         {
++            frame_width = width;
++            frame_height = height;
++            x_offset = 0;
++            y_offset = 0;
++            delay_num = 1;
++            delay_den = 1;
++            dispose_op = PNG_DISPOSE_OP_NONE;
++            blend_op = PNG_BLEND_OP_SOURCE;
++         }
++#ifdef PNG_WRITE_APNG_SUPPORTED
++         png_write_frame_head(write_ptr, write_info_ptr, (png_bytepp)&row_buf,
++                              frame_width, frame_height,
++                              x_offset, y_offset,
++                              delay_num, delay_den,
++                              dispose_op, blend_op);
++#endif
++         for (pass = 0; pass < num_passes; pass++)
++         {
++#           ifdef calc_pass_height
++               png_uint_32 pass_height;
++
++               if (num_passes == 7) /* interlaced */
++               {
++                  if (PNG_PASS_COLS(frame_width, pass) > 0)
++                     pass_height = PNG_PASS_ROWS(frame_height, pass);
++
++                  else
++                     pass_height = 0;
++               }
++
++               else /* not interlaced */
++                  pass_height = frame_height;
++#           else
++#              define pass_height frame_height
++#           endif
++
++            pngtest_debug1("Writing row data for pass %d", pass);
++            for (y = 0; y < pass_height; y++)
++            {
++#ifndef SINGLE_ROWBUF_ALLOC
++               pngtest_debug2("Allocating row buffer (pass %d, y = %u)...", pass, y);
++
++               row_buf = (png_bytep)png_malloc(read_ptr,
++                  png_get_rowbytes(read_ptr, read_info_ptr));
++
++               pngtest_debug2("\t0x%08lx (%lu bytes)", (unsigned long)row_buf,
++                  (unsigned long)png_get_rowbytes(read_ptr, read_info_ptr));
++
++#endif /* !SINGLE_ROWBUF_ALLOC */
++               png_read_rows(read_ptr, (png_bytepp)&row_buf, NULL, 1);
++
++#ifdef PNG_WRITE_SUPPORTED
++#ifdef PNGTEST_TIMING
++               t_stop = (float)clock();
++               t_decode += (t_stop - t_start);
++               t_start = t_stop;
++#endif
++               png_write_rows(write_ptr, (png_bytepp)&row_buf, 1);
++#ifdef PNGTEST_TIMING
++               t_stop = (float)clock();
++               t_encode += (t_stop - t_start);
++               t_start = t_stop;
++#endif
++#endif /* PNG_WRITE_SUPPORTED */
++
++#ifndef SINGLE_ROWBUF_ALLOC
++               pngtest_debug2("Freeing row buffer (pass %d, y = %u)", pass, y);
++               png_free(read_ptr, row_buf);
++               row_buf = NULL;
++#endif /* !SINGLE_ROWBUF_ALLOC */
++            }
++         }
++#ifdef PNG_WRITE_APNG_SUPPORTED
++         png_write_frame_tail(write_ptr, write_info_ptr);
++#endif
++      }
++   }
++   else
++#endif
+    for (pass = 0; pass < num_passes; pass++)
+    {
+ #     ifdef calc_pass_height
+diff -Naru libpng-1.6.37.org/pngwrite.c libpng-1.6.37/pngwrite.c
+--- libpng-1.6.37.org/pngwrite.c       2019-04-19 07:21:37.402024748 +0900
++++ libpng-1.6.37/pngwrite.c   2019-04-19 07:22:37.855245836 +0900
+@@ -128,6 +128,10 @@
+        * the application continues writing the PNG.  So check the 'invalid'
+        * flag here too.
+        */
++#ifdef PNG_WRITE_APNG_SUPPORTED
++      if (info_ptr->valid & PNG_INFO_acTL)
++         png_write_acTL(png_ptr, info_ptr->num_frames, info_ptr->num_plays);
++#endif
+ #ifdef PNG_GAMMA_SUPPORTED
+ #  ifdef PNG_WRITE_gAMA_SUPPORTED
+       if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 &&
+@@ -370,6 +374,11 @@
+       png_benign_error(png_ptr, "Wrote palette index exceeding num_palette");
+ #endif
++#ifdef PNG_WRITE_APNG_SUPPORTED
++   if (png_ptr->num_frames_written != png_ptr->num_frames_to_write)
++      png_error(png_ptr, "Not enough frames written");
++#endif
++
+    /* See if user wants us to write information chunks */
+    if (info_ptr != NULL)
+    {
+@@ -1461,6 +1470,43 @@
+ }
+ #endif
++#ifdef PNG_WRITE_APNG_SUPPORTED
++void PNGAPI
++png_write_frame_head(png_structp png_ptr, png_infop info_ptr,
++    png_bytepp row_pointers, png_uint_32 width, png_uint_32 height,
++    png_uint_32 x_offset, png_uint_32 y_offset,
++    png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++    png_byte blend_op)
++{
++    png_debug(1, "in png_write_frame_head");
++
++    /* there is a chance this has been set after png_write_info was called,
++    * so it would be set but not written. is there a way to be sure? */
++    if (!(info_ptr->valid & PNG_INFO_acTL))
++        png_error(png_ptr, "png_write_frame_head(): acTL not set");
++
++    png_write_reset(png_ptr);
++
++    png_write_reinit(png_ptr, info_ptr, width, height);
++
++    if ( !(png_ptr->num_frames_written == 0 &&
++           (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN) ) )
++        png_write_fcTL(png_ptr, width, height, x_offset, y_offset,
++                       delay_num, delay_den, dispose_op, blend_op);
++
++    PNG_UNUSED(row_pointers)
++}
++
++void PNGAPI
++png_write_frame_tail(png_structp png_ptr, png_infop info_ptr)
++{
++    png_debug(1, "in png_write_frame_tail");
++
++    png_ptr->num_frames_written++;
++
++    PNG_UNUSED(info_ptr)
++}
++#endif /* PNG_WRITE_APNG_SUPPORTED */
+ #ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED
+ /* Initialize the write structure - general purpose utility. */
+diff -Naru libpng-1.6.37.org/pngwutil.c libpng-1.6.37/pngwutil.c
+--- libpng-1.6.37.org/pngwutil.c       2019-04-19 07:21:37.402024748 +0900
++++ libpng-1.6.37/pngwutil.c   2019-04-19 07:22:37.867245682 +0900
+@@ -821,6 +821,11 @@
+    /* Write the chunk */
+    png_write_complete_chunk(png_ptr, png_IHDR, buf, 13);
++#ifdef PNG_WRITE_APNG_SUPPORTED
++   png_ptr->first_frame_width = width;
++   png_ptr->first_frame_height = height;
++#endif
++
+    if ((png_ptr->do_filter) == PNG_NO_FILTERS)
+    {
+       if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE ||
+@@ -1002,8 +1007,17 @@
+                optimize_cmf(data, png_image_size(png_ptr));
+ #endif
+-         if (size > 0)
+-            png_write_complete_chunk(png_ptr, png_IDAT, data, size);
++            if (size > 0)
++#ifdef PNG_WRITE_APNG_SUPPORTED
++            {
++               if (png_ptr->num_frames_written == 0)
++#endif
++               png_write_complete_chunk(png_ptr, png_IDAT, data, size);
++#ifdef PNG_WRITE_APNG_SUPPORTED
++               else
++                  png_write_fdAT(png_ptr, data, size);
++            }
++#endif /* PNG_WRITE_APNG_SUPPORTED */
+          png_ptr->mode |= PNG_HAVE_IDAT;
+          png_ptr->zstream.next_out = data;
+@@ -1050,7 +1064,17 @@
+ #endif
+          if (size > 0)
++#ifdef PNG_WRITE_APNG_SUPPORTED
++         {
++            if (png_ptr->num_frames_written == 0)
++#endif
+             png_write_complete_chunk(png_ptr, png_IDAT, data, size);
++#ifdef PNG_WRITE_APNG_SUPPORTED
++            else
++               png_write_fdAT(png_ptr, data, size);
++         }
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++
+          png_ptr->zstream.avail_out = 0;
+          png_ptr->zstream.next_out = NULL;
+          png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT;
+@@ -1885,6 +1909,82 @@
+ }
+ #endif
++#ifdef PNG_WRITE_APNG_SUPPORTED
++void /* PRIVATE */
++png_write_acTL(png_structp png_ptr,
++    png_uint_32 num_frames, png_uint_32 num_plays)
++{
++    png_byte buf[8];
++
++    png_debug(1, "in png_write_acTL");
++
++    png_ptr->num_frames_to_write = num_frames;
++
++    if (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN)
++        num_frames--;
++
++    png_save_uint_32(buf, num_frames);
++    png_save_uint_32(buf + 4, num_plays);
++
++    png_write_complete_chunk(png_ptr, png_acTL, buf, (png_size_t)8);
++}
++
++void /* PRIVATE */
++png_write_fcTL(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
++    png_uint_32 x_offset, png_uint_32 y_offset,
++    png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++    png_byte blend_op)
++{
++    png_byte buf[26];
++
++    png_debug(1, "in png_write_fcTL");
++
++    if (png_ptr->num_frames_written == 0 && (x_offset != 0 || y_offset != 0))
++        png_error(png_ptr, "x and/or y offset for the first frame aren't 0");
++    if (png_ptr->num_frames_written == 0 &&
++        (width != png_ptr->first_frame_width ||
++         height != png_ptr->first_frame_height))
++        png_error(png_ptr, "width and/or height in the first frame's fcTL "
++                           "don't match the ones in IHDR");
++
++    /* more error checking */
++    png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset,
++                             delay_num, delay_den, dispose_op, blend_op);
++
++    png_save_uint_32(buf, png_ptr->next_seq_num);
++    png_save_uint_32(buf + 4, width);
++    png_save_uint_32(buf + 8, height);
++    png_save_uint_32(buf + 12, x_offset);
++    png_save_uint_32(buf + 16, y_offset);
++    png_save_uint_16(buf + 20, delay_num);
++    png_save_uint_16(buf + 22, delay_den);
++    buf[24] = dispose_op;
++    buf[25] = blend_op;
++
++    png_write_complete_chunk(png_ptr, png_fcTL, buf, (png_size_t)26);
++
++    png_ptr->next_seq_num++;
++}
++
++void /* PRIVATE */
++png_write_fdAT(png_structp png_ptr,
++    png_const_bytep data, png_size_t length)
++{
++    png_byte buf[4];
++
++    png_write_chunk_header(png_ptr, png_fdAT, (png_uint_32)(4 + length));
++
++    png_save_uint_32(buf, png_ptr->next_seq_num);
++    png_write_chunk_data(png_ptr, buf, 4);
++
++    png_write_chunk_data(png_ptr, data, length);
++
++    png_write_chunk_end(png_ptr);
++
++    png_ptr->next_seq_num++;
++}
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++
+ /* Initializes the row writing capability of libpng */
+ void /* PRIVATE */
+ png_write_start_row(png_structrp png_ptr)
+@@ -2778,4 +2878,39 @@
+    }
+ #endif /* WRITE_FLUSH */
+ }
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++void /* PRIVATE */
++png_write_reset(png_structp png_ptr)
++{
++    png_ptr->row_number = 0;
++    png_ptr->pass = 0;
++    png_ptr->mode &= ~PNG_HAVE_IDAT;
++}
++
++void /* PRIVATE */
++png_write_reinit(png_structp png_ptr, png_infop info_ptr,
++                 png_uint_32 width, png_uint_32 height)
++{
++    if (png_ptr->num_frames_written == 0 &&
++        (width != png_ptr->first_frame_width ||
++         height != png_ptr->first_frame_height))
++        png_error(png_ptr, "width and/or height in the first frame's fcTL "
++                           "don't match the ones in IHDR");
++    if (width > png_ptr->first_frame_width ||
++        height > png_ptr->first_frame_height)
++        png_error(png_ptr, "width and/or height for a frame greater than"
++                           "the ones in IHDR");
++
++    png_set_IHDR(png_ptr, info_ptr, width, height,
++                 info_ptr->bit_depth, info_ptr->color_type,
++                 info_ptr->interlace_type, info_ptr->compression_type,
++                 info_ptr->filter_type);
++
++    png_ptr->width = width;
++    png_ptr->height = height;
++    png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width);
++    png_ptr->usr_width = png_ptr->width;
++}
++#endif /* PNG_WRITE_APNG_SUPPORTED */
+ #endif /* WRITE */
+diff -Naru libpng-1.6.37.org/scripts/symbols.def libpng-1.6.37/scripts/symbols.def
+--- libpng-1.6.37.org/scripts/symbols.def      2019-04-19 07:21:37.405024710 +0900
++++ libpng-1.6.37/scripts/symbols.def  2019-04-19 07:22:37.856245823 +0900
+@@ -253,3 +253,23 @@
+  png_set_eXIf @247
+  png_get_eXIf_1 @248
+  png_set_eXIf_1 @249
++ png_get_acTL @250
++ png_set_acTL @251
++ png_get_num_frames @252
++ png_get_num_plays @253
++ png_get_next_frame_fcTL @254
++ png_set_next_frame_fcTL @255
++ png_get_next_frame_width @256
++ png_get_next_frame_height @257
++ png_get_next_frame_x_offset @258
++ png_get_next_frame_y_offset @259
++ png_get_next_frame_delay_num @260
++ png_get_next_frame_delay_den @261
++ png_get_next_frame_dispose_op @262
++ png_get_next_frame_blend_op @263
++ png_get_first_frame_is_hidden @264
++ png_set_first_frame_is_hidden @265
++ png_read_frame_head @266
++ png_set_progressive_frame_fn @267
++ png_write_frame_head @268
++ png_write_frame_tail @269
diff --git a/extra/libpng/sources b/extra/libpng/sources
new file mode 100644 (file)
index 0000000..d6556f0
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/glennrp/libpng/archive/v1.6.37.tar.gz
+patches/libpng-1.6.37-apng.patch
diff --git a/extra/libpng/version b/extra/libpng/version
new file mode 100644 (file)
index 0000000..eb27110
--- /dev/null
@@ -0,0 +1 @@
+1.6.37 1
diff --git a/extra/libpsl/build b/extra/libpsl/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libpsl/checksums b/extra/libpsl/checksums
new file mode 100644 (file)
index 0000000..e46c48d
--- /dev/null
@@ -0,0 +1 @@
+ac6ce1e1fbd4d0254c4ddb9d37f1fa99dec83619c1253328155206b896210d4c
diff --git a/extra/libpsl/depends b/extra/libpsl/depends
new file mode 100644 (file)
index 0000000..29c6b76
--- /dev/null
@@ -0,0 +1,2 @@
+icu
+python make
diff --git a/extra/libpsl/sources b/extra/libpsl/sources
new file mode 100644 (file)
index 0000000..57a914d
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/rockdaboot/libpsl/releases/download/0.21.1/libpsl-0.21.1.tar.gz
diff --git a/extra/libpsl/version b/extra/libpsl/version
new file mode 100644 (file)
index 0000000..bfed92b
--- /dev/null
@@ -0,0 +1 @@
+0.21.1 1
diff --git a/extra/libsoup/build b/extra/libsoup/build
new file mode 100755 (executable)
index 0000000..334686c
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+meson \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --localstatedir=/var \
+    -Dtls_check=false \
+    -Dvapi=disabled \
+    -Dgssapi=disabled \
+    -Dbrotli=disabled \
+    -Dsysprof=disabled \
+    . output
+
+ninja -C output
+ninja -C output install
diff --git a/extra/libsoup/checksums b/extra/libsoup/checksums
new file mode 100644 (file)
index 0000000..6216aaf
--- /dev/null
@@ -0,0 +1 @@
+170c3f8446b0f65f8e4b93603349172b1085fb8917c181d10962f02bb85f5387  libsoup-2.72.0.tar.xz
diff --git a/extra/libsoup/depends b/extra/libsoup/depends
new file mode 100644 (file)
index 0000000..dba55b4
--- /dev/null
@@ -0,0 +1,8 @@
+glib
+glib-networking
+libpsl
+libxml2
+meson make
+pkgconf make
+sqlite
+zlib
diff --git a/extra/libsoup/sources b/extra/libsoup/sources
new file mode 100644 (file)
index 0000000..c350cd2
--- /dev/null
@@ -0,0 +1 @@
+https://download.gnome.org/sources/libsoup/2.72/libsoup-2.72.0.tar.xz
diff --git a/extra/libsoup/version b/extra/libsoup/version
new file mode 100644 (file)
index 0000000..84ab5da
--- /dev/null
@@ -0,0 +1 @@
+2.72.0 1
diff --git a/extra/libvorbis/build b/extra/libvorbis/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libvorbis/checksums b/extra/libvorbis/checksums
new file mode 100644 (file)
index 0000000..9ba3dea
--- /dev/null
@@ -0,0 +1 @@
+0e982409a9c3fc82ee06e08205b1355e5c6aa4c36bca58146ef399621b0ce5ab  libvorbis-1.3.7.tar.gz
diff --git a/extra/libvorbis/depends b/extra/libvorbis/depends
new file mode 100644 (file)
index 0000000..b6a6854
--- /dev/null
@@ -0,0 +1 @@
+libogg
diff --git a/extra/libvorbis/sources b/extra/libvorbis/sources
new file mode 100644 (file)
index 0000000..16ec9f3
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.7.tar.gz
diff --git a/extra/libvorbis/version b/extra/libvorbis/version
new file mode 100644 (file)
index 0000000..ae80c29
--- /dev/null
@@ -0,0 +1 @@
+1.3.7 1
diff --git a/extra/libvpx/build b/extra/libvpx/build
new file mode 100755 (executable)
index 0000000..708c3b8
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh -e
+
+export CC="${CC:-cc}"
+export CXX="${CXX:-c++}"
+
+patch -p1 < fix-busybox-diff.patch
+
+# Remove the perl requirement from configure
+# as we have removed the perl requirement
+# ourselves :-).
+sed -i 's/perl/:/g' configure
+
+./configure \
+    --prefix=/usr \
+    --enable-vp8 \
+    --enable-vp9 \
+    --enable-experimental \
+    --enable-runtime-cpu-detect \
+    --target=x86_64-linux-gcc \
+    --enable-shared \
+    --enable-postproc \
+    --enable-pic \
+    --disable-tools \
+    --disable-examples \
+    --disable-docs \
+    --disable-unit-tests \
+    --disable-install-docs \
+    --disable-install-srcs \
+    --disable-install-bins \
+    --as=nasm
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libvpx/checksums b/extra/libvpx/checksums
new file mode 100644 (file)
index 0000000..60cdc5d
--- /dev/null
@@ -0,0 +1,6 @@
+85803ccbdbdd7a3b03d930187cb055f1353596969c1f92ebec2db839fa4f834a
+ce802d64bcbeb4230527aea2b4284d9844fb12fa5aca868a94e03982f85ec45b
+e6aa264d60371d76e39a8fa0118e37915ea348400f82046d083a4511d229f8eb
+bc2ab604abf616682374d65c9d154e6e2dac0524fd969b12ab4d81e30452b904
+77716ffb6d08322a3f300b9adad302641836af6e923854eba040a95e0766fa70
+7445cedc0bc43d2d17b8f838b1d876b0fe861d669f43a8f8555c3ea7b745fc52
diff --git a/extra/libvpx/depends b/extra/libvpx/depends
new file mode 100644 (file)
index 0000000..116f6b2
--- /dev/null
@@ -0,0 +1 @@
+nasm make
diff --git a/extra/libvpx/files/vp8_rtcd.h b/extra/libvpx/files/vp8_rtcd.h
new file mode 100644 (file)
index 0000000..6794409
--- /dev/null
@@ -0,0 +1,265 @@
+// This file is generated. Do not edit.
+#ifndef VP8_RTCD_H_
+#define VP8_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * VP8
+ */
+
+struct blockd;
+struct macroblockd;
+struct loop_filter_info;
+
+/* Encoder forward decls */
+struct block;
+struct macroblock;
+struct variance_vtable;
+union int_mv;
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void vp8_bilinear_predict16x16_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_bilinear_predict16x16_sse2(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_bilinear_predict16x16_ssse3(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+
+void vp8_bilinear_predict4x4_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_bilinear_predict4x4_sse2(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_sse2
+
+void vp8_bilinear_predict8x4_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_bilinear_predict8x4_sse2(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_sse2
+
+void vp8_bilinear_predict8x8_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_bilinear_predict8x8_sse2(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_bilinear_predict8x8_ssse3(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+
+void vp8_blend_b_c(unsigned char *y, unsigned char *u, unsigned char *v, int y_1, int u_1, int v_1, int alpha, int stride);
+#define vp8_blend_b vp8_blend_b_c
+
+void vp8_blend_mb_inner_c(unsigned char *y, unsigned char *u, unsigned char *v, int y_1, int u_1, int v_1, int alpha, int stride);
+#define vp8_blend_mb_inner vp8_blend_mb_inner_c
+
+void vp8_blend_mb_outer_c(unsigned char *y, unsigned char *u, unsigned char *v, int y_1, int u_1, int v_1, int alpha, int stride);
+#define vp8_blend_mb_outer vp8_blend_mb_outer_c
+
+int vp8_block_error_c(short *coeff, short *dqcoeff);
+int vp8_block_error_sse2(short *coeff, short *dqcoeff);
+#define vp8_block_error vp8_block_error_sse2
+
+void vp8_copy32xn_c(const unsigned char *src_ptr, int src_stride, unsigned char *dst_ptr, int dst_stride, int height);
+void vp8_copy32xn_sse2(const unsigned char *src_ptr, int src_stride, unsigned char *dst_ptr, int dst_stride, int height);
+void vp8_copy32xn_sse3(const unsigned char *src_ptr, int src_stride, unsigned char *dst_ptr, int dst_stride, int height);
+RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int src_stride, unsigned char *dst_ptr, int dst_stride, int height);
+
+void vp8_copy_mem16x16_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride);
+void vp8_copy_mem16x16_sse2(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride);
+#define vp8_copy_mem16x16 vp8_copy_mem16x16_sse2
+
+void vp8_copy_mem8x4_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride);
+void vp8_copy_mem8x4_mmx(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride);
+#define vp8_copy_mem8x4 vp8_copy_mem8x4_mmx
+
+void vp8_copy_mem8x8_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride);
+void vp8_copy_mem8x8_mmx(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride);
+#define vp8_copy_mem8x8 vp8_copy_mem8x8_mmx
+
+void vp8_dc_only_idct_add_c(short input_dc, unsigned char *pred_ptr, int pred_stride, unsigned char *dst_ptr, int dst_stride);
+void vp8_dc_only_idct_add_mmx(short input_dc, unsigned char *pred_ptr, int pred_stride, unsigned char *dst_ptr, int dst_stride);
+#define vp8_dc_only_idct_add vp8_dc_only_idct_add_mmx
+
+int vp8_denoiser_filter_c(unsigned char *mc_running_avg_y, int mc_avg_y_stride, unsigned char *running_avg_y, int avg_y_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+int vp8_denoiser_filter_sse2(unsigned char *mc_running_avg_y, int mc_avg_y_stride, unsigned char *running_avg_y, int avg_y_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+#define vp8_denoiser_filter vp8_denoiser_filter_sse2
+
+int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg, int mc_avg_stride, unsigned char *running_avg, int avg_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+int vp8_denoiser_filter_uv_sse2(unsigned char *mc_running_avg, int mc_avg_stride, unsigned char *running_avg, int avg_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_sse2
+
+void vp8_dequant_idct_add_c(short *input, short *dq, unsigned char *dest, int stride);
+void vp8_dequant_idct_add_mmx(short *input, short *dq, unsigned char *dest, int stride);
+#define vp8_dequant_idct_add vp8_dequant_idct_add_mmx
+
+void vp8_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
+void vp8_dequant_idct_add_uv_block_sse2(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
+#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_sse2
+
+void vp8_dequant_idct_add_y_block_c(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
+void vp8_dequant_idct_add_y_block_sse2(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
+#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_sse2
+
+void vp8_dequantize_b_c(struct blockd*, short *DQC);
+void vp8_dequantize_b_mmx(struct blockd*, short *DQC);
+#define vp8_dequantize_b vp8_dequantize_b_mmx
+
+int vp8_diamond_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_diamond_search_sadx4(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+#define vp8_diamond_search_sad vp8_diamond_search_sadx4
+
+void vp8_fast_quantize_b_c(struct block *, struct blockd *);
+void vp8_fast_quantize_b_sse2(struct block *, struct blockd *);
+void vp8_fast_quantize_b_ssse3(struct block *, struct blockd *);
+RTCD_EXTERN void (*vp8_fast_quantize_b)(struct block *, struct blockd *);
+
+void vp8_filter_by_weight16x16_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+void vp8_filter_by_weight16x16_sse2(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_sse2
+
+void vp8_filter_by_weight4x4_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
+
+void vp8_filter_by_weight8x8_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+void vp8_filter_by_weight8x8_sse2(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_sse2
+
+int vp8_full_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_full_search_sadx8(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+RTCD_EXTERN int (*vp8_full_search_sad)(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+
+void vp8_loop_filter_bh_c(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_bh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_bh vp8_loop_filter_bh_sse2
+
+void vp8_loop_filter_bv_c(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_bv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_bv vp8_loop_filter_bv_sse2
+
+void vp8_loop_filter_mbh_c(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_mbh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_mbh vp8_loop_filter_mbh_sse2
+
+void vp8_loop_filter_mbv_c(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_mbv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_mbv vp8_loop_filter_mbv_sse2
+
+void vp8_loop_filter_bhs_c(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+void vp8_loop_filter_bhs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_sse2
+
+void vp8_loop_filter_bvs_c(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+void vp8_loop_filter_bvs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_sse2
+
+void vp8_loop_filter_simple_horizontal_edge_c(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+void vp8_loop_filter_simple_horizontal_edge_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_sse2
+
+void vp8_loop_filter_simple_vertical_edge_c(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+void vp8_loop_filter_simple_vertical_edge_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_sse2
+
+int vp8_mbblock_error_c(struct macroblock *mb, int dc);
+int vp8_mbblock_error_sse2(struct macroblock *mb, int dc);
+#define vp8_mbblock_error vp8_mbblock_error_sse2
+
+int vp8_mbuverror_c(struct macroblock *mb);
+int vp8_mbuverror_sse2(struct macroblock *mb);
+#define vp8_mbuverror vp8_mbuverror_sse2
+
+int vp8_refining_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int error_per_bit, int search_range, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_refining_search_sadx4(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int error_per_bit, int search_range, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+#define vp8_refining_search_sad vp8_refining_search_sadx4
+
+void vp8_regular_quantize_b_c(struct block *, struct blockd *);
+void vp8_regular_quantize_b_sse2(struct block *, struct blockd *);
+void vp8_regular_quantize_b_sse4_1(struct block *, struct blockd *);
+RTCD_EXTERN void (*vp8_regular_quantize_b)(struct block *, struct blockd *);
+
+void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
+void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
+#define vp8_short_fdct4x4 vp8_short_fdct4x4_sse2
+
+void vp8_short_fdct8x4_c(short *input, short *output, int pitch);
+void vp8_short_fdct8x4_sse2(short *input, short *output, int pitch);
+#define vp8_short_fdct8x4 vp8_short_fdct8x4_sse2
+
+void vp8_short_idct4x4llm_c(short *input, unsigned char *pred_ptr, int pred_stride, unsigned char *dst_ptr, int dst_stride);
+void vp8_short_idct4x4llm_mmx(short *input, unsigned char *pred_ptr, int pred_stride, unsigned char *dst_ptr, int dst_stride);
+#define vp8_short_idct4x4llm vp8_short_idct4x4llm_mmx
+
+void vp8_short_inv_walsh4x4_c(short *input, short *mb_dqcoeff);
+void vp8_short_inv_walsh4x4_sse2(short *input, short *mb_dqcoeff);
+#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_sse2
+
+void vp8_short_inv_walsh4x4_1_c(short *input, short *mb_dqcoeff);
+#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
+
+void vp8_short_walsh4x4_c(short *input, short *output, int pitch);
+void vp8_short_walsh4x4_sse2(short *input, short *output, int pitch);
+#define vp8_short_walsh4x4 vp8_short_walsh4x4_sse2
+
+void vp8_sixtap_predict16x16_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict16x16_sse2(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict16x16_ssse3(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+
+void vp8_sixtap_predict4x4_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict4x4_mmx(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict4x4_ssse3(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict4x4)(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+
+void vp8_sixtap_predict8x4_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict8x4_sse2(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict8x4_ssse3(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+
+void vp8_sixtap_predict8x8_c(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict8x8_sse2(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+void vp8_sixtap_predict8x8_ssse3(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch);
+
+void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
+void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
+#define vp8_temporal_filter_apply vp8_temporal_filter_apply_sse2
+
+void vp8_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+    int flags = x86_simd_caps();
+
+    (void)flags;
+
+    vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_sse2;
+    if (flags & HAS_SSSE3) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_ssse3;
+    vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_sse2;
+    if (flags & HAS_SSSE3) vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_ssse3;
+    vp8_copy32xn = vp8_copy32xn_sse2;
+    if (flags & HAS_SSE3) vp8_copy32xn = vp8_copy32xn_sse3;
+    vp8_fast_quantize_b = vp8_fast_quantize_b_sse2;
+    if (flags & HAS_SSSE3) vp8_fast_quantize_b = vp8_fast_quantize_b_ssse3;
+    vp8_full_search_sad = vp8_full_search_sad_c;
+    if (flags & HAS_SSE3) vp8_full_search_sad = vp8_full_search_sadx3;
+    if (flags & HAS_SSE4_1) vp8_full_search_sad = vp8_full_search_sadx8;
+    vp8_regular_quantize_b = vp8_regular_quantize_b_sse2;
+    if (flags & HAS_SSE4_1) vp8_regular_quantize_b = vp8_regular_quantize_b_sse4_1;
+    vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
+    if (flags & HAS_SSSE3) vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
+    vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_mmx;
+    if (flags & HAS_SSSE3) vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_ssse3;
+    vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_sse2;
+    if (flags & HAS_SSSE3) vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_ssse3;
+    vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
+    if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
+}
+#endif
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
+#endif
diff --git a/extra/libvpx/files/vp9_rtcd.h b/extra/libvpx/files/vp9_rtcd.h
new file mode 100644 (file)
index 0000000..b58898b
--- /dev/null
@@ -0,0 +1,126 @@
+// This file is generated. Do not edit.
+#ifndef VP9_RTCD_H_
+#define VP9_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * VP9
+ */
+
+#include "vpx/vpx_integer.h"
+#include "vp9/common/vp9_common.h"
+#include "vp9/common/vp9_enums.h"
+#include "vp9/common/vp9_filter.h"
+
+struct macroblockd;
+
+/* Encoder forward decls */
+struct macroblock;
+struct vp9_variance_vtable;
+struct search_site_config;
+struct mv;
+union int_mv;
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void vp9_apply_temporal_filter_c(const uint8_t *y_src, int y_src_stride, const uint8_t *y_pre, int y_pre_stride, const uint8_t *u_src, const uint8_t *v_src, int uv_src_stride, const uint8_t *u_pre, const uint8_t *v_pre, int uv_pre_stride, unsigned int block_width, unsigned int block_height, int ss_x, int ss_y, int strength, const int *const blk_fw, int use_32x32, uint32_t *y_accumulator, uint16_t *y_count, uint32_t *u_accumulator, uint16_t *u_count, uint32_t *v_accumulator, uint16_t *v_count);
+void vp9_apply_temporal_filter_sse4_1(const uint8_t *y_src, int y_src_stride, const uint8_t *y_pre, int y_pre_stride, const uint8_t *u_src, const uint8_t *v_src, int uv_src_stride, const uint8_t *u_pre, const uint8_t *v_pre, int uv_pre_stride, unsigned int block_width, unsigned int block_height, int ss_x, int ss_y, int strength, const int *const blk_fw, int use_32x32, uint32_t *y_accumulator, uint16_t *y_count, uint32_t *u_accumulator, uint16_t *u_count, uint32_t *v_accumulator, uint16_t *v_count);
+RTCD_EXTERN void (*vp9_apply_temporal_filter)(const uint8_t *y_src, int y_src_stride, const uint8_t *y_pre, int y_pre_stride, const uint8_t *u_src, const uint8_t *v_src, int uv_src_stride, const uint8_t *u_pre, const uint8_t *v_pre, int uv_pre_stride, unsigned int block_width, unsigned int block_height, int ss_x, int ss_y, int strength, const int *const blk_fw, int use_32x32, uint32_t *y_accumulator, uint16_t *y_count, uint32_t *u_accumulator, uint16_t *u_count, uint32_t *v_accumulator, uint16_t *v_count);
+
+int64_t vp9_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+int64_t vp9_block_error_sse2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+int64_t vp9_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+RTCD_EXTERN int64_t (*vp9_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+
+int64_t vp9_block_error_fp_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, int block_size);
+int64_t vp9_block_error_fp_sse2(const tran_low_t *coeff, const tran_low_t *dqcoeff, int block_size);
+int64_t vp9_block_error_fp_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, int block_size);
+RTCD_EXTERN int64_t (*vp9_block_error_fp)(const tran_low_t *coeff, const tran_low_t *dqcoeff, int block_size);
+
+int vp9_diamond_search_sad_c(const struct macroblock *x, const struct search_site_config *cfg,  struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv);
+int vp9_diamond_search_sad_avx(const struct macroblock *x, const struct search_site_config *cfg,  struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv);
+RTCD_EXTERN int (*vp9_diamond_search_sad)(const struct macroblock *x, const struct search_site_config *cfg,  struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv);
+
+void vp9_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+void vp9_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+#define vp9_fht16x16 vp9_fht16x16_sse2
+
+void vp9_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+void vp9_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+#define vp9_fht4x4 vp9_fht4x4_sse2
+
+void vp9_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+void vp9_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+#define vp9_fht8x8 vp9_fht8x8_sse2
+
+void vp9_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
+void vp9_fwht4x4_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vp9_fwht4x4 vp9_fwht4x4_sse2
+
+void vp9_iht16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+void vp9_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+#define vp9_iht16x16_256_add vp9_iht16x16_256_add_sse2
+
+void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+void vp9_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+#define vp9_iht4x4_16_add vp9_iht4x4_16_add_sse2
+
+void vp9_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+void vp9_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+#define vp9_iht8x8_64_add vp9_iht8x8_64_add_sse2
+
+void vp9_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_quantize_fp_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vp9_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void vp9_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_quantize_fp_32x32_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vp9_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config *src, struct yv12_buffer_config *dst, INTERP_FILTER filter_type, int phase_scaler);
+void vp9_scale_and_extend_frame_ssse3(const struct yv12_buffer_config *src, struct yv12_buffer_config *dst, INTERP_FILTER filter_type, int phase_scaler);
+RTCD_EXTERN void (*vp9_scale_and_extend_frame)(const struct yv12_buffer_config *src, struct yv12_buffer_config *dst, INTERP_FILTER filter_type, int phase_scaler);
+
+void vp9_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+    int flags = x86_simd_caps();
+
+    (void)flags;
+
+    vp9_apply_temporal_filter = vp9_apply_temporal_filter_c;
+    if (flags & HAS_SSE4_1) vp9_apply_temporal_filter = vp9_apply_temporal_filter_sse4_1;
+    vp9_block_error = vp9_block_error_sse2;
+    if (flags & HAS_AVX2) vp9_block_error = vp9_block_error_avx2;
+    vp9_block_error_fp = vp9_block_error_fp_sse2;
+    if (flags & HAS_AVX2) vp9_block_error_fp = vp9_block_error_fp_avx2;
+    vp9_diamond_search_sad = vp9_diamond_search_sad_c;
+    if (flags & HAS_AVX) vp9_diamond_search_sad = vp9_diamond_search_sad_avx;
+    vp9_quantize_fp = vp9_quantize_fp_sse2;
+    if (flags & HAS_SSSE3) vp9_quantize_fp = vp9_quantize_fp_ssse3;
+    if (flags & HAS_AVX2) vp9_quantize_fp = vp9_quantize_fp_avx2;
+    vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_c;
+    if (flags & HAS_SSSE3) vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_ssse3;
+    vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_c;
+    if (flags & HAS_SSSE3) vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_ssse3;
+}
+#endif
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
+#endif
diff --git a/extra/libvpx/files/vpx_dsp_rtcd.h b/extra/libvpx/files/vpx_dsp_rtcd.h
new file mode 100644 (file)
index 0000000..4682593
--- /dev/null
@@ -0,0 +1,1196 @@
+// This file is generated. Do not edit.
+#ifndef VPX_DSP_RTCD_H_
+#define VPX_DSP_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * DSP
+ */
+
+#include "vpx/vpx_integer.h"
+#include "vpx_dsp/vpx_dsp_common.h"
+#include "vpx_dsp/vpx_filter.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+unsigned int vpx_avg_4x4_c(const uint8_t *, int p);
+unsigned int vpx_avg_4x4_sse2(const uint8_t *, int p);
+#define vpx_avg_4x4 vpx_avg_4x4_sse2
+
+unsigned int vpx_avg_8x8_c(const uint8_t *, int p);
+unsigned int vpx_avg_8x8_sse2(const uint8_t *, int p);
+#define vpx_avg_8x8 vpx_avg_8x8_sse2
+
+void vpx_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride);
+void vpx_comp_avg_pred_sse2(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride);
+#define vpx_comp_avg_pred vpx_comp_avg_pred_sse2
+
+void vpx_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+
+void vpx_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+
+void vpx_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+
+void vpx_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+
+void vpx_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+
+void vpx_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve8_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+
+void vpx_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+#define vpx_convolve_avg vpx_convolve_avg_sse2
+
+void vpx_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_convolve_copy_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+#define vpx_convolve_copy vpx_convolve_copy_sse2
+
+void vpx_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c
+
+void vpx_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c
+
+void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c
+
+void vpx_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c
+
+void vpx_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c
+
+void vpx_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c
+
+void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c
+
+void vpx_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c
+
+void vpx_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_16x16)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_32x32)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_4x4)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_8x8)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d207_predictor_16x16)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d207_predictor_32x32)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_sse2
+
+void vpx_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d207_predictor_8x8)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d45_predictor_16x16)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d45_predictor_32x32)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_sse2
+
+void vpx_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_sse2
+
+void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c
+
+void vpx_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_16x16)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_32x32)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_4x4)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_8x8)(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c
+
+void vpx_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_sse2
+
+void vpx_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_sse2
+
+void vpx_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_sse2
+
+void vpx_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_sse2
+
+void vpx_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_sse2
+
+void vpx_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_sse2
+
+void vpx_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_sse2
+
+void vpx_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_sse2
+
+void vpx_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_sse2
+
+void vpx_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_sse2
+
+void vpx_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_sse2
+
+void vpx_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_sse2
+
+void vpx_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_sse2
+
+void vpx_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_sse2
+
+void vpx_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_sse2
+
+void vpx_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_sse2
+
+void vpx_fdct16x16_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct16x16_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct16x16 vpx_fdct16x16_sse2
+
+void vpx_fdct16x16_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct16x16_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct16x16_1 vpx_fdct16x16_1_sse2
+
+void vpx_fdct32x32_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_sse2(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_avx2(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*vpx_fdct32x32)(const int16_t *input, tran_low_t *output, int stride);
+
+void vpx_fdct32x32_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct32x32_1 vpx_fdct32x32_1_sse2
+
+void vpx_fdct32x32_rd_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_rd_sse2(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_rd_avx2(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*vpx_fdct32x32_rd)(const int16_t *input, tran_low_t *output, int stride);
+
+void vpx_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct4x4_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct4x4 vpx_fdct4x4_sse2
+
+void vpx_fdct4x4_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct4x4_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct4x4_1 vpx_fdct4x4_1_sse2
+
+void vpx_fdct8x8_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct8x8_sse2(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct8x8_ssse3(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*vpx_fdct8x8)(const int16_t *input, tran_low_t *output, int stride);
+
+void vpx_fdct8x8_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct8x8_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct8x8_1 vpx_fdct8x8_1_sse2
+
+void vpx_get16x16var_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void vpx_get16x16var_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void vpx_get16x16var_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+RTCD_EXTERN void (*vpx_get16x16var)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+
+unsigned int vpx_get4x4sse_cs_c(const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride);
+#define vpx_get4x4sse_cs vpx_get4x4sse_cs_c
+
+void vpx_get8x8var_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void vpx_get8x8var_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define vpx_get8x8var vpx_get8x8var_sse2
+
+unsigned int vpx_get_mb_ss_c(const int16_t *);
+unsigned int vpx_get_mb_ss_sse2(const int16_t *);
+#define vpx_get_mb_ss vpx_get_mb_ss_sse2
+
+void vpx_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_sse2
+
+void vpx_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_sse2
+
+void vpx_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_sse2
+
+void vpx_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_sse2
+
+void vpx_hadamard_16x16_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+void vpx_hadamard_16x16_sse2(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+void vpx_hadamard_16x16_avx2(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+RTCD_EXTERN void (*vpx_hadamard_16x16)(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+
+void vpx_hadamard_32x32_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+void vpx_hadamard_32x32_sse2(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+void vpx_hadamard_32x32_avx2(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+RTCD_EXTERN void (*vpx_hadamard_32x32)(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+
+void vpx_hadamard_8x8_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+void vpx_hadamard_8x8_sse2(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+void vpx_hadamard_8x8_ssse3(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+RTCD_EXTERN void (*vpx_hadamard_8x8)(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
+
+void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c
+
+void vpx_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct16x16_10_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct16x16_10_add vpx_idct16x16_10_add_sse2
+
+void vpx_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct16x16_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct16x16_1_add vpx_idct16x16_1_add_sse2
+
+void vpx_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct16x16_256_add vpx_idct16x16_256_add_sse2
+
+void vpx_idct16x16_38_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct16x16_38_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct16x16_38_add vpx_idct16x16_38_add_sse2
+
+void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct32x32_1024_add vpx_idct32x32_1024_add_sse2
+
+void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_135_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_135_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct32x32_135_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+void vpx_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct32x32_1_add vpx_idct32x32_1_add_sse2
+
+void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_34_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_34_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct32x32_34_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+void vpx_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct4x4_16_add vpx_idct4x4_16_add_sse2
+
+void vpx_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct4x4_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct4x4_1_add vpx_idct4x4_1_add_sse2
+
+void vpx_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_12_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_12_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct8x8_12_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+void vpx_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct8x8_1_add vpx_idct8x8_1_add_sse2
+
+void vpx_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct8x8_64_add vpx_idct8x8_64_add_sse2
+
+int16_t vpx_int_pro_col_c(const uint8_t *ref, const int width);
+int16_t vpx_int_pro_col_sse2(const uint8_t *ref, const int width);
+#define vpx_int_pro_col vpx_int_pro_col_sse2
+
+void vpx_int_pro_row_c(int16_t *hbuf, const uint8_t *ref, const int ref_stride, const int height);
+void vpx_int_pro_row_sse2(int16_t *hbuf, const uint8_t *ref, const int ref_stride, const int height);
+#define vpx_int_pro_row vpx_int_pro_row_sse2
+
+void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_iwht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_sse2
+
+void vpx_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c
+
+void vpx_lpf_horizontal_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_avx2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+RTCD_EXTERN void (*vpx_lpf_horizontal_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+
+void vpx_lpf_horizontal_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_dual_avx2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+RTCD_EXTERN void (*vpx_lpf_horizontal_16_dual)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+
+void vpx_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_sse2
+
+void vpx_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_horizontal_4_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_sse2
+
+void vpx_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_sse2
+
+void vpx_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_horizontal_8_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_sse2
+
+void vpx_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_sse2
+
+void vpx_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_16_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_sse2
+
+void vpx_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_sse2
+
+void vpx_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_vertical_4_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_sse2
+
+void vpx_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_sse2
+
+void vpx_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_vertical_8_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_sse2
+
+void vpx_mbpost_proc_across_ip_c(unsigned char *src, int pitch, int rows, int cols,int flimit);
+void vpx_mbpost_proc_across_ip_sse2(unsigned char *src, int pitch, int rows, int cols,int flimit);
+#define vpx_mbpost_proc_across_ip vpx_mbpost_proc_across_ip_sse2
+
+void vpx_mbpost_proc_down_c(unsigned char *dst, int pitch, int rows, int cols,int flimit);
+void vpx_mbpost_proc_down_sse2(unsigned char *dst, int pitch, int rows, int cols,int flimit);
+#define vpx_mbpost_proc_down vpx_mbpost_proc_down_sse2
+
+void vpx_minmax_8x8_c(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
+void vpx_minmax_8x8_sse2(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
+#define vpx_minmax_8x8 vpx_minmax_8x8_sse2
+
+unsigned int vpx_mse16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_mse16x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_mse16x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_mse16x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_mse16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_mse16x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_mse16x8_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_mse16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_mse8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_mse8x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_mse8x16 vpx_mse8x16_sse2
+
+unsigned int vpx_mse8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_mse8x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_mse8x8 vpx_mse8x8_sse2
+
+void vpx_plane_add_noise_c(uint8_t *start, const int8_t *noise, int blackclamp, int whiteclamp, int width, int height, int pitch);
+void vpx_plane_add_noise_sse2(uint8_t *start, const int8_t *noise, int blackclamp, int whiteclamp, int width, int height, int pitch);
+#define vpx_plane_add_noise vpx_plane_add_noise_sse2
+
+void vpx_post_proc_down_and_across_mb_row_c(unsigned char *src, unsigned char *dst, int src_pitch, int dst_pitch, int cols, unsigned char *flimits, int size);
+void vpx_post_proc_down_and_across_mb_row_sse2(unsigned char *src, unsigned char *dst, int src_pitch, int dst_pitch, int cols, unsigned char *flimits, int size);
+#define vpx_post_proc_down_and_across_mb_row vpx_post_proc_down_and_across_mb_row_sse2
+
+void vpx_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vpx_quantize_b)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void vpx_quantize_b_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_32x32_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_32x32_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vpx_quantize_b_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+unsigned int vpx_sad16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad16x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad16x16 vpx_sad16x16_sse2
+
+unsigned int vpx_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad16x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad16x16_avg vpx_sad16x16_avg_sse2
+
+void vpx_sad16x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x3_ssse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x16x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad16x16x4d vpx_sad16x16x4d_sse2
+
+void vpx_sad16x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad16x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad16x32 vpx_sad16x32_sse2
+
+unsigned int vpx_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad16x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad16x32_avg vpx_sad16x32_avg_sse2
+
+void vpx_sad16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad16x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad16x32x4d vpx_sad16x32x4d_sse2
+
+unsigned int vpx_sad16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad16x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad16x8 vpx_sad16x8_sse2
+
+unsigned int vpx_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad16x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad16x8_avg vpx_sad16x8_avg_sse2
+
+void vpx_sad16x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x3_ssse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x8x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad16x8x4d vpx_sad16x8x4d_sse2
+
+void vpx_sad16x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x8x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad32x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x16_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad32x16_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad32x16x4d vpx_sad32x16x4d_sse2
+
+unsigned int vpx_sad32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad32x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad32x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad32x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+
+void vpx_sad32x32x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad32x32x8_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad32x32x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad32x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad32x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad32x64x4d vpx_sad32x64x4d_sse2
+
+unsigned int vpx_sad4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad4x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad4x4 vpx_sad4x4_sse2
+
+unsigned int vpx_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad4x4_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad4x4_avg vpx_sad4x4_avg_sse2
+
+void vpx_sad4x4x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad4x4x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad4x4x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad4x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad4x4x4d vpx_sad4x4x4d_sse2
+
+void vpx_sad4x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad4x4x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad4x4x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad4x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad4x8 vpx_sad4x8_sse2
+
+unsigned int vpx_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad4x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad4x8_avg vpx_sad4x8_avg_sse2
+
+void vpx_sad4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad4x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad4x8x4d vpx_sad4x8x4d_sse2
+
+unsigned int vpx_sad64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad64x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad64x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad64x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad64x32x4d vpx_sad64x32x4d_sse2
+
+unsigned int vpx_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad64x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad64x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad64x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad64x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad64x64x4d_avx512(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad64x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad8x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad8x16 vpx_sad8x16_sse2
+
+unsigned int vpx_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad8x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad8x16_avg vpx_sad8x16_avg_sse2
+
+void vpx_sad8x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x16x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x16x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad8x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad8x16x4d vpx_sad8x16x4d_sse2
+
+void vpx_sad8x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x16x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad8x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad8x4 vpx_sad8x4_sse2
+
+unsigned int vpx_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad8x4_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad8x4_avg vpx_sad8x4_avg_sse2
+
+void vpx_sad8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad8x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad8x4x4d vpx_sad8x4x4d_sse2
+
+unsigned int vpx_sad8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad8x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad8x8 vpx_sad8x8_sse2
+
+unsigned int vpx_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad8x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad8x8_avg vpx_sad8x8_avg_sse2
+
+void vpx_sad8x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x8x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x8x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+void vpx_sad8x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad8x8x4d vpx_sad8x8x4d_sse2
+
+void vpx_sad8x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x8x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x8x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+int vpx_satd_c(const int16_t *coeff, int length);
+int vpx_satd_sse2(const int16_t *coeff, int length);
+int vpx_satd_avx2(const int16_t *coeff, int length);
+RTCD_EXTERN int (*vpx_satd)(const int16_t *coeff, int length);
+
+void vpx_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+void vpx_scaled_2d_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_scaled_2d)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+
+void vpx_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c
+
+void vpx_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c
+
+void vpx_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c
+
+void vpx_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+#define vpx_scaled_horiz vpx_scaled_horiz_c
+
+void vpx_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
+#define vpx_scaled_vert vpx_scaled_vert_c
+
+uint32_t vpx_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x16_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x16_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance16x16)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x32_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x32_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance16x32)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x8_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x8_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance16x8)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x16_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x16_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance32x16)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x32_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x32_avx2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance32x32)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x64_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x64_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance32x64)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x4_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x4_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance4x4)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x8_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x8_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance4x8)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x32_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x32_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance64x32)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x64_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x64_avx2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance64x64)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x16_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x16_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance8x16)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x4_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x4_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance8x4)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x8_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x8_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance8x8)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x16_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x16_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance16x16)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x32_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x32_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance16x32)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x8_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x8_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance16x8)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x16_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x16_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance32x16)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x32_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x32_avx2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance32x32)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x64_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x64_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance32x64)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x4_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x4_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance4x4)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x8_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x8_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance4x8)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x32_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x32_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance64x32)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x64_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x64_avx2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance64x64)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x16_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x16_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance8x16)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x4_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x4_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance8x4)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x8_sse2(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x8_ssse3(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance8x8)(const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+void vpx_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride);
+void vpx_subtract_block_sse2(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride);
+#define vpx_subtract_block vpx_subtract_block_sse2
+
+uint64_t vpx_sum_squares_2d_i16_c(const int16_t *src, int stride, int size);
+uint64_t vpx_sum_squares_2d_i16_sse2(const int16_t *src, int stride, int size);
+#define vpx_sum_squares_2d_i16 vpx_sum_squares_2d_i16_sse2
+
+void vpx_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_sse2
+
+void vpx_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_sse2
+
+void vpx_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_sse2
+
+void vpx_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_sse2
+
+void vpx_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_sse2
+
+void vpx_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_sse2
+
+void vpx_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_sse2
+
+void vpx_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_sse2
+
+unsigned int vpx_variance16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance16x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance16x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x8_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance32x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance32x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance32x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance4x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance4x4 vpx_variance4x4_sse2
+
+unsigned int vpx_variance4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance4x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance4x8 vpx_variance4x8_sse2
+
+unsigned int vpx_variance64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance64x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance64x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance8x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance8x16 vpx_variance8x16_sse2
+
+unsigned int vpx_variance8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance8x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance8x4 vpx_variance8x4_sse2
+
+unsigned int vpx_variance8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance8x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance8x8 vpx_variance8x8_sse2
+
+void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left);
+#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c
+
+int vpx_vector_var_c(const int16_t *ref, const int16_t *src, const int bwl);
+int vpx_vector_var_sse2(const int16_t *ref, const int16_t *src, const int bwl);
+#define vpx_vector_var vpx_vector_var_sse2
+
+void vpx_dsp_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+    int flags = x86_simd_caps();
+
+    (void)flags;
+
+    vpx_convolve8 = vpx_convolve8_sse2;
+    if (flags & HAS_SSSE3) vpx_convolve8 = vpx_convolve8_ssse3;
+    if (flags & HAS_AVX2) vpx_convolve8 = vpx_convolve8_avx2;
+    vpx_convolve8_avg = vpx_convolve8_avg_sse2;
+    if (flags & HAS_SSSE3) vpx_convolve8_avg = vpx_convolve8_avg_ssse3;
+    if (flags & HAS_AVX2) vpx_convolve8_avg = vpx_convolve8_avg_avx2;
+    vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_sse2;
+    if (flags & HAS_SSSE3) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_ssse3;
+    if (flags & HAS_AVX2) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_avx2;
+    vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_sse2;
+    if (flags & HAS_SSSE3) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_ssse3;
+    if (flags & HAS_AVX2) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_avx2;
+    vpx_convolve8_horiz = vpx_convolve8_horiz_sse2;
+    if (flags & HAS_SSSE3) vpx_convolve8_horiz = vpx_convolve8_horiz_ssse3;
+    if (flags & HAS_AVX2) vpx_convolve8_horiz = vpx_convolve8_horiz_avx2;
+    vpx_convolve8_vert = vpx_convolve8_vert_sse2;
+    if (flags & HAS_SSSE3) vpx_convolve8_vert = vpx_convolve8_vert_ssse3;
+    if (flags & HAS_AVX2) vpx_convolve8_vert = vpx_convolve8_vert_avx2;
+    vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_c;
+    if (flags & HAS_SSSE3) vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_ssse3;
+    vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_c;
+    if (flags & HAS_SSSE3) vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_ssse3;
+    vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_c;
+    if (flags & HAS_SSSE3) vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_ssse3;
+    vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_c;
+    if (flags & HAS_SSSE3) vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_ssse3;
+    vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_c;
+    if (flags & HAS_SSSE3) vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_ssse3;
+    vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_c;
+    if (flags & HAS_SSSE3) vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_ssse3;
+    vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_c;
+    if (flags & HAS_SSSE3) vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_ssse3;
+    vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_c;
+    if (flags & HAS_SSSE3) vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_ssse3;
+    vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_c;
+    if (flags & HAS_SSSE3) vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_ssse3;
+    vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_c;
+    if (flags & HAS_SSSE3) vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_ssse3;
+    vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_c;
+    if (flags & HAS_SSSE3) vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_ssse3;
+    vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_c;
+    if (flags & HAS_SSSE3) vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_ssse3;
+    vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_c;
+    if (flags & HAS_SSSE3) vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_ssse3;
+    vpx_fdct32x32 = vpx_fdct32x32_sse2;
+    if (flags & HAS_AVX2) vpx_fdct32x32 = vpx_fdct32x32_avx2;
+    vpx_fdct32x32_rd = vpx_fdct32x32_rd_sse2;
+    if (flags & HAS_AVX2) vpx_fdct32x32_rd = vpx_fdct32x32_rd_avx2;
+    vpx_fdct8x8 = vpx_fdct8x8_sse2;
+    if (flags & HAS_SSSE3) vpx_fdct8x8 = vpx_fdct8x8_ssse3;
+    vpx_get16x16var = vpx_get16x16var_sse2;
+    if (flags & HAS_AVX2) vpx_get16x16var = vpx_get16x16var_avx2;
+    vpx_hadamard_16x16 = vpx_hadamard_16x16_sse2;
+    if (flags & HAS_AVX2) vpx_hadamard_16x16 = vpx_hadamard_16x16_avx2;
+    vpx_hadamard_32x32 = vpx_hadamard_32x32_sse2;
+    if (flags & HAS_AVX2) vpx_hadamard_32x32 = vpx_hadamard_32x32_avx2;
+    vpx_hadamard_8x8 = vpx_hadamard_8x8_sse2;
+    if (flags & HAS_SSSE3) vpx_hadamard_8x8 = vpx_hadamard_8x8_ssse3;
+    vpx_idct32x32_135_add = vpx_idct32x32_135_add_sse2;
+    if (flags & HAS_SSSE3) vpx_idct32x32_135_add = vpx_idct32x32_135_add_ssse3;
+    vpx_idct32x32_34_add = vpx_idct32x32_34_add_sse2;
+    if (flags & HAS_SSSE3) vpx_idct32x32_34_add = vpx_idct32x32_34_add_ssse3;
+    vpx_idct8x8_12_add = vpx_idct8x8_12_add_sse2;
+    if (flags & HAS_SSSE3) vpx_idct8x8_12_add = vpx_idct8x8_12_add_ssse3;
+    vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_sse2;
+    if (flags & HAS_AVX2) vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_avx2;
+    vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_sse2;
+    if (flags & HAS_AVX2) vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_avx2;
+    vpx_mse16x16 = vpx_mse16x16_sse2;
+    if (flags & HAS_AVX2) vpx_mse16x16 = vpx_mse16x16_avx2;
+    vpx_mse16x8 = vpx_mse16x8_sse2;
+    if (flags & HAS_AVX2) vpx_mse16x8 = vpx_mse16x8_avx2;
+    vpx_quantize_b = vpx_quantize_b_sse2;
+    if (flags & HAS_SSSE3) vpx_quantize_b = vpx_quantize_b_ssse3;
+    if (flags & HAS_AVX) vpx_quantize_b = vpx_quantize_b_avx;
+    vpx_quantize_b_32x32 = vpx_quantize_b_32x32_c;
+    if (flags & HAS_SSSE3) vpx_quantize_b_32x32 = vpx_quantize_b_32x32_ssse3;
+    if (flags & HAS_AVX) vpx_quantize_b_32x32 = vpx_quantize_b_32x32_avx;
+    vpx_sad16x16x3 = vpx_sad16x16x3_c;
+    if (flags & HAS_SSE3) vpx_sad16x16x3 = vpx_sad16x16x3_sse3;
+    if (flags & HAS_SSSE3) vpx_sad16x16x3 = vpx_sad16x16x3_ssse3;
+    vpx_sad16x16x8 = vpx_sad16x16x8_c;
+    if (flags & HAS_SSE4_1) vpx_sad16x16x8 = vpx_sad16x16x8_sse4_1;
+    vpx_sad16x8x3 = vpx_sad16x8x3_c;
+    if (flags & HAS_SSE3) vpx_sad16x8x3 = vpx_sad16x8x3_sse3;
+    if (flags & HAS_SSSE3) vpx_sad16x8x3 = vpx_sad16x8x3_ssse3;
+    vpx_sad16x8x8 = vpx_sad16x8x8_c;
+    if (flags & HAS_SSE4_1) vpx_sad16x8x8 = vpx_sad16x8x8_sse4_1;
+    vpx_sad32x16 = vpx_sad32x16_sse2;
+    if (flags & HAS_AVX2) vpx_sad32x16 = vpx_sad32x16_avx2;
+    vpx_sad32x16_avg = vpx_sad32x16_avg_sse2;
+    if (flags & HAS_AVX2) vpx_sad32x16_avg = vpx_sad32x16_avg_avx2;
+    vpx_sad32x32 = vpx_sad32x32_sse2;
+    if (flags & HAS_AVX2) vpx_sad32x32 = vpx_sad32x32_avx2;
+    vpx_sad32x32_avg = vpx_sad32x32_avg_sse2;
+    if (flags & HAS_AVX2) vpx_sad32x32_avg = vpx_sad32x32_avg_avx2;
+    vpx_sad32x32x4d = vpx_sad32x32x4d_sse2;
+    if (flags & HAS_AVX2) vpx_sad32x32x4d = vpx_sad32x32x4d_avx2;
+    vpx_sad32x32x8 = vpx_sad32x32x8_c;
+    if (flags & HAS_AVX2) vpx_sad32x32x8 = vpx_sad32x32x8_avx2;
+    vpx_sad32x64 = vpx_sad32x64_sse2;
+    if (flags & HAS_AVX2) vpx_sad32x64 = vpx_sad32x64_avx2;
+    vpx_sad32x64_avg = vpx_sad32x64_avg_sse2;
+    if (flags & HAS_AVX2) vpx_sad32x64_avg = vpx_sad32x64_avg_avx2;
+    vpx_sad4x4x3 = vpx_sad4x4x3_c;
+    if (flags & HAS_SSE3) vpx_sad4x4x3 = vpx_sad4x4x3_sse3;
+    vpx_sad4x4x8 = vpx_sad4x4x8_c;
+    if (flags & HAS_SSE4_1) vpx_sad4x4x8 = vpx_sad4x4x8_sse4_1;
+    vpx_sad64x32 = vpx_sad64x32_sse2;
+    if (flags & HAS_AVX2) vpx_sad64x32 = vpx_sad64x32_avx2;
+    vpx_sad64x32_avg = vpx_sad64x32_avg_sse2;
+    if (flags & HAS_AVX2) vpx_sad64x32_avg = vpx_sad64x32_avg_avx2;
+    vpx_sad64x64 = vpx_sad64x64_sse2;
+    if (flags & HAS_AVX2) vpx_sad64x64 = vpx_sad64x64_avx2;
+    vpx_sad64x64_avg = vpx_sad64x64_avg_sse2;
+    if (flags & HAS_AVX2) vpx_sad64x64_avg = vpx_sad64x64_avg_avx2;
+    vpx_sad64x64x4d = vpx_sad64x64x4d_sse2;
+    if (flags & HAS_AVX2) vpx_sad64x64x4d = vpx_sad64x64x4d_avx2;
+    if (flags & HAS_AVX512) vpx_sad64x64x4d = vpx_sad64x64x4d_avx512;
+    vpx_sad8x16x3 = vpx_sad8x16x3_c;
+    if (flags & HAS_SSE3) vpx_sad8x16x3 = vpx_sad8x16x3_sse3;
+    vpx_sad8x16x8 = vpx_sad8x16x8_c;
+    if (flags & HAS_SSE4_1) vpx_sad8x16x8 = vpx_sad8x16x8_sse4_1;
+    vpx_sad8x8x3 = vpx_sad8x8x3_c;
+    if (flags & HAS_SSE3) vpx_sad8x8x3 = vpx_sad8x8x3_sse3;
+    vpx_sad8x8x8 = vpx_sad8x8x8_c;
+    if (flags & HAS_SSE4_1) vpx_sad8x8x8 = vpx_sad8x8x8_sse4_1;
+    vpx_satd = vpx_satd_sse2;
+    if (flags & HAS_AVX2) vpx_satd = vpx_satd_avx2;
+    vpx_scaled_2d = vpx_scaled_2d_c;
+    if (flags & HAS_SSSE3) vpx_scaled_2d = vpx_scaled_2d_ssse3;
+    vpx_sub_pixel_avg_variance16x16 = vpx_sub_pixel_avg_variance16x16_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x16 = vpx_sub_pixel_avg_variance16x16_ssse3;
+    vpx_sub_pixel_avg_variance16x32 = vpx_sub_pixel_avg_variance16x32_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x32 = vpx_sub_pixel_avg_variance16x32_ssse3;
+    vpx_sub_pixel_avg_variance16x8 = vpx_sub_pixel_avg_variance16x8_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x8 = vpx_sub_pixel_avg_variance16x8_ssse3;
+    vpx_sub_pixel_avg_variance32x16 = vpx_sub_pixel_avg_variance32x16_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x16 = vpx_sub_pixel_avg_variance32x16_ssse3;
+    vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_ssse3;
+    if (flags & HAS_AVX2) vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_avx2;
+    vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_ssse3;
+    vpx_sub_pixel_avg_variance4x4 = vpx_sub_pixel_avg_variance4x4_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance4x4 = vpx_sub_pixel_avg_variance4x4_ssse3;
+    vpx_sub_pixel_avg_variance4x8 = vpx_sub_pixel_avg_variance4x8_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance4x8 = vpx_sub_pixel_avg_variance4x8_ssse3;
+    vpx_sub_pixel_avg_variance64x32 = vpx_sub_pixel_avg_variance64x32_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance64x32 = vpx_sub_pixel_avg_variance64x32_ssse3;
+    vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_ssse3;
+    if (flags & HAS_AVX2) vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_avx2;
+    vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_ssse3;
+    vpx_sub_pixel_avg_variance8x4 = vpx_sub_pixel_avg_variance8x4_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x4 = vpx_sub_pixel_avg_variance8x4_ssse3;
+    vpx_sub_pixel_avg_variance8x8 = vpx_sub_pixel_avg_variance8x8_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x8 = vpx_sub_pixel_avg_variance8x8_ssse3;
+    vpx_sub_pixel_variance16x16 = vpx_sub_pixel_variance16x16_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x16 = vpx_sub_pixel_variance16x16_ssse3;
+    vpx_sub_pixel_variance16x32 = vpx_sub_pixel_variance16x32_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x32 = vpx_sub_pixel_variance16x32_ssse3;
+    vpx_sub_pixel_variance16x8 = vpx_sub_pixel_variance16x8_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x8 = vpx_sub_pixel_variance16x8_ssse3;
+    vpx_sub_pixel_variance32x16 = vpx_sub_pixel_variance32x16_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x16 = vpx_sub_pixel_variance32x16_ssse3;
+    vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_ssse3;
+    if (flags & HAS_AVX2) vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_avx2;
+    vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_ssse3;
+    vpx_sub_pixel_variance4x4 = vpx_sub_pixel_variance4x4_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance4x4 = vpx_sub_pixel_variance4x4_ssse3;
+    vpx_sub_pixel_variance4x8 = vpx_sub_pixel_variance4x8_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance4x8 = vpx_sub_pixel_variance4x8_ssse3;
+    vpx_sub_pixel_variance64x32 = vpx_sub_pixel_variance64x32_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance64x32 = vpx_sub_pixel_variance64x32_ssse3;
+    vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_ssse3;
+    if (flags & HAS_AVX2) vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_avx2;
+    vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_ssse3;
+    vpx_sub_pixel_variance8x4 = vpx_sub_pixel_variance8x4_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x4 = vpx_sub_pixel_variance8x4_ssse3;
+    vpx_sub_pixel_variance8x8 = vpx_sub_pixel_variance8x8_sse2;
+    if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x8 = vpx_sub_pixel_variance8x8_ssse3;
+    vpx_variance16x16 = vpx_variance16x16_sse2;
+    if (flags & HAS_AVX2) vpx_variance16x16 = vpx_variance16x16_avx2;
+    vpx_variance16x32 = vpx_variance16x32_sse2;
+    if (flags & HAS_AVX2) vpx_variance16x32 = vpx_variance16x32_avx2;
+    vpx_variance16x8 = vpx_variance16x8_sse2;
+    if (flags & HAS_AVX2) vpx_variance16x8 = vpx_variance16x8_avx2;
+    vpx_variance32x16 = vpx_variance32x16_sse2;
+    if (flags & HAS_AVX2) vpx_variance32x16 = vpx_variance32x16_avx2;
+    vpx_variance32x32 = vpx_variance32x32_sse2;
+    if (flags & HAS_AVX2) vpx_variance32x32 = vpx_variance32x32_avx2;
+    vpx_variance32x64 = vpx_variance32x64_sse2;
+    if (flags & HAS_AVX2) vpx_variance32x64 = vpx_variance32x64_avx2;
+    vpx_variance64x32 = vpx_variance64x32_sse2;
+    if (flags & HAS_AVX2) vpx_variance64x32 = vpx_variance64x32_avx2;
+    vpx_variance64x64 = vpx_variance64x64_sse2;
+    if (flags & HAS_AVX2) vpx_variance64x64 = vpx_variance64x64_avx2;
+}
+#endif
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
+#endif
diff --git a/extra/libvpx/files/vpx_scale_rtcd.h b/extra/libvpx/files/vpx_scale_rtcd.h
new file mode 100644 (file)
index 0000000..5f09104
--- /dev/null
@@ -0,0 +1,73 @@
+// This file is generated. Do not edit.
+#ifndef VPX_SCALE_RTCD_H_
+#define VPX_SCALE_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void vp8_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
+
+void vp8_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
+
+void vp8_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
+
+void vp8_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
+
+void vp8_vertical_band_2_1_scale_i_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
+
+void vp8_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
+
+void vp8_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
+
+void vp8_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
+#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
+
+void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf);
+#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
+
+void vpx_extend_frame_borders_c(struct yv12_buffer_config *ybf);
+#define vpx_extend_frame_borders vpx_extend_frame_borders_c
+
+void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf);
+#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
+
+void vpx_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
+#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
+
+void vpx_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
+#define vpx_yv12_copy_y vpx_yv12_copy_y_c
+
+void vpx_scale_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+    int flags = x86_simd_caps();
+
+    (void)flags;
+
+}
+#endif
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
+#endif
diff --git a/extra/libvpx/patches/fix-busybox-diff.patch b/extra/libvpx/patches/fix-busybox-diff.patch
new file mode 100644 (file)
index 0000000..fa93b0a
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/configure b/configure
+index e5a74c6..11f660d 100755
+--- a/configure
++++ b/configure
+@@ -170,7 +170,7 @@ for t in ${all_targets}; do
+     [ -f "${source_path}/${t}.mk" ] && enable_feature ${t}
+ done
+-if ! diff --version >/dev/null; then
++if ! command -v diff >/dev/null; then
+   die "diff missing: Try installing diffutils via your package manager."
+ fi
diff --git a/extra/libvpx/sources b/extra/libvpx/sources
new file mode 100644 (file)
index 0000000..3c8a026
--- /dev/null
@@ -0,0 +1,6 @@
+https://github.com/webmproject/libvpx/archive/v1.10.0.tar.gz
+patches/fix-busybox-diff.patch
+files/vp9_rtcd.h
+files/vp8_rtcd.h
+files/vpx_scale_rtcd.h
+files/vpx_dsp_rtcd.h
diff --git a/extra/libvpx/version b/extra/libvpx/version
new file mode 100644 (file)
index 0000000..ac83b38
--- /dev/null
@@ -0,0 +1 @@
+1.10.0 1
diff --git a/extra/libwebp/build b/extra/libwebp/build
new file mode 100755 (executable)
index 0000000..9b42927
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-static \
+    --enable-libwebpmux \
+    --enable-libwebpdemux \
+    --enable-libwebpdecoder
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libwebp/checksums b/extra/libwebp/checksums
new file mode 100644 (file)
index 0000000..a211abf
--- /dev/null
@@ -0,0 +1 @@
+2fc8bbde9f97f2ab403c0224fb9ca62b2e6852cbc519e91ceaa7c153ffd88a0c
diff --git a/extra/libwebp/depends b/extra/libwebp/depends
new file mode 100644 (file)
index 0000000..55a2fa3
--- /dev/null
@@ -0,0 +1,2 @@
+libjpeg-turbo
+libpng
diff --git a/extra/libwebp/sources b/extra/libwebp/sources
new file mode 100644 (file)
index 0000000..4ed0cd5
--- /dev/null
@@ -0,0 +1 @@
+http://downloads.webmproject.org/releases/webp/libwebp-1.2.0.tar.gz
diff --git a/extra/libwebp/version b/extra/libwebp/version
new file mode 100644 (file)
index 0000000..8b9a47f
--- /dev/null
@@ -0,0 +1 @@
+1.2.0 1
diff --git a/extra/libxml2/build b/extra/libxml2/build
new file mode 100755 (executable)
index 0000000..a568fbd
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --with-threads \
+    --with-history \
+    --without-python \
+    --without-icu
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libxml2/checksums b/extra/libxml2/checksums
new file mode 100644 (file)
index 0000000..bb866a4
--- /dev/null
@@ -0,0 +1 @@
+c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92
diff --git a/extra/libxml2/depends b/extra/libxml2/depends
new file mode 100644 (file)
index 0000000..8c24938
--- /dev/null
@@ -0,0 +1,2 @@
+xz
+zlib
diff --git a/extra/libxml2/sources b/extra/libxml2/sources
new file mode 100644 (file)
index 0000000..6205da8
--- /dev/null
@@ -0,0 +1 @@
+ftp://xmlsoft.org/libxml2/libxml2-2.9.12.tar.gz
diff --git a/extra/libxml2/version b/extra/libxml2/version
new file mode 100644 (file)
index 0000000..477e5f7
--- /dev/null
@@ -0,0 +1 @@
+2.9.12 1
diff --git a/extra/libxslt/build b/extra/libxslt/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libxslt/checksums b/extra/libxslt/checksums
new file mode 100644 (file)
index 0000000..e648f35
--- /dev/null
@@ -0,0 +1 @@
+98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f
diff --git a/extra/libxslt/depends b/extra/libxslt/depends
new file mode 100644 (file)
index 0000000..e62d874
--- /dev/null
@@ -0,0 +1,2 @@
+libxml2
+pkgconf make
diff --git a/extra/libxslt/sources b/extra/libxslt/sources
new file mode 100644 (file)
index 0000000..a25df5f
--- /dev/null
@@ -0,0 +1 @@
+https://fossies.org/linux/www/libxslt-1.1.34.tar.gz
diff --git a/extra/libxslt/version b/extra/libxslt/version
new file mode 100644 (file)
index 0000000..6364ddb
--- /dev/null
@@ -0,0 +1 @@
+1.1.34 1 
diff --git a/extra/lpeg/build b/extra/lpeg/build
new file mode 100755 (executable)
index 0000000..cc1a915
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+patch < build-static-lib.patch
+
+make CC="${CC:-cc}"
+
+mkdir -p "$1/usr/lib/"
+install -Dm644 lpeg.a "$1/usr/lib/liblpeg.a"
diff --git a/extra/lpeg/checksums b/extra/lpeg/checksums
new file mode 100644 (file)
index 0000000..5705769
--- /dev/null
@@ -0,0 +1,2 @@
+48d66576051b6c78388faad09b70493093264588fcd0f258ddaab1cdd4a15ffe
+b8abac8ce00905470d79fd0479011c057f7d1ca5a9ad3becea0723821a9efde0
diff --git a/extra/lpeg/depends b/extra/lpeg/depends
new file mode 100644 (file)
index 0000000..57e569c
--- /dev/null
@@ -0,0 +1 @@
+lua make
diff --git a/extra/lpeg/patches/build-static-lib.patch b/extra/lpeg/patches/build-static-lib.patch
new file mode 100644 (file)
index 0000000..bdf2566
--- /dev/null
@@ -0,0 +1,29 @@
+--- a/makefile
++++ b/makefile
+@@ -24,12 +24,15 @@
+ CFLAGS = $(CWARNS) $(COPT) -std=c99 -I$(LUADIR) -fPIC
+ CC = gcc
++AR = ar
++RANLIB = ranlib
+ FILES = lpvm.o lpcap.o lptree.o lpcode.o lpprint.o
+ # For Linux
+ linux:
+       $(MAKE) lpeg.so "DLLFLAGS = -shared -fPIC"
++      $(MAKE) lpeg.a
+ # For Mac OS
+ macosx:
+@@ -37,6 +40,10 @@
+ lpeg.so: $(FILES)
+       env $(CC) $(DLLFLAGS) $(FILES) -o lpeg.so
++
++lpeg.a: $(FILES)
++      env $(AR) rc lpeg.a $(FILES)
++      env $(RANLIB) lpeg.a
+ $(FILES): makefile
diff --git a/extra/lpeg/sources b/extra/lpeg/sources
new file mode 100644 (file)
index 0000000..2fbd2f4
--- /dev/null
@@ -0,0 +1,2 @@
+http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.2.tar.gz
+patches/build-static-lib.patch
diff --git a/extra/lpeg/version b/extra/lpeg/version
new file mode 100644 (file)
index 0000000..a58bd8b
--- /dev/null
@@ -0,0 +1 @@
+1.0.2 1 
diff --git a/extra/lua/build b/extra/lua/build
new file mode 100755 (executable)
index 0000000..a4c24d0
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+make MYCFLAGS="$CFLAGS -fPIC" MYLDFLAGS="$LDFLAGS" CC="$CC" posix
+
+make INSTALL_TOP="$1/usr" INSTALL_MAN="$1/usr/share/man/man1" \
+                INSTALL_DATA="cp -d" install
+
+install -Dm 644 lua.pc "$1/usr/lib/pkgconfig/lua.pc"
diff --git a/extra/lua/checksums b/extra/lua/checksums
new file mode 100644 (file)
index 0000000..a39a5fe
--- /dev/null
@@ -0,0 +1,2 @@
+b9e2e4aad6789b3b63a056d442f7b39f0ecfca3ae0f1fc0ae4e9614401b69f4b
+aae37b7805bbe73d7fd296c4c06762e994d342ef0ae761553ee75e6e8039de46
diff --git a/extra/lua/files/lua.pc b/extra/lua/files/lua.pc
new file mode 100644 (file)
index 0000000..8d2de2e
--- /dev/null
@@ -0,0 +1,20 @@
+V=5.2
+R=5.2.4
+
+prefix=/usr
+INSTALL_BIN=${prefix}/bin
+INSTALL_INC=${prefix}/include
+INSTALL_LIB=${prefix}/lib
+INSTALL_MAN=${prefix}/man/man1
+INSTALL_LMOD=${prefix}/share/lua/${V}
+INSTALL_CMOD=${prefix}/lib/lua/${V}
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${R}
+Requires: 
+Libs: -L${libdir} -llua -lm
+Cflags: -I${includedir}
diff --git a/extra/lua/sources b/extra/lua/sources
new file mode 100644 (file)
index 0000000..ad64a52
--- /dev/null
@@ -0,0 +1,2 @@
+https://www.lua.org/ftp/lua-5.2.4.tar.gz
+files/lua.pc
diff --git a/extra/lua/version b/extra/lua/version
new file mode 100644 (file)
index 0000000..7560c29
--- /dev/null
@@ -0,0 +1 @@
+5.2.4 1 
diff --git a/extra/lzo/build b/extra/lzo/build
new file mode 100755 (executable)
index 0000000..c647b8e
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make DESTDIR="$1" install
diff --git a/extra/lzo/checksums b/extra/lzo/checksums
new file mode 100644 (file)
index 0000000..08b1f8d
--- /dev/null
@@ -0,0 +1 @@
+c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072  lzo-2.10.tar.gz
diff --git a/extra/lzo/sources b/extra/lzo/sources
new file mode 100644 (file)
index 0000000..f28e8c5
--- /dev/null
@@ -0,0 +1 @@
+http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
diff --git a/extra/lzo/version b/extra/lzo/version
new file mode 100644 (file)
index 0000000..c815e91
--- /dev/null
@@ -0,0 +1 @@
+2.10 1  
diff --git a/extra/m4/build b/extra/m4/build
new file mode 100755 (executable)
index 0000000..206a476
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+export CFLAGS="$CFLAGS -static"
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/m4/checksums b/extra/m4/checksums
new file mode 100644 (file)
index 0000000..e413a19
--- /dev/null
@@ -0,0 +1 @@
+63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96
diff --git a/extra/m4/sources b/extra/m4/sources
new file mode 100644 (file)
index 0000000..bde2eff
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz
diff --git a/extra/m4/version b/extra/m4/version
new file mode 100644 (file)
index 0000000..b97669c
--- /dev/null
@@ -0,0 +1 @@
+1.4.19 1
diff --git a/extra/mesa/build b/extra/mesa/build
new file mode 100755 (executable)
index 0000000..216a067
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh -e
+
+# Install python-mako which is solely needed for mesa
+# and thus contained in this build.
+{
+    cd mako
+
+    python3 setup.py build
+    python3 setup.py install \
+        --prefix=/usr \
+        --root="$PWD/dist"
+
+    # Use a glob to avoid having to figure out the Python
+    # version for the path below.
+    cd dist/usr/lib/python*/site-packages
+
+    # Set the PYTHONPATH so python knows where to find mako.
+    # The one liner simply appends the existing path and
+    # handles the case where an unset PYTHONPATH breaks
+    # python as it will only contain our new addition.
+    PYTHONPATH=$PWD:$(python -c "import sys; print(':'.join(sys.path))")
+
+    cd -; cd ..
+}
+
+export PYTHONPATH
+export DESTDIR="$1"
+export CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT"
+
+# Fix issues with musl and firefox.
+# https://bugs.freedesktop.org/show_bug.cgi?id=35268
+# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2
+sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build
+
+python3 bin/git_sha1_gen.py --output include/git_sha1.h
+
+meson \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --mandir=/usr/share/man \
+    --localstatedir=/var \
+    --buildtype=release \
+    -Dplatforms=x11 \
+    -Dzstd=enabled \
+    . output
+
+ninja -C output
+ninja -C output install
+
diff --git a/extra/mesa/checksums b/extra/mesa/checksums
new file mode 100644 (file)
index 0000000..5b20e94
--- /dev/null
@@ -0,0 +1,2 @@
+1f177f44098164b65731c5ded4c928fd58b14f6c9d2087aa0e37bc79bf79e90b
+17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab
diff --git a/extra/mesa/depends b/extra/mesa/depends
new file mode 100644 (file)
index 0000000..d4eaa28
--- /dev/null
@@ -0,0 +1,22 @@
+byacc        make
+expat
+flex         make
+libX11
+libXdamage
+libXext
+libXrandr
+libXrender
+libXxf86vm
+libdrm
+libelf
+libxcb
+libxshmfence
+linux-headers make
+llvm
+m4            make
+meson         make
+pkgconf       make
+python        make
+xorgproto
+zlib
+zstd
diff --git a/extra/mesa/sources b/extra/mesa/sources
new file mode 100644 (file)
index 0000000..8a7013f
--- /dev/null
@@ -0,0 +1,2 @@
+https://archive.mesa3d.org/mesa-21.1.4.tar.xz
+https://files.pythonhosted.org/packages/source/M/Mako/Mako-1.1.4.tar.gz mako
diff --git a/extra/mesa/version b/extra/mesa/version
new file mode 100644 (file)
index 0000000..b115689
--- /dev/null
@@ -0,0 +1 @@
+21.1.4 1
diff --git a/extra/meson/build b/extra/meson/build
new file mode 100755 (executable)
index 0000000..366c544
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+python setup.py build
+python setup.py install \
+    --root="$1" \
+    --optimize=1 \
+    --skip-build
diff --git a/extra/meson/checksums b/extra/meson/checksums
new file mode 100644 (file)
index 0000000..953fc60
--- /dev/null
@@ -0,0 +1 @@
+78e0f553dd3bc632d5f96ab943b1bbccb599c2c84ff27c5fb7f7fff9c8a3f6b4
diff --git a/extra/meson/depends b/extra/meson/depends
new file mode 100644 (file)
index 0000000..35f0809
--- /dev/null
@@ -0,0 +1,2 @@
+python
+samurai
diff --git a/extra/meson/sources b/extra/meson/sources
new file mode 100644 (file)
index 0000000..03d10c5
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/mesonbuild/meson/archive/0.58.1.tar.gz
diff --git a/extra/meson/version b/extra/meson/version
new file mode 100644 (file)
index 0000000..c45a1cb
--- /dev/null
@@ -0,0 +1 @@
+0.58.1 1
diff --git a/extra/mini-xdg-utils/build b/extra/mini-xdg-utils/build
new file mode 100755 (executable)
index 0000000..3f7e02c
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/sh -e
+
+mkdir -p "$1/usr/bin/" "$1/usr/share/xdg"
+install -Dm644 scripts/xdg-utils-common.in "$1/usr/share/xdg/common"
+
+for i in xdg-open xdg-mime; do
+    echo "source /usr/share/xdg/common" > "$1/usr/bin/$i"
+    cat scripts/$i.in >> "$1/usr/bin/$i"
+    chmod +x "$1/usr/bin/$i"
+done
diff --git a/extra/mini-xdg-utils/checksums b/extra/mini-xdg-utils/checksums
new file mode 100644 (file)
index 0000000..213c2e7
--- /dev/null
@@ -0,0 +1 @@
+d798b08af8a8e2063ddde6c9fa3398ca81484f27dec642c5627ffcaa0d4051d9
diff --git a/extra/mini-xdg-utils/sources b/extra/mini-xdg-utils/sources
new file mode 100644 (file)
index 0000000..a749ac2
--- /dev/null
@@ -0,0 +1 @@
+http://portland.freedesktop.org/download/xdg-utils-1.1.3.tar.gz
diff --git a/extra/mini-xdg-utils/version b/extra/mini-xdg-utils/version
new file mode 100644 (file)
index 0000000..035474a
--- /dev/null
@@ -0,0 +1 @@
+1.1.3 1
diff --git a/extra/motif/build b/extra/motif/build
new file mode 100755 (executable)
index 0000000..eb98e92
--- /dev/null
@@ -0,0 +1,6 @@
+#!/usr/bin/sh -e
+
+./configure --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/motif/checksums b/extra/motif/checksums
new file mode 100644 (file)
index 0000000..a9c9355
--- /dev/null
@@ -0,0 +1 @@
+859b723666eeac7df018209d66045c9853b50b4218cecadb794e2359619ebce7
diff --git a/extra/motif/depends b/extra/motif/depends
new file mode 100644 (file)
index 0000000..1903bba
--- /dev/null
@@ -0,0 +1 @@
+libX11
diff --git a/extra/motif/sources b/extra/motif/sources
new file mode 100644 (file)
index 0000000..905a8c9
--- /dev/null
@@ -0,0 +1 @@
+https://newcontinuum.dl.sourceforge.net/project/motif/Motif%202.3.8%20Source%20Code/motif-2.3.8.tar.gz
diff --git a/extra/motif/version b/extra/motif/version
new file mode 100644 (file)
index 0000000..db07b3d
--- /dev/null
@@ -0,0 +1 @@
+2.3.8 1
diff --git a/extra/mpv/build b/extra/mpv/build
new file mode 100755 (executable)
index 0000000..d38ce4d
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+ln -s waf-2.0.18 waf
+
+python waf configure \
+    --prefix=/usr \
+    --mandir=/usr/share/man \
+    --confdir=/etc/mpv \
+    --enable-alsa \
+    --enable-lua \
+    --lua=52
+
+python waf build
+python waf install --destdir="$1"
diff --git a/extra/mpv/checksums b/extra/mpv/checksums
new file mode 100644 (file)
index 0000000..ba4d1cf
--- /dev/null
@@ -0,0 +1,2 @@
+100a116b9f23bdcda3a596e9f26be3a69f166a4f1d00910d1789b6571c46f3a9
+2e0cf83a63843da127610420cef1d3126f1187d8e572b6b3a28052fc2250d4bf
diff --git a/extra/mpv/depends b/extra/mpv/depends
new file mode 100644 (file)
index 0000000..905deac
--- /dev/null
@@ -0,0 +1,12 @@
+alsa-lib
+ffmpeg
+freetype-harfbuzz
+libXScrnSaver
+libXinerama
+libXrandr
+libass
+lua
+mesa
+pkgconf make
+python  make
+youtube-dl
diff --git a/extra/mpv/sources b/extra/mpv/sources
new file mode 100644 (file)
index 0000000..0c3bd28
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/mpv-player/mpv/archive/v0.33.1.tar.gz
+https://waf.io/waf-2.0.18
diff --git a/extra/mpv/version b/extra/mpv/version
new file mode 100644 (file)
index 0000000..472281f
--- /dev/null
@@ -0,0 +1 @@
+0.33.1 1
diff --git a/extra/mtdev/build b/extra/mtdev/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/mtdev/checksums b/extra/mtdev/checksums
new file mode 100644 (file)
index 0000000..784a687
--- /dev/null
@@ -0,0 +1 @@
+15d7b28da8ac71d8bc8c9287c2045fd174267bc740bec10cfda332dc1204e0e0  mtdev-1.1.6.tar.bz2
diff --git a/extra/mtdev/depends b/extra/mtdev/depends
new file mode 100644 (file)
index 0000000..1f97bc3
--- /dev/null
@@ -0,0 +1 @@
+linux-headers make
diff --git a/extra/mtdev/sources b/extra/mtdev/sources
new file mode 100644 (file)
index 0000000..d322c9b
--- /dev/null
@@ -0,0 +1 @@
+https://bitmath.org/code/mtdev/mtdev-1.1.6.tar.bz2
diff --git a/extra/mtdev/version b/extra/mtdev/version
new file mode 100644 (file)
index 0000000..e17b92d
--- /dev/null
@@ -0,0 +1 @@
+1.1.6 1
index 3db8e44f465c0fcccb3a278c4492fdbe97342206..2fa1111f57a556fdbf0a1da572d1840910463580 100644 (file)
@@ -1 +1 @@
-1.4.15 2
+1.4.15 1
diff --git a/extra/mutt/build b/extra/mutt/build
deleted file mode 100755 (executable)
index bf755b7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh -e
-
-./configure \
-    --prefix=/usr \
-    --sysconfdir=/etc \
-    --enable-smtp \
-    --with-ssl
-
-make
-make DESTDIR="$1" install
-
-rm -f "$1/etc/mime.types" "$1/etc/Mutt*"
diff --git a/extra/mutt/checksums b/extra/mutt/checksums
deleted file mode 100644 (file)
index 9468631..0000000
+++ /dev/null
@@ -1 +0,0 @@
-80835bbcce920bccf4fc99676eda9e83f03a929b4022eada931d721ede330d37
diff --git a/extra/mutt/depends b/extra/mutt/depends
deleted file mode 100644 (file)
index 0a64713..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-ncurses
-perl make
-zlib
diff --git a/extra/mutt/sources b/extra/mutt/sources
deleted file mode 100644 (file)
index e850b21..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://bitbucket.org/mutt/mutt/downloads/mutt-2.1.0.tar.gz
diff --git a/extra/mutt/version b/extra/mutt/version
deleted file mode 100644 (file)
index 628fcde..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2.1.0 2
diff --git a/extra/nasm/build b/extra/nasm/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/nasm/checksums b/extra/nasm/checksums
new file mode 100644 (file)
index 0000000..b3f2c66
--- /dev/null
@@ -0,0 +1 @@
+3caf6729c1073bf96629b57cee31eeb54f4f8129b01902c73428836550b30a3f
diff --git a/extra/nasm/sources b/extra/nasm/sources
new file mode 100644 (file)
index 0000000..8f32899
--- /dev/null
@@ -0,0 +1 @@
+https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz
diff --git a/extra/nasm/version b/extra/nasm/version
new file mode 100644 (file)
index 0000000..97b3c2d
--- /dev/null
@@ -0,0 +1 @@
+2.15.05 1
diff --git a/extra/ncdu/build b/extra/ncdu/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/ncdu/checksums b/extra/ncdu/checksums
new file mode 100644 (file)
index 0000000..6d64fe7
--- /dev/null
@@ -0,0 +1 @@
+2b915752a183fae014b5e5b1f0a135b4b408de7488c716e325217c2513980fd4
diff --git a/extra/ncdu/depends b/extra/ncdu/depends
new file mode 100644 (file)
index 0000000..6a470ff
--- /dev/null
@@ -0,0 +1 @@
+ncurses
diff --git a/extra/ncdu/sources b/extra/ncdu/sources
new file mode 100644 (file)
index 0000000..6da91c3
--- /dev/null
@@ -0,0 +1 @@
+https://dev.yorhel.nl/download/ncdu-1.16.tar.gz
diff --git a/extra/ncdu/version b/extra/ncdu/version
new file mode 100644 (file)
index 0000000..d1d913e
--- /dev/null
@@ -0,0 +1 @@
+1.16 1
diff --git a/extra/nettle/build b/extra/nettle/build
new file mode 100755 (executable)
index 0000000..32a7795
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-shared \
+    --enable-static \
+    --enable-mini-gmp \
+    --disable-documentation
+
+make
+make DESTDIR="$1" install
diff --git a/extra/nettle/checksums b/extra/nettle/checksums
new file mode 100644 (file)
index 0000000..fc61251
--- /dev/null
@@ -0,0 +1 @@
+661f5eb03f048a3b924c3a8ad2515d4068e40f67e774e8a26827658007e3bcf0
diff --git a/extra/nettle/sources b/extra/nettle/sources
new file mode 100644 (file)
index 0000000..67ee87d
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/nettle/nettle-3.7.3.tar.gz
diff --git a/extra/nettle/version b/extra/nettle/version
new file mode 100644 (file)
index 0000000..3f0b66c
--- /dev/null
@@ -0,0 +1 @@
+3.7.3 1
diff --git a/extra/openconnect/depends b/extra/openconnect/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/extra/openjpeg/build b/extra/openjpeg/build
new file mode 100755 (executable)
index 0000000..5332ac4
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+cmake -B build \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+    -DCMAKE_SHARED_LIBS=True \
+    -DCMAKE_BUILD_TYPE=Release
+
+cmake --build build
+cmake --install build
diff --git a/extra/openjpeg/checksums b/extra/openjpeg/checksums
new file mode 100644 (file)
index 0000000..0c8061d
--- /dev/null
@@ -0,0 +1 @@
+8702ba68b442657f11aaeb2b338443ca8d5fb95b0d845757968a7be31ef7f16d
diff --git a/extra/openjpeg/depends b/extra/openjpeg/depends
new file mode 100644 (file)
index 0000000..3ac7c53
--- /dev/null
@@ -0,0 +1,5 @@
+cmake make
+lcms
+libpng
+tiff
+zlib
diff --git a/extra/openjpeg/sources b/extra/openjpeg/sources
new file mode 100644 (file)
index 0000000..027f57e
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/uclouvain/openjpeg/archive/v2.4.0.tar.gz
diff --git a/extra/openjpeg/version b/extra/openjpeg/version
new file mode 100644 (file)
index 0000000..36c97d9
--- /dev/null
@@ -0,0 +1 @@
+2.4.0 1 
diff --git a/extra/openssh/build b/extra/openssh/build
new file mode 100755 (executable)
index 0000000..988e909
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --datadir=/usr/share/openssh \
+    --sysconfdir=/etc/ssh \
+    --sbindir=/usr/bin \
+    --libexecdir=/usr/lib/openssh \
+    --without-selinux \
+    --with-privsep-user=nobody \
+    --with-mantype=doc \
+    --without-rpath \
+    --disable-strip \
+    --with-ssl-engine \
+    --with-pid-dir=/run \
+    --disable-wtmp \
+    --disable-utmp
+
+make
+make DESTDIR="$1" install
+
+install -m 755 contrib/ssh-copy-id   "$1/usr/bin/ssh-copy-id"
+install -m 644 contrib/ssh-copy-id.1 "$1/usr/share/man/man8/ssh-copy-id.1"
+
+# Install runit services.
+install -Dm 755 sshd.run "$1/etc/sv/sshd/run"
+ln -s /run/runit/supervise.sshd "$1/etc/sv/sshd/supervise"
diff --git a/extra/openssh/checksums b/extra/openssh/checksums
new file mode 100644 (file)
index 0000000..a0f1746
--- /dev/null
@@ -0,0 +1,2 @@
+c3e6e4da1621762c850d03b47eed1e48dff4cc9608ddeb547202a234df8ed7ae
+cd9a79943f8f6c05373bd70afc22a230f3c5e6e6200b9115f598e180dacefb54
diff --git a/extra/openssh/depends b/extra/openssh/depends
new file mode 100644 (file)
index 0000000..9ee911a
--- /dev/null
@@ -0,0 +1,2 @@
+libressl
+zlib
diff --git a/extra/openssh/files/sshd.run b/extra/openssh/files/sshd.run
new file mode 100644 (file)
index 0000000..6645902
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/bin/sshd -D
diff --git a/extra/openssh/post-install b/extra/openssh/post-install
new file mode 100755 (executable)
index 0000000..00aabb8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Generate host keys if they don't already exist.
+ssh-keygen -A >/dev/null 2>&1
diff --git a/extra/openssh/sources b/extra/openssh/sources
new file mode 100644 (file)
index 0000000..e98b6fe
--- /dev/null
@@ -0,0 +1,2 @@
+https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
+files/sshd.run
diff --git a/extra/openssh/version b/extra/openssh/version
new file mode 100644 (file)
index 0000000..e405c06
--- /dev/null
@@ -0,0 +1 @@
+8.6p1 1
diff --git a/extra/openvpn/build b/extra/openvpn/build
new file mode 100755 (executable)
index 0000000..d7d4abe
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --sbindir=/usr/bin \
+    --enable-iproute2 \
+    --enable-pkcs11 \
+    --enable-plugins \
+    --enable-password-save \
+    --enable-x509-alt-username \
+    --disable-plugin-auth-pam
+
+make
+make DESTDIR="$1" install
diff --git a/extra/openvpn/checksums b/extra/openvpn/checksums
new file mode 100644 (file)
index 0000000..a909813
--- /dev/null
@@ -0,0 +1 @@
+40930489c837c05f6153f38e1ebaec244431ef1a034e4846ff732d71d59ff194
diff --git a/extra/openvpn/depends b/extra/openvpn/depends
new file mode 100644 (file)
index 0000000..73cd55c
--- /dev/null
@@ -0,0 +1,2 @@
+lzo
+pkcs11-helper
diff --git a/extra/openvpn/sources b/extra/openvpn/sources
new file mode 100644 (file)
index 0000000..a55a5c9
--- /dev/null
@@ -0,0 +1 @@
+https://swupdate.openvpn.org/community/releases/openvpn-2.5.1.tar.xz
diff --git a/extra/openvpn/version b/extra/openvpn/version
new file mode 100644 (file)
index 0000000..9ba16f5
--- /dev/null
@@ -0,0 +1 @@
+2.5.1 1 
diff --git a/extra/opus/build b/extra/opus/build
new file mode 100755 (executable)
index 0000000..23f4676
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-custom-modes \
+    --enable-float-approx
+
+make
+make DESTDIR="$1" install
diff --git a/extra/opus/checksums b/extra/opus/checksums
new file mode 100644 (file)
index 0000000..77a9ad9
--- /dev/null
@@ -0,0 +1 @@
+65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d  opus-1.3.1.tar.gz
diff --git a/extra/opus/sources b/extra/opus/sources
new file mode 100644 (file)
index 0000000..d11f072
--- /dev/null
@@ -0,0 +1 @@
+https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
diff --git a/extra/opus/version b/extra/opus/version
new file mode 100644 (file)
index 0000000..957d07e
--- /dev/null
@@ -0,0 +1 @@
+1.3.1 1
diff --git a/extra/pandoc/build b/extra/pandoc/build
new file mode 100755 (executable)
index 0000000..4134ce9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+install -Dm755 bin/pandoc "$1/usr/bin/pandoc"
+install -Dm644 pandoc.1   "$1/usr/share/man/man1/pandoc.1"
diff --git a/extra/pandoc/checksums b/extra/pandoc/checksums
new file mode 100644 (file)
index 0000000..08191ff
--- /dev/null
@@ -0,0 +1,2 @@
+3ed8bf98126fb68fa6ce05861ab866f5100edc38bcf47bc0bb000692453344c0
+faedd90de8fe5eb02b0cfc0f2651e57ff44896d86022d11d4b9e4aae6c6f7352
diff --git a/extra/pandoc/sources b/extra/pandoc/sources
new file mode 100644 (file)
index 0000000..79de9e2
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/jgm/pandoc/releases/download/2.14.0.3/pandoc-2.14.0.3-linux-amd64.tar.gz
+https://raw.githubusercontent.com/jgm/pandoc/2.14.0.3/man/pandoc.1
diff --git a/extra/pandoc/version b/extra/pandoc/version
new file mode 100644 (file)
index 0000000..3fd55e4
--- /dev/null
@@ -0,0 +1 @@
+2.14.0.3 1 
diff --git a/extra/pango/build b/extra/pango/build
new file mode 100755 (executable)
index 0000000..1d4cc2e
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+sed -i "/subdir('tests')/d"    meson.build
+sed -i "/subdir('examples')/d" meson.build
+
+# Don't clone subprojects we don't even enable
+rm -rf subprojects
+
+meson \
+    --prefix=/usr \
+    -Dgtk_doc=false \
+    -Dinstall-tests=false \
+    -Dintrospection=disabled \
+    . build
+
+ninja -C build
+ninja -C build install
diff --git a/extra/pango/checksums b/extra/pango/checksums
new file mode 100644 (file)
index 0000000..9cd7385
--- /dev/null
@@ -0,0 +1 @@
+8783c82927582437d3a224eb18ea90d195b7451ff2effdffba16039df5346170
diff --git a/extra/pango/depends b/extra/pango/depends
new file mode 100644 (file)
index 0000000..a826934
--- /dev/null
@@ -0,0 +1,9 @@
+cairo
+fontconfig
+freetype-harfbuzz
+fribidi
+glib
+libXft
+libXrender
+meson   make
+pkgconf make
diff --git a/extra/pango/sources b/extra/pango/sources
new file mode 100644 (file)
index 0000000..7521cf4
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/GNOME/pango/archive/1.48.7.tar.gz
diff --git a/extra/pango/version b/extra/pango/version
new file mode 100644 (file)
index 0000000..3098975
--- /dev/null
@@ -0,0 +1 @@
+1.48.7 1
diff --git a/extra/pcre/build b/extra/pcre/build
new file mode 100755 (executable)
index 0000000..9e66a4b
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-utf8 \
+    --enable-unicode-properties
+
+make
+make DESTDIR="$1" install
diff --git a/extra/pcre/checksums b/extra/pcre/checksums
new file mode 100644 (file)
index 0000000..9d61417
--- /dev/null
@@ -0,0 +1 @@
+aecafd4af3bd0f3935721af77b889d9024b2e01d96b58471bd91a3063fb47728  pcre-8.44.tar.gz
diff --git a/extra/pcre/sources b/extra/pcre/sources
new file mode 100644 (file)
index 0000000..3824807
--- /dev/null
@@ -0,0 +1 @@
+https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
diff --git a/extra/pcre/version b/extra/pcre/version
new file mode 100644 (file)
index 0000000..7c59171
--- /dev/null
@@ -0,0 +1 @@
+8.44 1 
diff --git a/extra/pkcs11-helper/build b/extra/pkcs11-helper/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/pkcs11-helper/checksums b/extra/pkcs11-helper/checksums
new file mode 100644 (file)
index 0000000..a8e60e7
--- /dev/null
@@ -0,0 +1 @@
+653730f0c561bbf5941754c0783976113589b2dc64a0661c908dc878bfa4e58b
diff --git a/extra/pkcs11-helper/depends b/extra/pkcs11-helper/depends
new file mode 100644 (file)
index 0000000..2996edd
--- /dev/null
@@ -0,0 +1 @@
+lzo
diff --git a/extra/pkcs11-helper/sources b/extra/pkcs11-helper/sources
new file mode 100644 (file)
index 0000000..70f5e65
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/OpenSC/pkcs11-helper/releases/download/pkcs11-helper-1.27/pkcs11-helper-1.27.0.tar.bz2
diff --git a/extra/pkcs11-helper/version b/extra/pkcs11-helper/version
new file mode 100644 (file)
index 0000000..6a78dc9
--- /dev/null
@@ -0,0 +1 @@
+1.27.0 1 
diff --git a/extra/poppler/build b/extra/poppler/build
new file mode 100755 (executable)
index 0000000..2c2e2ad
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+cmake -B build \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+    -DENABLE_BOOST=OFF \
+    -DENABLE_CPP=ON \
+    -DENABLE_QT5=OFF \
+    -DWITH_NSS3=OFF
+
+cmake --build   build
+cmake --install build
diff --git a/extra/poppler/checksums b/extra/poppler/checksums
new file mode 100644 (file)
index 0000000..d2ba713
--- /dev/null
@@ -0,0 +1 @@
+e26ab29f68065de4d6562f0a3e2b5435a83ca92be573b99a1c81998fa286a4d4
diff --git a/extra/poppler/depends b/extra/poppler/depends
new file mode 100644 (file)
index 0000000..dce5027
--- /dev/null
@@ -0,0 +1,4 @@
+cmake make
+fontconfig
+openjpeg
+pkgconf make
diff --git a/extra/poppler/sources b/extra/poppler/sources
new file mode 100644 (file)
index 0000000..6d2b854
--- /dev/null
@@ -0,0 +1 @@
+https://poppler.freedesktop.org/poppler-21.07.0.tar.xz
diff --git a/extra/poppler/version b/extra/poppler/version
new file mode 100644 (file)
index 0000000..683d00a
--- /dev/null
@@ -0,0 +1 @@
+21.07.0 1
diff --git a/extra/qt5/build b/extra/qt5/build
new file mode 100755 (executable)
index 0000000..327664f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/sh -e
+
+for patch in *.patch; do
+    patch -p1 < "$patch"
+done
+
+# Without this folder, Qt can't find its header files.
+mkdir .git
+
+# Don't link against execinfo.h.
+sed -i 's/define QLOG/define N/g' \
+    ./src/corelib/global/qlogging.cpp
+
+export CFLAGS="-DOPENSSL_NO_PSK -DOPENSSL_NO_NEXTPROTONEG"
+export LDFLAGS="-pthread -ldl -fPIE -Wl,-z,stack-size=2097152"
+export CXXFLAGS="${CFLAGS} -Wno-deprecated-declarations -Wno-class-memaccess -Wno-packed-not-aligned"
+export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/lib/pkgconfig"
+
+
+./configure \
+    -confirm-license \
+    -opensource \
+    -prefix /usr \
+    -docdir /usr/share/doc/qt \
+    -headerdir /usr/include/qt \
+    -archdatadir /usr/lib/qt \
+    -datadir /usr/share/qt \
+    -sysconfdir /etc/xdg \
+    -examplesdir /usr/share/doc/qt/examples \
+    -nomake examples \
+    -nomake tests \
+    -optimized-qmake \
+    -no-libudev \
+    -no-separate-debug-info \
+    -no-pch \
+    -no-dbus \
+    -no-dtls \
+    -no-accessibility \
+    -no-gtk \
+    -no-glib \
+    -system-libjpeg \
+    -system-libpng \
+    -system-sqlite \
+    -system-zlib \
+    -system-freetype \
+    -system-harfbuzz \
+    -platform linux-clang
+
+make
+make INSTALL_ROOT="$1" install
+
+install -Dm755 qt.conf "$1/usr/bin/qt.conf"
diff --git a/extra/qt5/checksums b/extra/qt5/checksums
new file mode 100644 (file)
index 0000000..1b65b30
--- /dev/null
@@ -0,0 +1,4 @@
+909fad2591ee367993a75d7e2ea50ad4db332f05e1c38dd7a5a274e156a4e0f8
+3fe860ab3dd6d0de8829b6e1d6fb9f498918bd72adc022743e7ace350be3eb9b
+05185963447f0cedc29d1ce6b3b1d17a2fe862109391429c969b8cbe9c092b5a
+ca648987076f18b5e5088f3485b1d6eae3cec0bd61ae1cc758e85b03ca6217aa
diff --git a/extra/qt5/depends b/extra/qt5/depends
new file mode 100644 (file)
index 0000000..8311c19
--- /dev/null
@@ -0,0 +1,17 @@
+byacc         make
+flex          make
+freetype-harfbuzz
+gperf         make
+libXslt
+libinput
+libjpeg-turbo
+libpng
+libxkbcommon
+libxml2
+linux-headers make
+m4            make
+mesa
+mtdev
+perl          make
+sqlite
+zlib
diff --git a/extra/qt5/files/qt.conf b/extra/qt5/files/qt.conf
new file mode 100644 (file)
index 0000000..32ceb6c
--- /dev/null
@@ -0,0 +1,16 @@
+[Paths]
+Prefix = /usr
+ArchData = /usr/lib/qt
+Data = /usr/share/qt
+Documentation = /usr/share/doc/qt
+Headers = /usr/include/qt
+Libraries = /usr/lib
+LibraryExecutables = /usr/lib/qt/libexec
+Binaries = /usr/bin
+Plugins = /usr/lib/qt/plugins
+Imports = /usr/lib/qt/imports
+Qml2Imports = /usr/lib/qt/qml
+Translations = /usr/share/qt/translations
+Settings = /etc/xdg
+HostData = /usr/lib/qt
+HostSpec = linux-clang-libc++
diff --git a/extra/qt5/patches/clang-socklen-match-gcc.patch b/extra/qt5/patches/clang-socklen-match-gcc.patch
new file mode 100644 (file)
index 0000000..242bf14
--- /dev/null
@@ -0,0 +1,16 @@
+--- a/mkspecs/linux-clang/qplatformdefs.h
++++ b/mkspecs/linux-clang/qplatformdefs.h
+@@ -81,10 +81,10 @@
+ #undef QT_SOCKLEN_T
+-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+-#define QT_SOCKLEN_T            socklen_t
+-#else
++#if defined(__GLIBC__) && (__GLIBC__ < 2)
+ #define QT_SOCKLEN_T            int
++#else
++#define QT_SOCKLEN_T            socklen_t
+ #endif
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
diff --git a/extra/qt5/patches/libressl.patch b/extra/qt5/patches/libressl.patch
new file mode 100644 (file)
index 0000000..997e681
--- /dev/null
@@ -0,0 +1,420 @@
+From 2aa448121ff62e104d333f192a7f19fc76d0cf19 Mon Sep 17 00:00:00 2001
+From: Stefan Strogin <steils@gentoo.org>
+Date: Wed, 5 Feb 2020 03:49:35 +0200
+Subject: [PATCH] [PATCH] QSslSocket - add LibreSSL support
+
+Upstream-Status: Inappropriate
+[Upstream is not willing to accept any patches for LibreSSL support]
+Signed-off-by: Stefan Strogin <steils@gentoo.org>
+---
+ src/network/ssl/qsslcertificate_openssl.cpp   |  2 +-
+ src/network/ssl/qsslcontext_openssl.cpp       | 19 +++++++-
+ src/network/ssl/qsslcontext_openssl_p.h       |  7 +++
+ src/network/ssl/qsslkey_openssl.cpp           |  2 +-
+ src/network/ssl/qsslsocket_openssl.cpp        |  2 +-
+ .../ssl/qsslsocket_openssl_symbols.cpp        | 37 ++++++++++++++-
+ .../ssl/qsslsocket_openssl_symbols_p.h        | 45 ++++++++++++++++++-
+ 7 files changed, 107 insertions(+), 7 deletions(-)
+
+diff --git qtbase/src/network/ssl/qsslcertificate_openssl.cpp qtbase/src/network/ssl/qsslcertificate_openssl.cpp
+index ca9d61ccb1..19774432ce 100644
+--- qtbase/src/network/ssl/qsslcertificate_openssl.cpp
++++ qtbase/src/network/ssl/qsslcertificate_openssl.cpp
+@@ -661,7 +661,7 @@ static QMultiMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name)
+         unsigned char *data = nullptr;
+         int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
+         info.insert(name, QString::fromUtf8((char*)data, size));
+-#if QT_CONFIG(opensslv11)
++#if QT_CONFIG(opensslv11) && !defined(LIBRESSL_VERSION_NUMBER)
+         q_CRYPTO_free(data, nullptr, 0);
+ #else
+         q_CRYPTO_free(data);
+diff --git qtbase/src/network/ssl/qsslcontext_openssl.cpp qtbase/src/network/ssl/qsslcontext_openssl.cpp
+index c9f202f573..2ecdbbb7e5 100644
+--- qtbase/src/network/ssl/qsslcontext_openssl.cpp
++++ qtbase/src/network/ssl/qsslcontext_openssl.cpp
+@@ -351,9 +351,11 @@ init_context:
+         return;
+     }
++#ifndef LIBRESSL_VERSION_NUMBER
+     // A nasty hacked OpenSSL using a level that will make our auto-tests fail:
+     if (q_SSL_CTX_get_security_level(sslContext->ctx) > 1 && *forceSecurityLevel())
+         q_SSL_CTX_set_security_level(sslContext->ctx, 1);
++#endif
+     const long anyVersion =
+ #if QT_CONFIG(dtls)
+@@ -408,16 +410,28 @@ init_context:
+         maxVersion = DTLS1_VERSION;
+         break;
+     case QSsl::DtlsV1_0OrLater:
++#ifdef DTLS_MAX_VERSION
+         minVersion = DTLS1_VERSION;
+         maxVersion = DTLS_MAX_VERSION;
++#else
++        Q_UNREACHABLE();
++#endif // DTLS_MAX_VERSION
+         break;
+     case QSsl::DtlsV1_2:
++#ifdef DTLS1_2_VERSION
+         minVersion = DTLS1_2_VERSION;
+         maxVersion = DTLS1_2_VERSION;
++#else
++        Q_UNREACHABLE();
++#endif // DTLS1_2_VERSION
+         break;
+     case QSsl::DtlsV1_2OrLater:
++#if defined(DTLS1_2_VERSION) && defined(DTLS_MAX_VERSION)
+         minVersion = DTLS1_2_VERSION;
+         maxVersion = DTLS_MAX_VERSION;
++#else
++        Q_UNREACHABLE();
++#endif // DTLS1_2_VERSION && DTLS_MAX_VERSION
+         break;
+     case QSsl::TlsV1_3OrLater:
+ #ifdef TLS1_3_VERSION
+@@ -722,6 +736,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext)
+     }
+ #endif // ocsp
++#ifndef LIBRESSL_VERSION_NUMBER
+     QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free);
+     if (cctx) {
+         q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx);
+@@ -768,7 +783,9 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext)
+             sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed"));
+             sslContext->errorCode = QSslError::UnspecifiedError;
+         }
+-    } else {
++    } else
++#endif // LIBRESSL_VERSION_NUMBER
++    {
+         sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed"));
+         sslContext->errorCode = QSslError::UnspecifiedError;
+     }
+diff --git qtbase/src/network/ssl/qsslcontext_openssl_p.h qtbase/src/network/ssl/qsslcontext_openssl_p.h
+index 70cb97aad8..01a61cf535 100644
+--- qtbase/src/network/ssl/qsslcontext_openssl_p.h
++++ qtbase/src/network/ssl/qsslcontext_openssl_p.h
+@@ -61,6 +61,13 @@
+ QT_BEGIN_NAMESPACE
++#ifndef DTLS_ANY_VERSION
++#define DTLS_ANY_VERSION 0x1FFFF
++#endif
++#ifndef TLS_ANY_VERSION
++#define TLS_ANY_VERSION 0x10000
++#endif
++
+ #ifndef QT_NO_SSL
+ class QSslContextPrivate;
+diff --git qtbase/src/network/ssl/qsslkey_openssl.cpp qtbase/src/network/ssl/qsslkey_openssl.cpp
+index 43cb8c6de8..a27336aa26 100644
+--- qtbase/src/network/ssl/qsslkey_openssl.cpp
++++ qtbase/src/network/ssl/qsslkey_openssl.cpp
+@@ -360,7 +360,7 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
+     q_EVP_CipherUpdate(ctx,
+         reinterpret_cast<unsigned char *>(output.data()), &len,
+         reinterpret_cast<const unsigned char *>(data.constData()), data.size());
+-    q_EVP_CipherFinal(ctx,
++    q_EVP_CipherFinal_ex(ctx,
+         reinterpret_cast<unsigned char *>(output.data()) + len, &i);
+     len += i;
+diff --git qtbase/src/network/ssl/qsslsocket_openssl.cpp qtbase/src/network/ssl/qsslsocket_openssl.cpp
+index 277037e59c..f599498df5 100644
+--- qtbase/src/network/ssl/qsslsocket_openssl.cpp
++++ qtbase/src/network/ssl/qsslsocket_openssl.cpp
+@@ -653,7 +653,7 @@ bool QSslSocketBackendPrivate::initSslContext()
+     else if (mode == QSslSocket::SslServerMode)
+         q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback);
+-#if OPENSSL_VERSION_NUMBER >= 0x10101006L
++#if OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER)
+     // Set the client callback for TLSv1.3 PSK
+     if (mode == QSslSocket::SslClientMode
+         && QSslSocket::sslLibraryBuildVersionNumber() >= 0x10101006L) {
+diff --git qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
+index ed80fc14bd..bad2ee2e41 100644
+--- qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
++++ qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -146,10 +146,13 @@ DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return)
+ DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return)
+ DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return)
+ DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return)
++#endif
+ DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return)
+ DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return)
+ DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return)
+ DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return)
+ DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
+@@ -157,10 +160,20 @@ DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return null
+ DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG)
+ DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG)
+ DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return)
++#else
++DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
++DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
++DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return)
++DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG)
++DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG)
++DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return)
++#endif // LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return)
+ DEFINEFUNC2(unsigned long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, unsigned long op, op, return 0, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(int, SSL_CTX_get_security_level, const SSL_CTX *ctx, ctx, return -1, return)
+ DEFINEFUNC2(void, SSL_CTX_set_security_level, SSL_CTX *ctx, ctx, int level, level, return, return)
++#endif
+ #ifdef TLS1_3_VERSION
+ DEFINEFUNC2(int, SSL_CTX_set_ciphersuites, SSL_CTX *ctx, ctx, const char *str, str, return 0, return)
+ DEFINEFUNC2(void, SSL_set_psk_use_session_callback, SSL *ssl, ssl, q_SSL_psk_use_session_cb_func_t callback, callback, return, DUMMYARG)
+@@ -184,7 +197,11 @@ DEFINEFUNC2(void, X509_STORE_set_verify_cb, X509_STORE *a, a, X509_STORE_CTX_ver
+ DEFINEFUNC3(int, X509_STORE_set_ex_data, X509_STORE *a, a, int idx, idx, void *data, data, return 0, return)
+ DEFINEFUNC2(void *, X509_STORE_get_ex_data, X509_STORE *r, r, int idx, idx, return nullptr, return)
+ DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return nullptr, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC3(void, CRYPTO_free, void *str, str, const char *file, file, int line, line, return, DUMMYARG)
++#else
++DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
++#endif
+ DEFINEFUNC(long, OpenSSL_version_num, void, DUMMYARG, return 0, return)
+ DEFINEFUNC(const char *, OpenSSL_version, int a, a, return nullptr, return)
+ DEFINEFUNC(unsigned long, SSL_SESSION_get_ticket_lifetime_hint, const SSL_SESSION *session, session, return 0, return)
+@@ -224,7 +241,9 @@ DEFINEFUNC5(int, OCSP_id_get0_info, ASN1_OCTET_STRING **piNameHash, piNameHash,
+             ASN1_OCTET_STRING **piKeyHash, piKeyHash, ASN1_INTEGER **pserial, pserial, OCSP_CERTID *cid, cid,
+             return 0, return)
+ DEFINEFUNC2(OCSP_RESPONSE *, OCSP_response_create, int status, status, OCSP_BASICRESP *bs, bs, return nullptr, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(const STACK_OF(X509) *, OCSP_resp_get0_certs, const OCSP_BASICRESP *bs, bs, return nullptr, return)
++#endif
+ DEFINEFUNC2(int, OCSP_id_cmp, OCSP_CERTID *a, a, OCSP_CERTID *b, b, return -1, return)
+ DEFINEFUNC7(OCSP_SINGLERESP *, OCSP_basic_add1_status, OCSP_BASICRESP *r, r, OCSP_CERTID *c, c, int s, s,
+             int re, re, ASN1_TIME *rt, rt, ASN1_TIME *t, t, ASN1_TIME *n, n, return nullptr, return)
+@@ -269,7 +288,7 @@ DEFINEFUNC2(int, EVP_CIPHER_CTX_set_key_length, EVP_CIPHER_CTX *ctx, ctx, int ke
+ DEFINEFUNC5(int, EVP_CipherInit, EVP_CIPHER_CTX *ctx, ctx, const EVP_CIPHER *type, type, const unsigned char *key, key, const unsigned char *iv, iv, int enc, enc, return 0, return)
+ DEFINEFUNC6(int, EVP_CipherInit_ex, EVP_CIPHER_CTX *ctx, ctx, const EVP_CIPHER *cipher, cipher, ENGINE *impl, impl, const unsigned char *key, key, const unsigned char *iv, iv, int enc, enc, return 0, return)
+ DEFINEFUNC5(int, EVP_CipherUpdate, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, const unsigned char *in, in, int inl, inl, return 0, return)
+-DEFINEFUNC3(int, EVP_CipherFinal, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, return 0, return)
++DEFINEFUNC3(int, EVP_CipherFinal_ex, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, return 0, return)
+ DEFINEFUNC(const EVP_MD *, EVP_get_digestbyname, const char *name, name, return nullptr, return)
+ #ifndef OPENSSL_NO_DES
+ DEFINEFUNC(const EVP_CIPHER *, EVP_des_cbc, DUMMYARG, DUMMYARG, return nullptr, return)
+@@ -356,12 +375,14 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return -
+ DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
+ DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
+ DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return);
+ DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return);
+ DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return);
+ DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return);
+ DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return);
+ DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return);
++#endif
+ DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG)
+ DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return)
+ DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return)
+@@ -846,20 +867,26 @@ bool q_resolveOpenSslSymbols()
+     RESOLVEFUNC(EVP_CIPHER_CTX_reset)
+     RESOLVEFUNC(EVP_PKEY_up_ref)
+     RESOLVEFUNC(EVP_PKEY_CTX_new)
++#ifndef LIBRESSL_VERSION_NUMBER
+     RESOLVEFUNC(EVP_PKEY_param_check)
++#endif
+     RESOLVEFUNC(EVP_PKEY_CTX_free)
+     RESOLVEFUNC(EVP_PKEY_base_id)
+     RESOLVEFUNC(RSA_bits)
++#ifndef LIBRESSL_VERSION_NUMBER
+     RESOLVEFUNC(OPENSSL_sk_new_null)
+     RESOLVEFUNC(OPENSSL_sk_push)
+     RESOLVEFUNC(OPENSSL_sk_free)
+     RESOLVEFUNC(OPENSSL_sk_num)
+     RESOLVEFUNC(OPENSSL_sk_pop_free)
+     RESOLVEFUNC(OPENSSL_sk_value)
++#endif
+     RESOLVEFUNC(DH_get0_pqg)
+     RESOLVEFUNC(SSL_CTX_set_options)
++#ifndef LIBRESSL_VERSION_NUMBER
+     RESOLVEFUNC(SSL_CTX_get_security_level)
+     RESOLVEFUNC(SSL_CTX_set_security_level)
++#endif
+ #ifdef TLS1_3_VERSION
+     RESOLVEFUNC(SSL_CTX_set_ciphersuites)
+     RESOLVEFUNC(SSL_set_psk_use_session_callback)
+@@ -898,7 +925,9 @@ bool q_resolveOpenSslSymbols()
+     RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint)
+     RESOLVEFUNC(DH_bits)
++#ifndef LIBRESSL_VERSION_NUMBER
+     RESOLVEFUNC(DSA_bits)
++#endif
+ #if QT_CONFIG(dtls)
+     RESOLVEFUNC(DTLSv1_listen)
+@@ -928,7 +957,9 @@ bool q_resolveOpenSslSymbols()
+     RESOLVEFUNC(OCSP_check_validity)
+     RESOLVEFUNC(OCSP_cert_to_id)
+     RESOLVEFUNC(OCSP_id_get0_info)
++#ifndef LIBRESSL_VERSION_NUMBER
+     RESOLVEFUNC(OCSP_resp_get0_certs)
++#endif
+     RESOLVEFUNC(OCSP_basic_sign)
+     RESOLVEFUNC(OCSP_response_create)
+     RESOLVEFUNC(i2d_OCSP_RESPONSE)
+@@ -979,7 +1010,7 @@ bool q_resolveOpenSslSymbols()
+     RESOLVEFUNC(EVP_CipherInit)
+     RESOLVEFUNC(EVP_CipherInit_ex)
+     RESOLVEFUNC(EVP_CipherUpdate)
+-    RESOLVEFUNC(EVP_CipherFinal)
++    RESOLVEFUNC(EVP_CipherFinal_ex)
+     RESOLVEFUNC(EVP_get_digestbyname)
+ #ifndef OPENSSL_NO_DES
+     RESOLVEFUNC(EVP_des_cbc)
+@@ -1058,12 +1089,14 @@ bool q_resolveOpenSslSymbols()
+     RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
+     RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
+     RESOLVEFUNC(SSL_CTX_get_cert_store);
++#ifndef LIBRESSL_VERSION_NUMBER
+     RESOLVEFUNC(SSL_CONF_CTX_new);
+     RESOLVEFUNC(SSL_CONF_CTX_free);
+     RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
+     RESOLVEFUNC(SSL_CONF_CTX_set_flags);
+     RESOLVEFUNC(SSL_CONF_CTX_finish);
+     RESOLVEFUNC(SSL_CONF_cmd);
++#endif
+     RESOLVEFUNC(SSL_accept)
+     RESOLVEFUNC(SSL_clear)
+     RESOLVEFUNC(SSL_connect)
+diff --git qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
+index c46afcf53e..3945bada5f 100644
+--- qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
++++ qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
+@@ -80,6 +80,13 @@ QT_BEGIN_NAMESPACE
+ #define DUMMYARG
++#ifdef LIBRESSL_VERSION_NUMBER
++typedef _STACK STACK;
++typedef STACK OPENSSL_STACK;
++typedef void OPENSSL_INIT_SETTINGS;
++typedef int (*X509_STORE_CTX_verify_cb)(int ok,X509_STORE_CTX *ctx);
++#endif
++
+ #if !defined QT_LINKED_OPENSSL
+ // **************** Shared declarations ******************
+ // ret func(arg)
+@@ -230,7 +237,11 @@ const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
+ Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
+ Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
++#ifndef LIBRESSL_VERSION_NUMBER
+ int q_DSA_bits(DSA *a);
++#else
++#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p)
++#endif
+ int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
+ Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
+ EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
+@@ -238,12 +249,29 @@ void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
+ int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
+ int q_EVP_PKEY_base_id(EVP_PKEY *a);
+ int q_RSA_bits(RSA *a);
++
++#ifndef LIBRESSL_VERSION_NUMBER
+ Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
+ Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+ Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
+ Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
+ Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
+ Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
++#else // LIBRESSL_VERSION_NUMBER
++int q_sk_num(STACK *a);
++#define q_OPENSSL_sk_num(a) q_sk_num(a)
++void q_sk_pop_free(STACK *a, void (*b)(void *));
++#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
++STACK *q_sk_new_null();
++#define q_OPENSSL_sk_new_null() q_sk_new_null()
++void q_sk_push(STACK *st, void *data);
++#define q_OPENSSL_sk_push(st, data) q_sk_push(st, data)
++void q_sk_free(STACK *a);
++#define q_OPENSSL_sk_free q_sk_free
++void *q_sk_value(STACK *a, int b);
++#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
++#endif // LIBRESSL_VERSION_NUMBER
++
+ int q_SSL_session_reused(SSL *a);
+ unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
+ int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
+@@ -269,8 +297,13 @@ int q_DH_bits(DH *dh);
+ # define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
+                                                        | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
++#ifndef LIBRESSL_VERSION_NUMBER
+ #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
+ #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
++#else
++#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
++#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
++#endif // LIBRESSL_VERSION_NUMBER
+ #define q_OPENSSL_add_all_algorithms_conf()  q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
+                                                                    | OPENSSL_INIT_ADD_ALL_DIGESTS \
+@@ -279,7 +312,11 @@ int q_DH_bits(DH *dh);
+                                                                     | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
+ int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
++#ifndef LIBRESSL_VERSION_NUMBER
+ void q_CRYPTO_free(void *str, const char *file, int line);
++#else
++void q_CRYPTO_free(void *a);
++#endif
+ long q_OpenSSL_version_num();
+ const char *q_OpenSSL_version(int type);
+@@ -395,7 +432,7 @@ int q_EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
+ int q_EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, const unsigned char *key, const unsigned char *iv, int enc);
+ int q_EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv, int enc);
+ int q_EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl);
+-int q_EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
++int q_EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
+ const EVP_MD *q_EVP_get_digestbyname(const char *name);
+ #ifndef OPENSSL_NO_DES
+@@ -497,12 +534,14 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
+ int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
+ int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
+ X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
++#ifndef LIBRESSL_VERSION_NUMBER
+ SSL_CONF_CTX *q_SSL_CONF_CTX_new();
+ void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
+ void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
+ unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
+ int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
+ int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
++#endif
+ void q_SSL_free(SSL *a);
+ STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a);
+ const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);
+@@ -728,7 +767,11 @@ int q_OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, ASN1_GENERALIZEDTIME *n
+ int q_OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, ASN1_OCTET_STRING **pikeyHash,
+                         ASN1_INTEGER **pserial, OCSP_CERTID *cid);
++#ifndef LIBRESSL_VERSION_NUMBER
+ const STACK_OF(X509) *q_OCSP_resp_get0_certs(const OCSP_BASICRESP *bs);
++#else
++#define q_OCSP_resp_get0_certs(bs) ((bs)->certs)
++#endif
+ Q_AUTOTEST_EXPORT OCSP_CERTID *q_OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer);
+ Q_AUTOTEST_EXPORT void q_OCSP_CERTID_free(OCSP_CERTID *cid);
+ int q_OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b);
+-- 
+2.29.2
+
diff --git a/extra/qt5/sources b/extra/qt5/sources
new file mode 100644 (file)
index 0000000..669c5f9
--- /dev/null
@@ -0,0 +1,4 @@
+https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtbase-everywhere-src-5.15.2.tar.xz
+files/qt.conf
+patches/clang-socklen-match-gcc.patch
+patches/libressl.patch
diff --git a/extra/qt5/version b/extra/qt5/version
new file mode 100644 (file)
index 0000000..f2dc81e
--- /dev/null
@@ -0,0 +1 @@
+5.15.2 1
diff --git a/extra/ruby/build b/extra/ruby/build
new file mode 100755 (executable)
index 0000000..276e5c2
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-shared \
+    --disable-rpath
+
+make
+make DESTDIR="$1" install
diff --git a/extra/ruby/checksums b/extra/ruby/checksums
new file mode 100644 (file)
index 0000000..8988aee
--- /dev/null
@@ -0,0 +1 @@
+369825db2199f6aeef16b408df6a04ebaddb664fb9af0ec8c686b0ce7ab77727
diff --git a/extra/ruby/depends b/extra/ruby/depends
new file mode 100644 (file)
index 0000000..d01671c
--- /dev/null
@@ -0,0 +1,2 @@
+libffi
+zlib
diff --git a/extra/ruby/sources b/extra/ruby/sources
new file mode 100644 (file)
index 0000000..09c3345
--- /dev/null
@@ -0,0 +1 @@
+https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.1.tar.gz
diff --git a/extra/ruby/version b/extra/ruby/version
new file mode 100644 (file)
index 0000000..51545db
--- /dev/null
@@ -0,0 +1 @@
+3.0.1 1
diff --git a/extra/scdoc/build b/extra/scdoc/build
new file mode 100755 (executable)
index 0000000..88032b7
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make PREFIX=/usr
+make PREFIX=/usr DESTDIR="$1" install
diff --git a/extra/scdoc/checksums b/extra/scdoc/checksums
new file mode 100644 (file)
index 0000000..ff3e998
--- /dev/null
@@ -0,0 +1 @@
+1098a1ed2e087596fc0b3f657c1c8a5e00412267aa4baf3619e36824306645b1
diff --git a/extra/scdoc/sources b/extra/scdoc/sources
new file mode 100644 (file)
index 0000000..5f2684d
--- /dev/null
@@ -0,0 +1 @@
+https://git.sr.ht/~sircmpwn/scdoc/archive/1.11.1.tar.gz
diff --git a/extra/scdoc/version b/extra/scdoc/version
new file mode 100644 (file)
index 0000000..2cfc561
--- /dev/null
@@ -0,0 +1 @@
+1.11.1 1
diff --git a/extra/sfeed/build b/extra/sfeed/build
new file mode 100755 (executable)
index 0000000..b1e46ca
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+make
+make \
+    DESTDIR="$1" \
+    PREFIX=/usr \
+    MANPREFIX=/usr/share/man \
+    install
diff --git a/extra/sfeed/checksums b/extra/sfeed/checksums
new file mode 100644 (file)
index 0000000..fd0e88b
--- /dev/null
@@ -0,0 +1 @@
+0d45e2fc62c5bc29b6cfe08eb7f2f08b50039ce38b0bdc3028fb85ff63681060
diff --git a/extra/sfeed/depends b/extra/sfeed/depends
new file mode 100644 (file)
index 0000000..13368f8
--- /dev/null
@@ -0,0 +1 @@
+curl
diff --git a/extra/sfeed/sources b/extra/sfeed/sources
new file mode 100644 (file)
index 0000000..4fd5610
--- /dev/null
@@ -0,0 +1 @@
+https://codemadness.org/releases/sfeed/sfeed-0.9.24.tar.gz
diff --git a/extra/sfeed/version b/extra/sfeed/version
new file mode 100644 (file)
index 0000000..166aa05
--- /dev/null
@@ -0,0 +1 @@
+0.9.24 1
diff --git a/extra/sfeed_curses/build b/extra/sfeed_curses/build
new file mode 100755 (executable)
index 0000000..b1e46ca
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+make
+make \
+    DESTDIR="$1" \
+    PREFIX=/usr \
+    MANPREFIX=/usr/share/man \
+    install
diff --git a/extra/sfeed_curses/checksums b/extra/sfeed_curses/checksums
new file mode 100644 (file)
index 0000000..c8eb7df
--- /dev/null
@@ -0,0 +1 @@
+d08a481c6a4f74cac3e16bda6c5373fe4ce068afa11a09d75b727e07b739d581
diff --git a/extra/sfeed_curses/depends b/extra/sfeed_curses/depends
new file mode 100644 (file)
index 0000000..6a470ff
--- /dev/null
@@ -0,0 +1 @@
+ncurses
diff --git a/extra/sfeed_curses/sources b/extra/sfeed_curses/sources
new file mode 100644 (file)
index 0000000..d0cb925
--- /dev/null
@@ -0,0 +1 @@
+https://codemadness.org/releases/sfeed_curses/sfeed_curses-0.9.12.tar.gz
diff --git a/extra/sfeed_curses/version b/extra/sfeed_curses/version
new file mode 100644 (file)
index 0000000..5e4bc9a
--- /dev/null
@@ -0,0 +1 @@
+0.9.12 1
diff --git a/extra/shellcheck-bin/build b/extra/shellcheck-bin/build
new file mode 100755 (executable)
index 0000000..3a6a468
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+install -Dm755 shellcheck "$1/usr/bin/shellcheck"
diff --git a/extra/shellcheck-bin/checksums b/extra/shellcheck-bin/checksums
new file mode 100644 (file)
index 0000000..ae5e4e8
--- /dev/null
@@ -0,0 +1 @@
+70423609f27b504d6c0c47e340f33652aea975e45f312324f2dbf91c95a3b188
diff --git a/extra/shellcheck-bin/sources b/extra/shellcheck-bin/sources
new file mode 100644 (file)
index 0000000..9630ebb
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/koalaman/shellcheck/releases/download/v0.7.2/shellcheck-v0.7.2.linux.x86_64.tar.xz
diff --git a/extra/shellcheck-bin/version b/extra/shellcheck-bin/version
new file mode 100644 (file)
index 0000000..e785eb6
--- /dev/null
@@ -0,0 +1 @@
+0.7.2 1
diff --git a/extra/skeous-gtk-theme/build b/extra/skeous-gtk-theme/build
new file mode 100755 (executable)
index 0000000..8473d26
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/sh -e
+
+make PREFIX=/usr
+make DESTDIR="$1" install
diff --git a/extra/skeous-gtk-theme/checksums b/extra/skeous-gtk-theme/checksums
new file mode 100644 (file)
index 0000000..5a9eb05
--- /dev/null
@@ -0,0 +1 @@
+2d9f885e965eb9376cf149ff3839f1deb2af905e9c1eca2250a4395e029b0513
diff --git a/extra/skeous-gtk-theme/sources b/extra/skeous-gtk-theme/sources
new file mode 100644 (file)
index 0000000..26ae2a8
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/daniruiz/skeuos-gtk/archive/refs/tags/20210526.tar.gz
diff --git a/extra/skeous-gtk-theme/version b/extra/skeous-gtk-theme/version
new file mode 100644 (file)
index 0000000..9b34607
--- /dev/null
@@ -0,0 +1 @@
+20210526 1
diff --git a/extra/st/build b/extra/st/build
new file mode 100755 (executable)
index 0000000..f8494cb
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+sed -i 's|Liberation Mono|Monospace|g' config.def.h
+
+# Install terminfo to right location.
+export TERMINFO=$1/usr/share/terminfo
+mkdir -p "$TERMINFO"
+
+make
+make PREFIX=/usr DESTDIR="$1" install
diff --git a/extra/st/checksums b/extra/st/checksums
new file mode 100644 (file)
index 0000000..160e4c3
--- /dev/null
@@ -0,0 +1 @@
+d42d3ceceb4d6a65e32e90a5336e3d446db612c3fbd9ebc1780bc6c9a03346a6  st-0.8.4.tar.gz
diff --git a/extra/st/depends b/extra/st/depends
new file mode 100644 (file)
index 0000000..c1c291f
--- /dev/null
@@ -0,0 +1,5 @@
+fontconfig
+libX11
+libXft
+ncurses make
+pkgconf make
diff --git a/extra/st/sources b/extra/st/sources
new file mode 100644 (file)
index 0000000..9f758b1
--- /dev/null
@@ -0,0 +1 @@
+https://dl.suckless.org/st/st-0.8.4.tar.gz
diff --git a/extra/st/version b/extra/st/version
new file mode 100644 (file)
index 0000000..e8412c2
--- /dev/null
@@ -0,0 +1 @@
+0.8.4 1
index 2f85afff3607c60e18f165340b1cc8cd38738d68..f0fb559d127190a0ba6d060b9ef4aa99e0900cbe 100644 (file)
@@ -1 +1 @@
-1.18.0 2
+1.18.0 1
index 1745386e4b617fb1faf47791b0d7088a22cac53c..d8f36247e37545c6bb412ed89ccc453b9525ad4f 100644 (file)
@@ -1 +1 @@
-https://www.cgsecurity.org/testdisk-7.1.tar.bz2
\ No newline at end of file
+https://www.cgsecurity.org/testdisk-7.1.tar.bz2
diff --git a/extra/tiff/build b/extra/tiff/build
new file mode 100755 (executable)
index 0000000..eb4850d
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-cxx \
+    --without-x
+
+make
+make DESTDIR="$1" install
diff --git a/extra/tiff/checksums b/extra/tiff/checksums
new file mode 100644 (file)
index 0000000..a7f5914
--- /dev/null
@@ -0,0 +1 @@
+0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8
diff --git a/extra/tiff/depends b/extra/tiff/depends
new file mode 100644 (file)
index 0000000..59e7114
--- /dev/null
@@ -0,0 +1,3 @@
+libjpeg-turbo
+xz
+zlib
diff --git a/extra/tiff/sources b/extra/tiff/sources
new file mode 100644 (file)
index 0000000..2863900
--- /dev/null
@@ -0,0 +1 @@
+https://download.osgeo.org/libtiff/tiff-4.3.0.tar.gz
diff --git a/extra/tiff/version b/extra/tiff/version
new file mode 100644 (file)
index 0000000..1fa6c9a
--- /dev/null
@@ -0,0 +1 @@
+4.3.0 1
index f750a809722929490a47327b9548eb8900df688f..957d07e267a6c49a857ea2332159fe61f65d81e4 100644 (file)
@@ -1 +1 @@
-1.3.1 2
+1.3.1 1
diff --git a/extra/vis/build b/extra/vis/build
new file mode 100755 (executable)
index 0000000..f2c9adc
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+patch -p1 < soft-wrap.patch
+
+./configure \
+       --prefix=/usr \
+       --enable-lua \
+       --enable-lpeg-static
+
+make
+make DESTDIR="$1" install
+
+ln -s "/usr/bin/vis" "$1/usr/bin/vi"
diff --git a/extra/vis/checksums b/extra/vis/checksums
new file mode 100644 (file)
index 0000000..c7bd81e
--- /dev/null
@@ -0,0 +1,2 @@
+359ebb12a986b2f4e2a945567ad7587eb7d354301a5050ce10d51544570635eb
+f76924f0be2a01af179f64dc4328ce7c794023f329a4e093a6d4639127d627db
diff --git a/extra/vis/depends b/extra/vis/depends
new file mode 100644 (file)
index 0000000..04dc213
--- /dev/null
@@ -0,0 +1,4 @@
+libtermkey make
+lpeg
+lua
+ncurses
diff --git a/extra/vis/patches/soft-wrap.patch b/extra/vis/patches/soft-wrap.patch
new file mode 100644 (file)
index 0000000..9d9c04b
--- /dev/null
@@ -0,0 +1,632 @@
+From cc3a7e5566f7a33deeed5cbdcb9057e585c91dde Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Sun, 9 May 2021 00:34:16 +0000
+Subject: [PATCH 1/5] view: refactor view_addch
+
+---
+ view.c | 158 ++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 79 insertions(+), 79 deletions(-)
+
+diff --git a/view.c b/view.c
+index 74967dc6..b10deb92 100644
+--- a/view.c
++++ b/view.c
+@@ -164,98 +164,98 @@ Filerange view_viewport_get(View *view) {
+       return (Filerange){ .start = view->start, .end = view->end };
+ }
++static bool view_add_cell(View *view, const Cell *cell) {
++      size_t lineno = view->line->lineno;
++      
++      if (view->col + cell->width > view->width) {
++              for (int i = view->col; i < view->width; i++)
++                      view->line->cells[i] = view->cell_blank;
++              view->line = view->line->next;
++              view->col = 0;
++      }
++
++      if (!view->line)
++              return false;
++      
++      view->line->width += cell->width;
++      view->line->len += cell->len;
++      view->line->lineno = lineno;
++      view->line->cells[view->col] = *cell;
++      view->col++;
++      /* set cells of a character which uses multiple columns */
++      for (int i = 1; i < cell->width; i++)
++              view->line->cells[view->col++] = cell_unused;
++      return true;
++}
++
++static bool view_expand_tab(View *view, Cell *cell) {
++      cell->width = 1;
++      
++      int displayed_width = view->tabwidth - (view->col % view->tabwidth);
++      for (int w = 0; w < displayed_width; ++w) {
++      
++              int t = (w == 0) ? SYNTAX_SYMBOL_TAB : SYNTAX_SYMBOL_TAB_FILL;
++              const char *symbol = view->symbols[t]->symbol;
++              strncpy(cell->data, symbol, sizeof(cell->data) - 1);
++              cell->len = (w == 0) ? 1 : 0;
++              
++              if (!view_add_cell(view, cell))
++                      return false;
++      }
++      
++      cell->len = 1;
++      return true;
++}
++
++static bool view_expand_newline(View *view, Cell *cell) {
++      const char *symbol = view->symbols[SYNTAX_SYMBOL_EOL]->symbol;
++      strncpy(cell->data, symbol, sizeof(cell->data) - 1);
++      cell->width = 1;
++      
++      if (!view_add_cell(view, cell))
++              return false;
++
++      for (int i = view->col; i < view->width; ++i)
++              view->line->cells[i] = view->cell_blank;
++
++      size_t lineno = view->line->lineno;
++      view->line = view->line->next;
++      view->col = 0;
++      if (view->line)
++              view->line->lineno = lineno + 1;
++      
++      return true;
++}
++
+ /* try to add another character to the view, return whether there was space left */
+ static bool view_addch(View *view, Cell *cell) {
+       if (!view->line)
+               return false;
+-      int width;
+-      size_t lineno = view->line->lineno;
+       unsigned char ch = (unsigned char)cell->data[0];
+       cell->style = view->cell_blank.style;
+       switch (ch) {
+       case '\t':
+-              cell->width = 1;
+-              width = view->tabwidth - (view->col % view->tabwidth);
+-              for (int w = 0; w < width; w++) {
+-                      if (view->col + 1 > view->width) {
+-                              view->line = view->line->next;
+-                              view->col = 0;
+-                              if (!view->line)
+-                                      return false;
+-                              view->line->lineno = lineno;
+-                      }
+-
+-                      cell->len = w == 0 ? 1 : 0;
+-                      int t = w == 0 ? SYNTAX_SYMBOL_TAB : SYNTAX_SYMBOL_TAB_FILL;
+-                      strncpy(cell->data, view->symbols[t]->symbol, sizeof(cell->data)-1);
+-                      view->line->cells[view->col] = *cell;
+-                      view->line->len += cell->len;
+-                      view->line->width += cell->width;
+-                      view->col++;
+-              }
+-              cell->len = 1;
+-              return true;
++              return view_expand_tab(view, cell);
+       case '\n':
+-              cell->width = 1;
+-              if (view->col + cell->width > view->width) {
+-                      view->line = view->line->next;
+-                      view->col = 0;
+-                      if (!view->line)
+-                              return false;
+-                      view->line->lineno = lineno;
+-              }
+-
+-              strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_EOL]->symbol, sizeof(cell->data)-1);
+-
+-              view->line->cells[view->col] = *cell;
+-              view->line->len += cell->len;
+-              view->line->width += cell->width;
+-              for (int i = view->col + 1; i < view->width; i++)
+-                      view->line->cells[i] = view->cell_blank;
+-
+-              view->line = view->line->next;
+-              if (view->line)
+-                      view->line->lineno = lineno + 1;
+-              view->col = 0;
+-              return true;
+-      default:
+-              if (ch < 128 && !isprint(ch)) {
+-                      /* non-printable ascii char, represent it as ^(char + 64) */
+-                      *cell = (Cell) {
+-                              .data = { '^', ch == 127 ? '?' : ch + 64, '\0' },
+-                              .len = 1,
+-                              .width = 2,
+-                              .style = cell->style,
+-                      };
+-              }
+-
+-              if (ch == ' ') {
+-                      strncpy(cell->data, view->symbols[SYNTAX_SYMBOL_SPACE]->symbol, sizeof(cell->data)-1);
+-
+-              }
+-
+-              if (view->col + cell->width > view->width) {
+-                      for (int i = view->col; i < view->width; i++)
+-                              view->line->cells[i] = view->cell_blank;
+-                      view->line = view->line->next;
+-                      view->col = 0;
+-              }
++              return view_expand_newline(view, cell);
++      case ' ':
++              const char *symbol = view->symbols[SYNTAX_SYMBOL_SPACE]->symbol;
++              strncpy(cell->data, symbol, sizeof(cell->data) - 1);
++              return view_add_cell(view, cell);
++      }
+-              if (view->line) {
+-                      view->line->width += cell->width;
+-                      view->line->len += cell->len;
+-                      view->line->lineno = lineno;
+-                      view->line->cells[view->col] = *cell;
+-                      view->col++;
+-                      /* set cells of a character which uses multiple columns */
+-                      for (int i = 1; i < cell->width; i++)
+-                              view->line->cells[view->col++] = cell_unused;
+-                      return true;
+-              }
+-              return false;
++      if (ch < 128 && !isprint(ch)) {
++              /* non-printable ascii char, represent it as ^(char + 64) */
++              *cell = (Cell) {
++                      .data = { '^', ch == 127 ? '?' : ch + 64, '\0' },
++                      .len = 1,
++                      .width = 2,
++                      .style = cell->style,
++              };
+       }
++      return view_add_cell(view, cell);
+ }
+ static void cursor_to(Selection *s, size_t pos) {
+
+From 50e75ddf8a73feab300d7789d000f9687a509f18 Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Sun, 9 May 2021 18:17:20 +0000
+Subject: [PATCH 2/5] view.c: add word wrapping
+
+---
+ view.c | 61 +++++++++++++++++++++++++++++++++++++++++++---------------
+ 1 file changed, 45 insertions(+), 16 deletions(-)
+
+diff --git a/view.c b/view.c
+index b10deb92..e7ca8141 100644
+--- a/view.c
++++ b/view.c
+@@ -80,6 +80,10 @@ struct View {
+       bool need_update;   /* whether view has been redrawn */
+       bool large_file;    /* optimize for displaying large files */
+       int colorcolumn;
++      // TODO lua option: breakat / brk
++      const char *breakat; /* characters which might cause a word wrap */
++      int wrapcol;         /* used while drawing view content, column where word wrap might happen */
++      bool prevch_breakat; /* used while drawing view content, previous char is part of breakat */
+ };
+ static const SyntaxSymbol symbols_none[] = {
+@@ -109,6 +113,7 @@ static bool view_viewport_up(View *view, int n);
+ static bool view_viewport_down(View *view, int n);
+ static void view_clear(View *view);
++static bool view_add_cell(View *view, const Cell *cell);
+ static bool view_addch(View *view, Cell *cell);
+ static void selection_free(Selection*);
+ /* set/move current cursor position to a given (line, column) pair */
+@@ -156,6 +161,8 @@ static void view_clear(View *view) {
+       view->bottomline->next = NULL;
+       view->line = view->topline;
+       view->col = 0;
++      view->wrapcol = 0;
++      view->prevch_breakat = false;
+       if (view->ui)
+               view->cell_blank.style = view->ui->style_get(view->ui, UI_STYLE_DEFAULT);
+ }
+@@ -164,19 +171,37 @@ Filerange view_viewport_get(View *view) {
+       return (Filerange){ .start = view->start, .end = view->end };
+ }
++static void view_wrap_line(View *view) {
++      Line *cur_line = view->line;
++      int cur_col = view->col;
++      int wrapcol = (view->wrapcol > 0) ? view->wrapcol : cur_col;
++      
++      view->line = cur_line->next;
++      view->col = 0;
++      view->wrapcol = 0;
++      if (view->line) {
++              /* move extra cells to the next line */
++              for (int i = wrapcol; i < cur_col; ++i) {
++                      const Cell *cell = &cur_line->cells[i];
++                      view_add_cell(view, cell);
++                      cur_line->width -= cell->width;
++                      cur_line->len -= cell->len;
++              }
++      }
++      for (int i = wrapcol; i < view->width; ++i) {
++              /* clear remaining of line */
++              cur_line->cells[i] = view->cell_blank;
++      }
++}
++
+ static bool view_add_cell(View *view, const Cell *cell) {
+       size_t lineno = view->line->lineno;
+       
+-      if (view->col + cell->width > view->width) {
+-              for (int i = view->col; i < view->width; i++)
+-                      view->line->cells[i] = view->cell_blank;
+-              view->line = view->line->next;
+-              view->col = 0;
+-      }
++      if (view->col + cell->width > view->width)
++              view_wrap_line(view);
+       if (!view->line)
+               return false;
+-      
+       view->line->width += cell->width;
+       view->line->len += cell->len;
+       view->line->lineno = lineno;
+@@ -208,22 +233,18 @@ static bool view_expand_tab(View *view, Cell *cell) {
+ }
+ static bool view_expand_newline(View *view, Cell *cell) {
++      size_t lineno = view->line->lineno;
+       const char *symbol = view->symbols[SYNTAX_SYMBOL_EOL]->symbol;
++      
+       strncpy(cell->data, symbol, sizeof(cell->data) - 1);
+       cell->width = 1;
+-      
+       if (!view_add_cell(view, cell))
+               return false;
+-      for (int i = view->col; i < view->width; ++i)
+-              view->line->cells[i] = view->cell_blank;
+-
+-      size_t lineno = view->line->lineno;
+-      view->line = view->line->next;
+-      view->col = 0;
++      view->wrapcol = 0;
++      view_wrap_line(view);
+       if (view->line)
+               view->line->lineno = lineno + 1;
+-      
+       return true;
+ }
+@@ -233,8 +254,14 @@ static bool view_addch(View *view, Cell *cell) {
+               return false;
+       unsigned char ch = (unsigned char)cell->data[0];
++      bool ch_breakat = strchr(view->breakat, ch);
++      if (view->prevch_breakat && !ch_breakat) {
++              /* this is a good place to wrap line if needed */
++              view->wrapcol = view->col;
++      }
++      view->prevch_breakat = ch_breakat;
+       cell->style = view->cell_blank.style;
+-
++      
+       switch (ch) {
+       case '\t':
+               return view_expand_tab(view, cell);
+@@ -519,6 +546,8 @@ View *view_new(Text *text) {
+               .data = " ",
+       };
+       view->tabwidth = 8;
++      // TODO default value
++      view->breakat = "";
+       view_options_set(view, 0);
+       if (!view_resize(view, 1, 1)) {
+
+From b50672e3233e5e2d2a537d697082806a5012d6ac Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Sun, 9 May 2021 21:56:36 +0000
+Subject: [PATCH 3/5] add `wrapcolumn / wc` and `breakat / brk` options
+
+---
+ man/vis.1  |  5 +++++
+ sam.c      | 12 ++++++++++++
+ view.c     | 29 +++++++++++++++++++++++------
+ view.h     |  2 ++
+ vis-cmds.c |  6 ++++++
+ 5 files changed, 48 insertions(+), 6 deletions(-)
+
+diff --git a/man/vis.1 b/man/vis.1
+index 05433663..2f6b4754 100644
+--- a/man/vis.1
++++ b/man/vis.1
+@@ -1423,6 +1423,11 @@ WARNING: modifying a memory mapped file in-place will cause data loss.
+ Whether to use vertical or horizontal layout.
+ .It Cm ignorecase , Cm ic Op Cm off
+ Whether to ignore case when searching.
++.It Ic wrapcolumn , Ic wc Op Ar 0
++Wrap lines at minimum of window width and wrapcolumn.
++.
++.It Ic breakat , brk Op Dq Pa ""
++Characters which might cause a word wrap.
+ .El
+ .
+ .Sh COMMAND and SEARCH PROMPT
+diff --git a/sam.c b/sam.c
+index 29e9c583..d7540e07 100644
+--- a/sam.c
++++ b/sam.c
+@@ -301,6 +301,8 @@ enum {
+       OPTION_CHANGE_256COLORS,
+       OPTION_LAYOUT,
+       OPTION_IGNORECASE,
++      OPTION_BREAKAT,
++      OPTION_WRAP_COLUMN,
+ };
+ static const OptionDef options[] = {
+@@ -394,6 +396,16 @@ static const OptionDef options[] = {
+               VIS_OPTION_TYPE_BOOL,
+               VIS_HELP("Ignore case when searching")
+       },
++      [OPTION_BREAKAT] = {
++              { "breakat", "brk" },
++              VIS_OPTION_TYPE_STRING|VIS_OPTION_NEED_WINDOW,
++              VIS_HELP("Characters which might cause a word wrap")
++      },
++      [OPTION_WRAP_COLUMN] = {
++              { "wrapcolumn", "wc" },
++              VIS_OPTION_TYPE_NUMBER|VIS_OPTION_NEED_WINDOW,
++              VIS_HELP("Wrap lines at minimum of window width and wrapcolumn")
++      },
+ };
+ bool sam_init(Vis *vis) {
+diff --git a/view.c b/view.c
+index e7ca8141..79fc7bc1 100644
+--- a/view.c
++++ b/view.c
+@@ -80,9 +80,9 @@ struct View {
+       bool need_update;   /* whether view has been redrawn */
+       bool large_file;    /* optimize for displaying large files */
+       int colorcolumn;
+-      // TODO lua option: breakat / brk
+-      const char *breakat; /* characters which might cause a word wrap */
+-      int wrapcol;         /* used while drawing view content, column where word wrap might happen */
++      char *breakat;  /* characters which might cause a word wrap */
++      int wrapcolumn; /* wrap lines at minimum of window width and wrapcolumn (if != 0) */
++      int wrapcol;    /* used while drawing view content, column where word wrap might happen */
+       bool prevch_breakat; /* used while drawing view content, previous char is part of breakat */
+ };
+@@ -171,6 +171,12 @@ Filerange view_viewport_get(View *view) {
+       return (Filerange){ .start = view->start, .end = view->end };
+ }
++static int view_max_text_width(const View *view) {
++      if (view->wrapcolumn > 0)
++              return MIN(view->wrapcolumn, view->width);
++      return view->width;
++}
++
+ static void view_wrap_line(View *view) {
+       Line *cur_line = view->line;
+       int cur_col = view->col;
+@@ -197,7 +203,7 @@ static void view_wrap_line(View *view) {
+ static bool view_add_cell(View *view, const Cell *cell) {
+       size_t lineno = view->line->lineno;
+       
+-      if (view->col + cell->width > view->width)
++      if (view->col + cell->width > view_max_text_width(view))
+               view_wrap_line(view);
+       if (!view->line)
+@@ -519,6 +525,7 @@ void view_free(View *view) {
+               selection_free(view->selections);
+       free(view->textbuf);
+       free(view->lines);
++      free(view->breakat);
+       free(view);
+ }
+@@ -546,8 +553,8 @@ View *view_new(Text *text) {
+               .data = " ",
+       };
+       view->tabwidth = 8;
+-      // TODO default value
+-      view->breakat = "";
++      view->breakat = strdup("");
++      view->wrapcolumn = 0;
+       view_options_set(view, 0);
+       if (!view_resize(view, 1, 1)) {
+@@ -891,6 +898,16 @@ int view_colorcolumn_get(View *view) {
+       return view->colorcolumn;
+ }
++void view_wrapcolumn_set(View *view, int col) {
++      if (col >= 0)
++              view->wrapcolumn = col;
++}
++
++void view_breakat_set(View *view, const char *breakat) {
++      free(view->breakat);
++      view->breakat = strdup(breakat);
++}
++
+ size_t view_screenline_goto(View *view, int n) {
+       size_t pos = view->start;
+       for (Line *line = view->topline; --n > 0 && line != view->lastline; line = line->next)
+diff --git a/view.h b/view.h
+index 31b044b8..65bcb29d 100644
+--- a/view.h
++++ b/view.h
+@@ -358,6 +358,8 @@ void view_options_set(View*, enum UiOption options);
+ enum UiOption view_options_get(View*);
+ void view_colorcolumn_set(View*, int col);
+ int view_colorcolumn_get(View*);
++void view_wrapcolumn_set(View*, int col);
++void view_breakat_set(View*, const char *breakat);
+ /** Set how many spaces are used to display a tab `\t` character. */
+ void view_tabwidth_set(View*, int tabwidth);
+diff --git a/vis-cmds.c b/vis-cmds.c
+index f5221d14..e2bff70d 100644
+--- a/vis-cmds.c
++++ b/vis-cmds.c
+@@ -364,6 +364,12 @@ static bool cmd_set(Vis *vis, Win *win, Command *cmd, const char *argv[], Select
+       case OPTION_IGNORECASE:
+               vis->ignorecase = toggle ? !vis->ignorecase : arg.b;
+               break;
++      case OPTION_BREAKAT:
++              view_breakat_set(win->view, arg.s);
++              break;
++      case OPTION_WRAP_COLUMN:
++              view_wrapcolumn_set(win->view, arg.i);
++              break;
+       default:
+               if (!opt->func)
+                       return false;
+
+From ee36292c44370678f261ea843c3ebcf02fa19156 Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <>
+Date: Fri, 14 May 2021 16:44:44 +0000
+Subject: [PATCH 4/5] view.c: check return value of strdup
+
+---
+ view.c     | 32 +++++++++++++++++---------------
+ view.h     |  2 +-
+ vis-cmds.c |  5 ++++-
+ 3 files changed, 22 insertions(+), 17 deletions(-)
+
+diff --git a/view.c b/view.c
+index 79fc7bc1..f1864e8b 100644
+--- a/view.c
++++ b/view.c
+@@ -273,11 +273,11 @@ static bool view_addch(View *view, Cell *cell) {
+               return view_expand_tab(view, cell);
+       case '\n':
+               return view_expand_newline(view, cell);
+-      case ' ':
++      case ' ': {
+               const char *symbol = view->symbols[SYNTAX_SYMBOL_SPACE]->symbol;
+               strncpy(cell->data, symbol, sizeof(cell->data) - 1);
+               return view_add_cell(view, cell);
+-      }
++      }}
+       if (ch < 128 && !isprint(ch)) {
+               /* non-printable ascii char, represent it as ^(char + 64) */
+@@ -541,29 +541,27 @@ View *view_new(Text *text) {
+       View *view = calloc(1, sizeof(View));
+       if (!view)
+               return NULL;
+-      view->text = text;
+-      if (!view_selections_new(view, 0)) {
+-              view_free(view);
+-              return NULL;
+-      }
++      view->text = text;
++      view->tabwidth = 8;
++      view->breakat = strdup("");
++      view->wrapcolumn = 0;
+       view->cell_blank = (Cell) {
+               .width = 0,
+               .len = 0,
+               .data = " ",
+       };
+-      view->tabwidth = 8;
+-      view->breakat = strdup("");
+-      view->wrapcolumn = 0;
+       view_options_set(view, 0);
+-      if (!view_resize(view, 1, 1)) {
++      if (!view->breakat ||
++          !view_selections_new(view, 0) ||
++          !view_resize(view, 1, 1))
++      {
+               view_free(view);
+               return NULL;
+       }
+-
++      
+       view_cursor_to(view, 0);
+-
+       return view;
+ }
+@@ -903,9 +901,13 @@ void view_wrapcolumn_set(View *view, int col) {
+               view->wrapcolumn = col;
+ }
+-void view_breakat_set(View *view, const char *breakat) {
++bool view_breakat_set(View *view, const char *breakat) {
++      char *copy = strdup(breakat);
++      if (!copy)
++              return false;
+       free(view->breakat);
+-      view->breakat = strdup(breakat);
++      view->breakat = copy;
++      return true;
+ }
+ size_t view_screenline_goto(View *view, int n) {
+diff --git a/view.h b/view.h
+index 65bcb29d..dadecb48 100644
+--- a/view.h
++++ b/view.h
+@@ -359,7 +359,7 @@ enum UiOption view_options_get(View*);
+ void view_colorcolumn_set(View*, int col);
+ int view_colorcolumn_get(View*);
+ void view_wrapcolumn_set(View*, int col);
+-void view_breakat_set(View*, const char *breakat);
++bool view_breakat_set(View*, const char *breakat);
+ /** Set how many spaces are used to display a tab `\t` character. */
+ void view_tabwidth_set(View*, int tabwidth);
+diff --git a/vis-cmds.c b/vis-cmds.c
+index e2bff70d..d3b5f89a 100644
+--- a/vis-cmds.c
++++ b/vis-cmds.c
+@@ -365,7 +365,10 @@ static bool cmd_set(Vis *vis, Win *win, Command *cmd, const char *argv[], Select
+               vis->ignorecase = toggle ? !vis->ignorecase : arg.b;
+               break;
+       case OPTION_BREAKAT:
+-              view_breakat_set(win->view, arg.s);
++              if (!view_breakat_set(win->view, arg.s)) {
++                      vis_info_show(vis, "Failed to set breakat");
++                      return false;
++              }
+               break;
+       case OPTION_WRAP_COLUMN:
+               view_wrapcolumn_set(win->view, arg.i);
+
+From f698e53e4772497c41a12288339e3841dbca9680 Mon Sep 17 00:00:00 2001
+From: Andrey Proskurin <andreyproskurin@protonmail.com>
+Date: Fri, 14 May 2021 18:46:20 +0000
+Subject: [PATCH 5/5] view.c: add utf-8 support to `breakat`
+
+---
+ view.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/view.c b/view.c
+index f1864e8b..a399dd02 100644
+--- a/view.c
++++ b/view.c
+@@ -260,7 +260,7 @@ static bool view_addch(View *view, Cell *cell) {
+               return false;
+       unsigned char ch = (unsigned char)cell->data[0];
+-      bool ch_breakat = strchr(view->breakat, ch);
++      bool ch_breakat = strstr(view->breakat, cell->data);
+       if (view->prevch_breakat && !ch_breakat) {
+               /* this is a good place to wrap line if needed */
+               view->wrapcol = view->col;
diff --git a/extra/vis/sources b/extra/vis/sources
new file mode 100644 (file)
index 0000000..63cb838
--- /dev/null
@@ -0,0 +1,2 @@
+https://github.com/martanne/vis/releases/download/v0.7/vis-0.7.tar.gz
+patches/soft-wrap.patch
diff --git a/extra/vis/version b/extra/vis/version
new file mode 100644 (file)
index 0000000..a754260
--- /dev/null
@@ -0,0 +1 @@
+0.7 1
diff --git a/extra/webkitgtk/build b/extra/webkitgtk/build
new file mode 100755 (executable)
index 0000000..e7f85cd
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+# Remove gettext requirement.
+sed -i 's/ngettext/printf/g' Tools/MiniBrowser/gtk/BrowserDownloadsBar.c
+sed -i '/po_files \*\.po/d'  Source/WebCore/platform/gtk/po/CMakeLists.txt
+sed -i '/^GETTEXT_C/d'       Source/WebCore/platform/gtk/po/CMakeLists.txt
+
+# Fix clang build.
+sed -i '/LC_ALL/d'       Source/JavaScriptCore/jsc.cpp
+sed -i '/WTFLogAlways/d' Source/JavaScriptCore/jsc.cpp
+
+cmake -B build \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_SKIP_RPATH=ON \
+    -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
+    -DENABLE_GAMEPAD=OFF \
+    -DENABLE_GEOLOCATION=OFF \
+    -DENABLE_GLES2=ON \
+    -DENABLE_INTROSPECTION=OFF \
+    -DENABLE_MINIBROWSER=OFF \
+    -DENABLE_SAMPLING_PROFILER=OFF \
+    -DENABLE_SPELLCHECK=OFF \
+    -DENABLE_VIDEO=OFF \
+    -DENABLE_WEB_AUDIO=OFF \
+    -DENABLE_WEB_CRYPTO=OFF \
+    -DLIB_INSTALL_DIR=/usr/lib \
+    -DPORT=GTK \
+    -DUSE_GSTREAMER_GL=OFF \
+    -DUSE_LIBHYPHEN=OFF \
+    -DUSE_LIBNOTIFY=OFF \
+    -DUSE_LIBSECRET=OFF \
+    -DUSE_OPENJPEG=ON \
+    -DUSE_SYSTEMD=OFF \
+    -DUSE_WOFF2=OFF \
+    -DUSE_WPE_RENDERER=OFF \
+    -Wno-dev
+
+cmake --build   build
+cmake --install build
diff --git a/extra/webkitgtk/checksums b/extra/webkitgtk/checksums
new file mode 100644 (file)
index 0000000..d54dac3
--- /dev/null
@@ -0,0 +1 @@
+136117317f70f66486f71b8edf5e46f8776403c5d8a296e914b11a36ef836917
diff --git a/extra/webkitgtk/depends b/extra/webkitgtk/depends
new file mode 100644 (file)
index 0000000..411b535
--- /dev/null
@@ -0,0 +1,17 @@
+cairo
+cmake  make
+glib-networking
+gperf  make
+gtk+3
+harfbuzz-icu
+libXt
+libgcrypt
+libsoup
+libwebp
+libxslt
+mesa
+openjpeg
+perl   make
+python make
+ruby   make
+sqlite
diff --git a/extra/webkitgtk/sources b/extra/webkitgtk/sources
new file mode 100644 (file)
index 0000000..44800c4
--- /dev/null
@@ -0,0 +1 @@
+https://webkitgtk.org/releases/webkitgtk-2.32.1.tar.xz
diff --git a/extra/webkitgtk/version b/extra/webkitgtk/version
new file mode 100644 (file)
index 0000000..0bada59
--- /dev/null
@@ -0,0 +1 @@
+2.32.1 1
diff --git a/extra/wpa_supplicant/build b/extra/wpa_supplicant/build
new file mode 100755 (executable)
index 0000000..8860314
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+# The wpa_supplicant package is built statically using
+# libnl-tiny which is a minimal version of libnl maintained
+# by OpenWRT.
+make CC="${CC:-cc}" ALL_LIBS=libnl-tiny.a -C libnl
+
+# The CFLAGS must be set to link to the above locally built
+# libnl-tiny library.
+export CFLAGS="$CFLAGS -I$PWD/libnl/include -L$PWD/libnl -lnl-tiny"
+export CFLAGS="$CFLAGS -static -D_GNU_SOURCE -DLIBNL1_COMPAT"
+
+cd wpa_supplicant
+
+make LIBDIR=/usr/lib BINDIR=/usr/bin DRV_LIBS="$CFLAGS" CC="${CC:-cc}"
+make LIBDIR=/usr/lib BINDIR=/usr/bin DESTDIR="$1" install
+
+install -Dm644 -t "$1/usr/share/man/man8" doc/docbook/*.8
+install -Dm644 -t "$1/usr/share/man/man5" doc/docbook/*.5
diff --git a/extra/wpa_supplicant/checksums b/extra/wpa_supplicant/checksums
new file mode 100644 (file)
index 0000000..06ed6d3
--- /dev/null
@@ -0,0 +1,3 @@
+fcbdee7b4a64bea8177973299c8c824419c413ec2e3a95db63dd6a5dc3541f17  wpa_supplicant-2.9.tar.gz
+d2b57597b234c84b113e7640064c3273616c0bf086ad223d71f49aaea086ad59  4225e93bec5304abee3386213213718367e54a93.tar.gz
+ea81361a44cede64fb42309e783f26ca1d0a4f6677a21550aad925b25405eeb0  .config
diff --git a/extra/wpa_supplicant/depends b/extra/wpa_supplicant/depends
new file mode 100644 (file)
index 0000000..86dfce4
--- /dev/null
@@ -0,0 +1,2 @@
+libressl
+linux-headers make
diff --git a/extra/wpa_supplicant/files/.config b/extra/wpa_supplicant/files/.config
new file mode 100644 (file)
index 0000000..97808b5
--- /dev/null
@@ -0,0 +1,551 @@
+# Example wpa_supplicant build time configuration
+#
+# This file lists the configuration options that are used when building the
+# hostapd binary. All lines starting with # are ignored. Configuration option
+# lines must be commented out complete, if they are not to be included, i.e.,
+# just setting VARIABLE=n is not disabling that variable.
+#
+# This file is included in Makefile, so variables like CFLAGS and LIBS can also
+# be modified from here. In most cases, these lines should use += in order not
+# to override previous values of the variables.
+
+
+# Uncomment following two lines and fix the paths if you have installed OpenSSL
+# or GnuTLS in non-default location
+#CFLAGS += -I/usr/local/openssl/include
+#LIBS += -L/usr/local/openssl/lib
+
+# Some Red Hat versions seem to include kerberos header files from OpenSSL, but
+# the kerberos files are not in the default include path. Following line can be
+# used to fix build issues on such systems (krb5.h not found).
+#CFLAGS += -I/usr/include/kerberos
+
+# Driver interface for generic Linux wireless extensions
+# Note: WEXT is deprecated in the current Linux kernel version and no new
+# functionality is added to it. nl80211-based interface is the new
+# replacement for WEXT and its use allows wpa_supplicant to properly control
+# the driver to improve existing functionality like roaming and to support new
+# functionality.
+CONFIG_DRIVER_WEXT=y
+
+# Driver interface for Linux drivers using the nl80211 kernel interface
+CONFIG_DRIVER_NL80211=y
+
+# QCA vendor extensions to nl80211
+#CONFIG_DRIVER_NL80211_QCA=y
+
+# driver_nl80211.c requires libnl. If you are compiling it yourself
+# you may need to point hostapd to your version of libnl.
+#
+#CFLAGS += -I$<path to libnl include files>
+#LIBS += -L$<path to libnl library files>
+
+# Use libnl v2.0 (or 3.0) libraries.
+CONFIG_LIBNL20=y
+CONFIG_LIBNL_TINY=y
+
+# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
+#CONFIG_LIBNL32 is not set
+
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+#LIBS_p += -L/usr/local/lib
+#LIBS_c += -L/usr/local/lib
+
+# Driver interface for Windows NDIS
+#CONFIG_DRIVER_NDIS=y
+#CFLAGS += -I/usr/include/w32api/ddk
+#LIBS += -L/usr/local/lib
+# For native build using mingw
+#CONFIG_NATIVE_WINDOWS=y
+# Additional directories for cross-compilation on Linux host for mingw target
+#CFLAGS += -I/opt/mingw/mingw32/include/ddk
+#LIBS += -L/opt/mingw/mingw32/lib
+#CC=mingw32-gcc
+# By default, driver_ndis uses WinPcap for low-level operations. This can be
+# replaced with the following option which replaces WinPcap calls with NDISUIO.
+# However, this requires that WZC is disabled (net stop wzcsvc) before starting
+# wpa_supplicant.
+# CONFIG_USE_NDISUIO=y
+
+# Driver interface for wired Ethernet drivers
+CONFIG_DRIVER_WIRED=y
+
+# Driver interface for the Broadcom RoboSwitch family
+#CONFIG_DRIVER_ROBOSWITCH=y
+
+# Driver interface for no driver (e.g., WPS ER only)
+#CONFIG_DRIVER_NONE=y
+
+# Solaris libraries
+#LIBS += -lsocket -ldlpi -lnsl
+#LIBS_c += -lsocket
+
+# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
+# included)
+CONFIG_IEEE8021X_EAPOL=y
+
+# EAP-MD5
+CONFIG_EAP_MD5=y
+
+# EAP-MSCHAPv2
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-TLS
+CONFIG_EAP_TLS=y
+
+# EAL-PEAP
+CONFIG_EAP_PEAP=y
+
+# EAP-TTLS
+CONFIG_EAP_TTLS=y
+
+# EAP-FAST
+# Note: If OpenSSL is used as the TLS library, OpenSSL 1.0 or newer is needed
+# for EAP-FAST support. Older OpenSSL releases would need to be patched, e.g.,
+# with openssl-0.9.8x-tls-extensions.patch, to add the needed functions.
+#CONFIG_EAP_FAST=y
+
+# EAP-GTC
+CONFIG_EAP_GTC=y
+
+# EAP-OTP
+CONFIG_EAP_OTP=y
+
+# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used)
+#CONFIG_EAP_SIM=y
+
+# EAP-PSK (experimental; this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-pwd (secure authentication using only a password)
+CONFIG_EAP_PWD=y
+
+# EAP-PAX
+#CONFIG_EAP_PAX=y
+
+# LEAP
+CONFIG_EAP_LEAP=y
+
+# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used)
+#CONFIG_EAP_AKA=y
+
+# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used).
+# This requires CONFIG_EAP_AKA to be enabled, too.
+#CONFIG_EAP_AKA_PRIME=y
+
+# Enable USIM simulator (Milenage) for EAP-AKA
+#CONFIG_USIM_SIMULATOR=y
+
+# EAP-SAKE
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-TNC and related Trusted Network Connect support (experimental)
+#CONFIG_EAP_TNC=y
+
+# Wi-Fi Protected Setup (WPS)
+CONFIG_WPS=y
+# Enable WPS external registrar functionality
+#CONFIG_WPS_ER=y
+# Disable credentials for an open network by default when acting as a WPS
+# registrar.
+#CONFIG_WPS_REG_DISABLE_OPEN=y
+# Enable WPS support with NFC config method
+#CONFIG_WPS_NFC=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# EAP-EKE
+#CONFIG_EAP_EKE=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# Smartcard support (i.e., private key on a smartcard), e.g., with openssl
+# engine.
+CONFIG_SMARTCARD=y
+
+# PC/SC interface for smartcards (USIM, GSM SIM)
+# Enable this if EAP-SIM or EAP-AKA is included
+#CONFIG_PCSC=y
+
+# Support HT overrides (disable HT/HT40, mask MCS rates, etc.)
+#CONFIG_HT_OVERRIDES=y
+
+# Support VHT overrides (disable VHT, mask MCS rates, etc.)
+#CONFIG_VHT_OVERRIDES=y
+
+# Development testing
+#CONFIG_EAPOL_TEST=y
+
+# Select control interface backend for external programs, e.g, wpa_cli:
+# unix = UNIX domain sockets (default for Linux/*BSD)
+# udp = UDP sockets using localhost (127.0.0.1)
+# udp6 = UDP IPv6 sockets using localhost (::1)
+# named_pipe = Windows Named Pipe (default for Windows)
+# udp-remote = UDP sockets with remote access (only for tests systems/purpose)
+# udp6-remote = UDP IPv6 sockets with remote access (only for tests purpose)
+# y = use default (backwards compatibility)
+# If this option is commented out, control interface is not included in the
+# build.
+CONFIG_CTRL_IFACE=y
+
+# Include support for GNU Readline and History Libraries in wpa_cli.
+# When building a wpa_cli binary for distribution, please note that these
+# libraries are licensed under GPL and as such, BSD license may not apply for
+# the resulting binary.
+#CONFIG_READLINE=n
+
+# Include internal line edit mode in wpa_cli. This can be used as a replacement
+# for GNU Readline to provide limited command line editing and history support.
+CONFIG_WPA_CLI_EDIT=y
+
+# Remove debugging code that is printing out debug message to stdout.
+# This can be used to reduce the size of the wpa_supplicant considerably
+# if debugging code is not needed. The size reduction can be around 35%
+# (e.g., 90 kB).
+#CONFIG_NO_STDOUT_DEBUG=y
+
+# Remove WPA support, e.g., for wired-only IEEE 802.1X supplicant, to save
+# 35-50 kB in code size.
+#CONFIG_NO_WPA=y
+
+# Remove IEEE 802.11i/WPA-Personal ASCII passphrase support
+# This option can be used to reduce code size by removing support for
+# converting ASCII passphrases into PSK. If this functionality is removed, the
+# PSK can only be configured as the 64-octet hexstring (e.g., from
+# wpa_passphrase). This saves about 0.5 kB in code size.
+#CONFIG_NO_WPA_PASSPHRASE=y
+
+# Disable scan result processing (ap_mode=1) to save code size by about 1 kB.
+# This can be used if ap_scan=1 mode is never enabled.
+#CONFIG_NO_SCAN_PROCESSING=y
+
+# Select configuration backend:
+# file = text file (e.g., wpa_supplicant.conf; note: the configuration file
+#      path is given on command line, not here; this option is just used to
+#      select the backend that allows configuration files to be used)
+# winreg = Windows registry (see win_example.reg for an example)
+CONFIG_BACKEND=file
+
+# Remove configuration write functionality (i.e., to allow the configuration
+# file to be updated based on runtime configuration changes). The runtime
+# configuration can still be changed, the changes are just not going to be
+# persistent over restarts. This option can be used to reduce code size by
+# about 3.5 kB.
+#CONFIG_NO_CONFIG_WRITE=y
+
+# Remove support for configuration blobs to reduce code size by about 1.5 kB.
+#CONFIG_NO_CONFIG_BLOBS=y
+
+# Select program entry point implementation:
+# main = UNIX/POSIX like main() function (default)
+# main_winsvc = Windows service (read parameters from registry)
+# main_none = Very basic example (development use only)
+#CONFIG_MAIN=main
+
+# Select wrapper for operating system and C library specific functions
+# unix = UNIX/POSIX like systems (default)
+# win32 = Windows systems
+# none = Empty template
+#CONFIG_OS=unix
+
+# Select event loop implementation
+# eloop = select() loop (default)
+# eloop_win = Windows events and WaitForMultipleObject() loop
+#CONFIG_ELOOP=eloop
+
+# Should we use poll instead of select? Select is used by default.
+#CONFIG_ELOOP_POLL=y
+
+# Should we use epoll instead of select? Select is used by default.
+#CONFIG_ELOOP_EPOLL=y
+
+# Should we use kqueue instead of select? Select is used by default.
+#CONFIG_ELOOP_KQUEUE=y
+
+# Select layer 2 packet implementation
+# linux = Linux packet socket (default)
+# pcap = libpcap/libdnet/WinPcap
+# freebsd = FreeBSD libpcap
+# winpcap = WinPcap with receive thread
+# ndis = Windows NDISUIO (note: requires CONFIG_USE_NDISUIO=y)
+# none = Empty template
+#CONFIG_L2_PACKET=linux
+
+# Disable Linux packet socket workaround applicable for station interface
+# in a bridge for EAPOL frames. This should be uncommented only if the kernel
+# is known to not have the regression issue in packet socket behavior with
+# bridge interfaces (commit 'bridge: respect RFC2863 operational state')').
+#CONFIG_NO_LINUX_PACKET_SOCKET_WAR=y
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection), also known as PMF
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Select TLS implementation
+# openssl = OpenSSL (default)
+# gnutls = GnuTLS
+# internal = Internal TLSv1 implementation (experimental)
+# none = Empty template
+#CONFIG_TLS=openssl
+
+# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.1)
+# can be enabled to get a stronger construction of messages when block ciphers
+# are used. It should be noted that some existing TLS v1.0 -based
+# implementation may not be compatible with TLS v1.1 message (ClientHello is
+# sent prior to negotiating which version will be used)
+#CONFIG_TLSV11=y
+
+# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.2)
+# can be enabled to enable use of stronger crypto algorithms. It should be
+# noted that some existing TLS v1.0 -based implementation may not be compatible
+# with TLS v1.2 message (ClientHello is sent prior to negotiating which version
+# will be used)
+#CONFIG_TLSV12=y
+
+# If CONFIG_TLS=internal is used, additional library and include paths are
+# needed for LibTomMath. Alternatively, an integrated, minimal version of
+# LibTomMath can be used. See beginning of libtommath.c for details on benefits
+# and drawbacks of this option.
+#CONFIG_INTERNAL_LIBTOMMATH=y
+#ifndef CONFIG_INTERNAL_LIBTOMMATH
+#LTM_PATH=/usr/src/libtommath-0.39
+#CFLAGS += -I$(LTM_PATH)
+#LIBS += -L$(LTM_PATH)
+#LIBS_p += -L$(LTM_PATH)
+#endif
+# At the cost of about 4 kB of additional binary size, the internal LibTomMath
+# can be configured to include faster routines for exptmod, sqr, and div to
+# speed up DH and RSA calculation considerably
+#CONFIG_INTERNAL_LIBTOMMATH_FAST=y
+
+# Include NDIS event processing through WMI into wpa_supplicant/wpasvc.
+# This is only for Windows builds and requires WMI-related header files and
+# WbemUuid.Lib from Platform SDK even when building with MinGW.
+#CONFIG_NDIS_EVENTS_INTEGRATED=y
+#PLATFORMSDKLIB="/opt/Program Files/Microsoft Platform SDK/Lib"
+
+# Add support for old DBus control interface
+# (fi.epitest.hostap.WPASupplicant)
+#CONFIG_CTRL_IFACE_DBUS=n
+
+# Add support for new DBus control interface
+# (fi.w1.hostap.wpa_supplicant1)
+# CONFIG_CTRL_IFACE_DBUS_NEW=n
+
+# Add introspection support for new DBus control interface
+# CONFIG_CTRL_IFACE_DBUS_INTRO=n
+
+# Add support for loading EAP methods dynamically as shared libraries.
+# When this option is enabled, each EAP method can be either included
+# statically (CONFIG_EAP_<method>=y) or dynamically (CONFIG_EAP_<method>=dyn).
+# Dynamic EAP methods are build as shared objects (eap_*.so) and they need to
+# be loaded in the beginning of the wpa_supplicant configuration file
+# (see load_dynamic_eap parameter in the example file) before being used in
+# the network blocks.
+#
+# Note that some shared parts of EAP methods are included in the main program
+# and in order to be able to use dynamic EAP methods using these parts, the
+# main program must have been build with the EAP method enabled (=y or =dyn).
+# This means that EAP-TLS/PEAP/TTLS/FAST cannot be added as dynamic libraries
+# unless at least one of them was included in the main build to force inclusion
+# of the shared code. Similarly, at least one of EAP-SIM/AKA must be included
+# in the main build to be able to load these methods dynamically.
+#
+# Please also note that using dynamic libraries will increase the total binary
+# size. Thus, it may not be the best option for targets that have limited
+# amount of memory/flash.
+#CONFIG_DYNAMIC_EAP_METHODS=y
+
+# IEEE Std 802.11r-2008 (Fast BSS Transition)
+#CONFIG_IEEE80211R=y
+
+# Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt)
+CONFIG_DEBUG_FILE=y
+
+# Send debug messages to syslog instead of stdout
+CONFIG_DEBUG_SYSLOG=y
+# Set syslog facility for debug messages
+CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
+
+# Add support for sending all debug messages (regardless of debug verbosity)
+# to the Linux kernel tracing facility. This helps debug the entire stack by
+# making it easy to record everything happening from the driver up into the
+# same file, e.g., using trace-cmd.
+#CONFIG_DEBUG_LINUX_TRACING=y
+
+# Add support for writing debug log to Android logcat instead of standard
+# output
+#CONFIG_ANDROID_LOG=y
+
+# Enable privilege separation (see README 'Privilege separation' for details)
+#CONFIG_PRIVSEP=y
+
+# Enable mitigation against certain attacks against TKIP by delaying Michael
+# MIC error reports by a random amount of time between 0 and 60 seconds
+#CONFIG_DELAYED_MIC_ERROR_REPORT=y
+
+# Enable tracing code for developer debugging
+# This tracks use of memory allocations and other registrations and reports
+# incorrect use with a backtrace of call (or allocation) location.
+#CONFIG_WPA_TRACE=y
+# For BSD, uncomment these.
+#LIBS += -lexecinfo
+#LIBS_p += -lexecinfo
+#LIBS_c += -lexecinfo
+
+# Use libbfd to get more details for developer debugging
+# This enables use of libbfd to get more detailed symbols for the backtraces
+# generated by CONFIG_WPA_TRACE=y.
+#CONFIG_WPA_TRACE_BFD=y
+# For BSD, uncomment these.
+#LIBS += -lbfd -liberty -lz
+#LIBS_p += -lbfd -liberty -lz
+#LIBS_c += -lbfd -liberty -lz
+
+# wpa_supplicant depends on strong random number generation being available
+# from the operating system. os_get_random() function is used to fetch random
+# data when needed, e.g., for key generation. On Linux and BSD systems, this
+# works by reading /dev/urandom. It should be noted that the OS entropy pool
+# needs to be properly initialized before wpa_supplicant is started. This is
+# important especially on embedded devices that do not have a hardware random
+# number generator and may by default start up with minimal entropy available
+# for random number generation.
+#
+# As a safety net, wpa_supplicant is by default trying to internally collect
+# additional entropy for generating random data to mix in with the data fetched
+# from the OS. This by itself is not considered to be very strong, but it may
+# help in cases where the system pool is not initialized properly. However, it
+# is very strongly recommended that the system pool is initialized with enough
+# entropy either by using hardware assisted random number generator or by
+# storing state over device reboots.
+#
+# wpa_supplicant can be configured to maintain its own entropy store over
+# restarts to enhance random number generation. This is not perfect, but it is
+# much more secure than using the same sequence of random numbers after every
+# reboot. This can be enabled with -e<entropy file> command line option. The
+# specified file needs to be readable and writable by wpa_supplicant.
+#
+# If the os_get_random() is known to provide strong random data (e.g., on
+# Linux/BSD, the board in question is known to have reliable source of random
+# data from /dev/urandom), the internal wpa_supplicant random pool can be
+# disabled. This will save some in binary size and CPU use. However, this
+# should only be considered for builds that are known to be used on devices
+# that meet the requirements described above.
+CONFIG_NO_RANDOM_POOL=y
+
+# IEEE 802.11n (High Throughput) support (mainly for AP mode)
+#CONFIG_IEEE80211N=y
+
+# IEEE 802.11ac (Very High Throughput) support (mainly for AP mode)
+# (depends on CONFIG_IEEE80211N)
+#CONFIG_IEEE80211AC=y
+
+# Wireless Network Management (IEEE Std 802.11v-2011)
+# Note: This is experimental and not complete implementation.
+#CONFIG_WNM=y
+
+# Interworking (IEEE 802.11u)
+# This can be used to enable functionality to improve interworking with
+# external networks (GAS/ANQP to learn more about the networks and network
+# selection based on available credentials).
+#CONFIG_INTERWORKING=y
+
+# Hotspot 2.0
+#CONFIG_HS20=y
+
+# Enable interface matching in wpa_supplicant
+CONFIG_MATCH_IFACE=y
+
+# Disable roaming in wpa_supplicant
+#CONFIG_NO_ROAMING=y
+
+# AP mode operations with wpa_supplicant
+# This can be used for controlling AP mode operations with wpa_supplicant. It
+# should be noted that this is mainly aimed at simple cases like
+# WPA2-Personal while more complex configurations like WPA2-Enterprise with an
+# external RADIUS server can be supported with hostapd.
+CONFIG_AP=y
+
+# P2P (Wi-Fi Direct)
+# This can be used to enable P2P support in wpa_supplicant. See README-P2P for
+# more information on P2P operations.
+CONFIG_P2P=y
+
+# Enable TDLS support
+#CONFIG_TDLS=y
+
+# Wi-Fi Direct
+# This can be used to enable Wi-Fi Direct extensions for P2P using an external
+# program to control the additional information exchanges in the messages.
+#CONFIG_WIFI_DISPLAY=y
+
+# Autoscan
+# This can be used to enable automatic scan support in wpa_supplicant.
+# See wpa_supplicant.conf for more information on autoscan usage.
+#
+# Enabling directly a module will enable autoscan support.
+# For exponential module:
+#CONFIG_AUTOSCAN_EXPONENTIAL=y
+# For periodic module:
+#CONFIG_AUTOSCAN_PERIODIC=y
+
+# Password (and passphrase, etc.) backend for external storage
+# These optional mechanisms can be used to add support for storing passwords
+# and other secrets in external (to wpa_supplicant) location. This allows, for
+# example, operating system specific key storage to be used
+#
+# External password backend for testing purposes (developer use)
+#CONFIG_EXT_PASSWORD_TEST=y
+
+# Enable Fast Session Transfer (FST)
+#CONFIG_FST=y
+
+# Enable CLI commands for FST testing
+#CONFIG_FST_TEST=y
+
+# OS X builds. This is only for building eapol_test.
+#CONFIG_OSX=y
+
+# Automatic Channel Selection
+# This will allow wpa_supplicant to pick the channel automatically when channel
+# is set to "0".
+#
+# TODO: Extend parser to be able to parse "channel=acs_survey" as an alternative
+# to "channel=0". This would enable us to eventually add other ACS algorithms in
+# similar way.
+#
+# Automatic selection is currently only done through initialization, later on
+# we hope to do background checks to keep us moving to more ideal channels as
+# time goes by. ACS is currently only supported through the nl80211 driver and
+# your driver must have survey dump capability that is filled by the driver
+# during scanning.
+#
+# TODO: In analogy to hostapd be able to customize the ACS survey algorithm with
+# a newly to create wpa_supplicant.conf variable acs_num_scans.
+#
+# Supported ACS drivers:
+# * ath9k
+# * ath5k
+# * ath10k
+#
+# For more details refer to:
+# http://wireless.kernel.org/en/users/Documentation/acs
+#CONFIG_ACS=y
+
+# Support Multi Band Operation
+#CONFIG_MBO=y
diff --git a/extra/wpa_supplicant/post-install b/extra/wpa_supplicant/post-install
new file mode 100755 (executable)
index 0000000..a50eb53
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+cat <<EOF
+
+NOTE: You can now remove 'libnl' as wpa_supplicant
+      no longer needs it (static libnl-tiny).
+
+EOF
diff --git a/extra/wpa_supplicant/sources b/extra/wpa_supplicant/sources
new file mode 100644 (file)
index 0000000..14ad689
--- /dev/null
@@ -0,0 +1,3 @@
+https://w1.fi/releases/wpa_supplicant-2.9.tar.gz
+https://github.com/sabotage-linux/libnl-tiny/archive/4225e93bec5304abee3386213213718367e54a93.tar.gz libnl
+files/.config wpa_supplicant/
diff --git a/extra/wpa_supplicant/version b/extra/wpa_supplicant/version
new file mode 100644 (file)
index 0000000..8843a56
--- /dev/null
@@ -0,0 +1 @@
+2.9 1
diff --git a/extra/x264/build b/extra/x264/build
new file mode 100755 (executable)
index 0000000..0566078
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+
+export CC="${CC:-cc}"
+export CXX="${CC:-c++}"
+
+patch -p1 < x264-no-bash.patch
+
+./configure \
+    --prefix=/usr \
+    --disable-swscale \
+    --enable-static \
+    --enable-pic \
+    --enable-shared
+
+make
+make DESTDIR="$1" install
diff --git a/extra/x264/checksums b/extra/x264/checksums
new file mode 100644 (file)
index 0000000..2243eef
--- /dev/null
@@ -0,0 +1,2 @@
+404e7ba61123720a7b2cc45356ace6859860ef4ce3503758465e92c1ce11995e  x264-snapshot-20190812-2245-stable.tar.bz2
+a78a518c3685813fdfdc8813acd48e292968892e6ff5ea60d91f5c514c35acee  x264-no-bash.patch
diff --git a/extra/x264/depends b/extra/x264/depends
new file mode 100644 (file)
index 0000000..116f6b2
--- /dev/null
@@ -0,0 +1 @@
+nasm make
diff --git a/extra/x264/patches/x264-no-bash.patch b/extra/x264/patches/x264-no-bash.patch
new file mode 100644 (file)
index 0000000..07e8dd2
--- /dev/null
@@ -0,0 +1,222 @@
+diff --git a/configure b/configure-posix
+index 3cf63e0..1e1fce5 100755
+--- a/configure-posix
++++ b/configure
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+
+ if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
+ cat <<EOF
+@@ -59,7 +59,7 @@ exit 1
+ fi
+
+ log_check() {
+-    echo -n "checking $1... " >> config.log
++    echo "checking $1... " >> config.log
+ }
+
+ log_ok() {
+@@ -78,13 +78,12 @@ cc_cflags() {
+     # several non gcc compilers issue an incredibly large number of warnings on high warning levels,
+     # suppress them by reducing the warning level rather than having to use #pragmas
+     for arg in $*; do
+-        [[ "$arg" = -falign-loops* ]] && arg=
++        case $arg in
++            -falign-loops*|-mpreferred-stack-boundary*|-l*|-L*) arg=
++        esac
+         [ "$arg" = -fno-tree-vectorize ] && arg=
+         [ "$arg" = -Wshadow ] && arg=
+         [ "$arg" = -Wno-maybe-uninitialized ] && arg=
+-        [[ "$arg" = -mpreferred-stack-boundary* ]] && arg=
+-        [[ "$arg" = -l* ]] && arg=
+-        [[ "$arg" = -L* ]] && arg=
+         if [ $compiler_style = MS ]; then
+             [ "$arg" = -ffast-math ] && arg="-fp:fast"
+             [ "$arg" = -Wall ] && arg=
+@@ -100,14 +99,14 @@ cc_cflags() {
+         fi
+         [ $compiler = CL -a "$arg" = -O3 ] && arg=-O2
+
+-        [ -n "$arg" ] && echo -n "$arg "
++        [ -n "$arg" ] && printf %s "$arg "
+     done
+ }
+
+ cl_ldflags() {
+     for arg in $*; do
+-        arg=${arg/LIBPATH/libpath}
+-        [ "${arg#-libpath:}" == "$arg" -a "${arg#-l}" != "$arg" ] && arg=${arg#-l}.lib
++        arg=$(echo "$arg" | sed -e 's/LIBPATH/libpath/')
++        [ "${arg#-libpath:}" = "$arg" -a "${arg#-l}" != "$arg" ] && arg=${arg#-l}.lib
+         [ "${arg#-L}" != "$arg" ] && arg=-libpath:${arg#-L}
+         [ "$arg" = -Wl,--large-address-aware ] && arg=-largeaddressaware
+         [ "$arg" = -s ] && arg=
+@@ -116,14 +115,17 @@ cl_ldflags() {
+         [ "$arg" = -Werror ] && arg=
+         [ "$arg" = -Wshadow ] && arg=
+         [ "$arg" = -Wmaybe-uninitialized ] && arg=
+-        [[ "$arg" = -Qdiag-error* ]] && arg=
+
+-        arg=${arg/pthreadGC/pthreadVC}
++        case $arg in
++            -Qdiag-error*) arg=
++        esac
++
++        arg=$(echo "$arg" | sed -e 's/pthreadGC/pthreadVC/')
+         [ "$arg" = avifil32.lib ] && arg=vfw32.lib
+         [ "$arg" = gpac_static.lib ] && arg=libgpac_static.lib
+         [ "$arg" = x264.lib ] && arg=libx264.lib
+
+-        [ -n "$arg" ] && echo -n "$arg "
++        [ -n "$arg" ] && printf %s "$arg "
+     done
+ }
+
+@@ -180,7 +182,7 @@ cpp_check() {
+     for arg in $1; do
+         echo "#include <$arg>" >> conftest.c
+     done
+-    echo -e "#if !($3) \n#error $4 \n#endif " >> conftest.c
++    printf '%b\n' "#if !($3) \n#error $4 \n#endif " >> conftest.c
+     if [ $compiler_style = MS ]; then
+         cpp_cmd="$CC conftest.c $(cc_cflags $CFLAGS $2) -P"
+     else
+@@ -329,11 +331,15 @@ rm -rf conftest*
+
+ # Construct a path to the specified directory relative to the working directory
+ relative_path() {
+-    local base="${PWD%/}"
+-    local path="$(cd "$1" >/dev/null; printf '%s/.' "${PWD%/}")"
+-    local up=''
++    base="${PWD%/}"
++    path="$(cd "$1" >/dev/null; printf '%s/.' "${PWD%/}")"
++    up=''
++
++    while :; do
++        case $path in
++            "$base/"*) break ;;
++        esac
+
+-    while [[ $path != "$base/"* ]]; do
+         base="${base%/*}"
+         up="../$up"
+     done
+@@ -564,48 +570,6 @@ trap 'rm -rf conftest*' EXIT
+ # test for use of compilers that require specific handling
+ cc_base="$(basename "$CC")"
+ QPRE="-"
+-if [[ $host_os = mingw* || $host_os = cygwin* ]]; then
+-    if [[ "$cc_base" = icl || "$cc_base" = icl[\ .]* ]]; then
+-        # Windows Intel Compiler creates dependency generation with absolute Windows paths, Cygwin's make does not support Windows paths.
+-        [[ $host_os = cygwin* ]] && die "Windows Intel Compiler support requires MSYS"
+-        compiler=ICL
+-        compiler_style=MS
+-        CFLAGS="$CFLAGS -Qstd=c99 -nologo -Qms0 -DHAVE_STRING_H -I\$(SRCPATH)/extras"
+-        QPRE="-Q"
+-        cpp_check '' '' '_MSC_VER >= 1400' || die "Windows Intel Compiler support requires Visual Studio 2005 or newer"
+-        if cpp_check '' '' 'defined(_M_AMD64) || defined(_M_X64)' ; then
+-            host_cpu=x86_64
+-        elif cpp_check '' '' 'defined(_M_IX86)' ; then
+-            host_cpu=i486
+-        fi
+-        if cc_check '' -Qdiag-error:10006,10157 ; then
+-            CHECK_CFLAGS="$CHECK_CFLAGS -Qdiag-error:10006,10157"
+-        fi
+-    elif [[ "$cc_base" = cl || "$cc_base" = cl[\ .]* ]]; then
+-        # Standard Microsoft Visual Studio
+-        compiler=CL
+-        compiler_style=MS
+-        CFLAGS="$CFLAGS -nologo -GS- -DHAVE_STRING_H -I\$(SRCPATH)/extras"
+-        cpp_check '' '' '_MSC_VER > 1800 || (_MSC_VER == 1800 && _MSC_FULL_VER >= 180030324)' || die "Microsoft Visual Studio support requires Visual Studio 2013 Update 2 or newer"
+-        if cpp_check '' '' 'defined(_M_AMD64) || defined(_M_X64)' ; then
+-            host_cpu=x86_64
+-        elif cpp_check '' '' 'defined(_M_IX86)' ; then
+-            host_cpu=i486
+-        elif cpp_check '' '' 'defined(_M_ARM64)' ; then
+-            host_cpu=aarch64
+-        elif cpp_check '' '' 'defined(_M_ARM)' ; then
+-            host_cpu=arm
+-        fi
+-    else
+-        # MinGW uses broken pre-VS2015 Microsoft printf functions unless it's told to use the POSIX ones.
+-        CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200112L"
+-    fi
+-else
+-    if [[ "$cc_base" = icc || "$cc_base" = icc[\ .]* ]]; then
+-        AR="xiar"
+-        compiler=ICC
+-    fi
+-fi
+
+ if [ $compiler = GNU ]; then
+     if cc_check '' -Werror=unknown-warning-option ; then
+@@ -653,18 +617,6 @@ case $host_os in
+         define HAVE_MALLOC_H
+         libm="-lm"
+         ;;
+-    cygwin*|mingw*|msys*)
+-        EXE=".exe"
+-        if [[ $host_os = cygwin* ]] && cpp_check "" "" "defined(__CYGWIN__)" ; then
+-            SYS="CYGWIN"
+-            define HAVE_MALLOC_H
+-        else
+-            SYS="WINDOWS"
+-            DEVNULL="NUL"
+-            cc_check '' -lshell32 && LDFLAGSCLI="$LDFLAGSCLI -lshell32"
+-            [ $compiler = GNU ] && RC="${RC-${cross_prefix}windres}" || RC="${RC-rc.exe}"
+-        fi
+-        ;;
+     sunos*|solaris*)
+         SYS="SunOS"
+         define HAVE_MALLOC_H
+@@ -705,30 +657,6 @@ LDFLAGS="$LDFLAGS $libm"
+ stack_alignment=4
+ case $host_cpu in
+     i*86)
+-        ARCH="X86"
+-        AS="${AS-nasm}"
+-        AS_EXT=".asm"
+-        ASFLAGS="$ASFLAGS -DARCH_X86_64=0 -I\$(SRCPATH)/common/x86/"
+-        if [ $compiler = GNU ]; then
+-            if [[ "$asm" == auto && "$CFLAGS" != *-march* ]]; then
+-                CFLAGS="$CFLAGS -march=i686"
+-            fi
+-            if [[ "$asm" == auto && "$CFLAGS" != *-mfpmath* ]]; then
+-                CFLAGS="$CFLAGS -mfpmath=sse -msse -msse2"
+-            fi
+-            CFLAGS="-m32 $CFLAGS"
+-            LDFLAGS="-m32 $LDFLAGS"
+-        fi
+-        if [ "$SYS" = MACOSX ]; then
+-            ASFLAGS="$ASFLAGS -f macho32 -DPREFIX"
+-        elif [ "$SYS" = WINDOWS -o "$SYS" = CYGWIN ]; then
+-            ASFLAGS="$ASFLAGS -f win32 -DPREFIX"
+-            LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
+-            [ $compiler = GNU ] && LDFLAGS="$LDFLAGS -Wl,--dynamicbase,--nxcompat,--tsaware"
+-            [ $compiler = GNU ] && RCFLAGS="--target=pe-i386 $RCFLAGS"
+-        else
+-            ASFLAGS="$ASFLAGS -f elf32"
+-        fi
+         ;;
+     x86_64)
+         ARCH="X86_64"
+@@ -931,7 +859,7 @@ fi
+
+ if [ $asm = auto -a $ARCH = ARM ] ; then
+     # set flags so neon is built by default
+-    [ $compiler == CL ] || echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon"
++    [ $compiler = CL ] || echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon"
+
+     cc_check '' '' '__asm__("add r0, r1, r2");' && define HAVE_ARM_INLINE_ASM
+     if [ $compiler = CL ] && cpp_check '' '' 'defined(_M_ARM) && _M_ARM >= 7' ; then
+@@ -1576,7 +1504,8 @@ cat conftest.log >> config.log
+ cat conftest.log
+
+ [ "$SRCPATH" != "." ] && ln -sf ${SRCPATH}/Makefile ./Makefile
+-mkdir -p common/{aarch64,arm,mips,ppc,x86} encoder extras filters/video input output tools
++mkdir -p common/aarch64 common/arm common/mips common/ppc common/x86
++mkdir -p encoder extras filters/video input output tools
+
+ echo
+ echo "You can run 'make' or 'make fprofiled' now."
diff --git a/extra/x264/sources b/extra/x264/sources
new file mode 100644 (file)
index 0000000..ec3be5c
--- /dev/null
@@ -0,0 +1,2 @@
+https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20190812-2245-stable.tar.bz2
+patches/x264-no-bash.patch
diff --git a/extra/x264/version b/extra/x264/version
new file mode 100644 (file)
index 0000000..f48adf1
--- /dev/null
@@ -0,0 +1 @@
+20190812-2245 1
diff --git a/extra/x265/build b/extra/x265/build
new file mode 100755 (executable)
index 0000000..2bc1c91
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+cmake source \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_BUILD_TYPE=Release
+
+cmake --build .
+cmake --install .
diff --git a/extra/x265/checksums b/extra/x265/checksums
new file mode 100644 (file)
index 0000000..5e3f312
--- /dev/null
@@ -0,0 +1 @@
+5ca3403c08de4716719575ec56c686b1eb55b078c0fe50a064dcf1ac20af1618
diff --git a/extra/x265/depends b/extra/x265/depends
new file mode 100644 (file)
index 0000000..8e82f95
--- /dev/null
@@ -0,0 +1,2 @@
+cmake make
+nasm  make
diff --git a/extra/x265/sources b/extra/x265/sources
new file mode 100644 (file)
index 0000000..f289c04
--- /dev/null
@@ -0,0 +1 @@
+https://bitbucket.org/multicoreware/x265_git/get/3.5.tar.gz
diff --git a/extra/x265/version b/extra/x265/version
new file mode 100644 (file)
index 0000000..61e3d24
--- /dev/null
@@ -0,0 +1 @@
+3.5 1
index 4920469bc347cf58010651b90dd88925e961ec41..6806655b340d871eb8681a9baeffdfb21733272b 100644 (file)
@@ -1 +1 @@
-1.4.18 2
+1.4.18 1
diff --git a/extra/xvile/build b/extra/xvile/build
new file mode 100755 (executable)
index 0000000..98d4340
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/sh -e
+
+[ -d /usr/share/vile ] || filters="--with-builtin-filters"
+
+./configure \
+    --prefix=/usr \
+    $filters \
+    --with-screen=neXtaw
+
+make
+make DESTDIR="$1" install
diff --git a/extra/xvile/checksums b/extra/xvile/checksums
new file mode 100644 (file)
index 0000000..beb064d
--- /dev/null
@@ -0,0 +1 @@
+dea31c023aa7a90271056c712c826a5d16d19ad61df5cf5f299aa1025af280d6
diff --git a/extra/xvile/depends b/extra/xvile/depends
new file mode 100644 (file)
index 0000000..2a97ca9
--- /dev/null
@@ -0,0 +1,2 @@
+flex
+neXtaw
diff --git a/extra/xvile/sources b/extra/xvile/sources
new file mode 100644 (file)
index 0000000..eb2480b
--- /dev/null
@@ -0,0 +1 @@
+https://invisible-mirror.net/archives/vile/vile-9.8.tgz
diff --git a/extra/xvile/version b/extra/xvile/version
new file mode 100644 (file)
index 0000000..77a50e8
--- /dev/null
@@ -0,0 +1 @@
+9.8 1
diff --git a/extra/youtube-dl/build b/extra/youtube-dl/build
new file mode 100755 (executable)
index 0000000..5017cee
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+make lazy-extractors
+make youtube-dl
+
+install -Dm755 youtube-dl "$1/usr/bin/youtube-dl"
diff --git a/extra/youtube-dl/checksums b/extra/youtube-dl/checksums
new file mode 100644 (file)
index 0000000..2f7a906
--- /dev/null
@@ -0,0 +1 @@
+3d609df194db40f28fd4ef224cf732cd3ce7acd8596e3a0d19edba0fc5d047fa
diff --git a/extra/youtube-dl/depends b/extra/youtube-dl/depends
new file mode 100644 (file)
index 0000000..c5f826c
--- /dev/null
@@ -0,0 +1,2 @@
+python
+zip make
diff --git a/extra/youtube-dl/sources b/extra/youtube-dl/sources
new file mode 100644 (file)
index 0000000..c71358c
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/ytdl-org/youtube-dl/archive/2021.06.06.tar.gz
diff --git a/extra/youtube-dl/version b/extra/youtube-dl/version
new file mode 100644 (file)
index 0000000..383c688
--- /dev/null
@@ -0,0 +1 @@
+2021.06.06 1
diff --git a/extra/zathura-pdf-poppler/build b/extra/zathura-pdf-poppler/build
new file mode 100755 (executable)
index 0000000..3dcdb2b
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+meson build \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --buildtype=release
+DESTDIR="$1" ninja -C build install
diff --git a/extra/zathura-pdf-poppler/checksums b/extra/zathura-pdf-poppler/checksums
new file mode 100644 (file)
index 0000000..0a167fa
--- /dev/null
@@ -0,0 +1 @@
+2034f70a936d458ddc9276f769e77ff308ba3bb1b7a7cdc87bab8b9ef7ade84a  0.3.0.tar.gz
diff --git a/extra/zathura-pdf-poppler/depends b/extra/zathura-pdf-poppler/depends
new file mode 100644 (file)
index 0000000..1821fda
--- /dev/null
@@ -0,0 +1,3 @@
+meson make
+poppler
+zathura
diff --git a/extra/zathura-pdf-poppler/sources b/extra/zathura-pdf-poppler/sources
new file mode 100644 (file)
index 0000000..ea3b0ca
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/pwmt/zathura-pdf-poppler/archive/0.3.0.tar.gz
diff --git a/extra/zathura-pdf-poppler/version b/extra/zathura-pdf-poppler/version
new file mode 100644 (file)
index 0000000..19de110
--- /dev/null
@@ -0,0 +1 @@
+0.3.0 1
diff --git a/extra/zathura/build b/extra/zathura/build
new file mode 100755 (executable)
index 0000000..86589ef
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+patch -p1 < remove_gettext.patch
+
+# Fix build errors when appstream-glib or
+# desktop-file-utils are installed.
+sed -i 's/appstream-util//'        data/meson.build
+sed -i 's/desktop-file-validate//' data/meson.build
+
+meson build \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --buildtype=release \
+    -Dsynctex=disabled
+DESTDIR="$1" ninja -C build install
+
+install -Dm 0644 zathura.1   "$1/usr/share/man/man1/zathura.1"
+install -Dm 0644 zathurarc.5 "$1/usr/share/man/man1/zathurarc.5"
diff --git a/extra/zathura/checksums b/extra/zathura/checksums
new file mode 100644 (file)
index 0000000..1d287c1
--- /dev/null
@@ -0,0 +1,4 @@
+dbea0d5c42bfb813640af2587edbf04a93e6e87232f429e09845e5a9d0049ffb
+bbbf1667764429c6dda349c4ed36f1fd024f376eda6da37b15ff46d0aa2700fd
+4092bcc7409699642fb8c2c2bec41682aae1d3f848658ea8f67493701560e901
+52b37e0a49b9a9c8792d9cc430d3a50e25de5c37ed620af3639edea52d6ef98f
diff --git a/extra/zathura/depends b/extra/zathura/depends
new file mode 100644 (file)
index 0000000..78975a2
--- /dev/null
@@ -0,0 +1,3 @@
+file
+girara
+pkgconf make
diff --git a/extra/zathura/files/zathura.1 b/extra/zathura/files/zathura.1
new file mode 100644 (file)
index 0000000..1f0cfb3
--- /dev/null
@@ -0,0 +1,419 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ZATHURA" "1" "2019-09-08" "0.4.4" "zathura"
+.SH NAME
+zathura \- a document viewer
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+zathura [\-e XID] [\-c PATH] [\-d PATH] [\-p PATH] [\-w PASSWORD] [\-P NUMBER]
+[\-\-fork] [\-l LEVEL] [\-s] [\-x CMD] [\-\-synctex\-forward INPUT] [\-\-synctex\-pid PID]
+<files>
+.SH DESCRIPTION
+.sp
+\fBzathura\fP displays the given files. If a single hyphen\-minus (\-) is given as
+file name, the content will be read from the standard input. If no files are
+given, an empty \fBzathura\fP instance launches.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.BI \-e\fP,\fB  \-\-reparent\fB= xid
+Reparents to window specified by xid
+.TP
+.BI \-c\fP,\fB  \-\-config\-dir\fB= path
+Path to the config directory
+.TP
+.BI \-d\fP,\fB  \-\-data\-dir\fB= path
+Path to the data directory
+.TP
+.BI \-p\fP,\fB  \-\-plugins\-dir\fB= path
+Path to the directory containing plugins
+.TP
+.BI \-w\fP,\fB  \-\-password\fB= password
+The documents password. If multiple documents are opened at once, the
+password will be used for the first one and zathura will ask for the
+passwords of the remaining files if needed.
+.TP
+.BI \-P\fP,\fB  \-\-page\fB= number
+Opens the document at the given page number. Pages are numbered starting
+with 1, and negative numbers indicate page numbers starting from the end
+of the document, \-1 being the last page.
+.TP
+.BI \-l\fP,\fB  \-\-log\-level\fB= level
+Set log level (debug, info, warning, error)
+.TP
+.BI \-x\fP,\fB  \-\-synctex\-editor\-command\fB= command
+Set the synctex editor command. Overrides the synctex\-editor\-command setting.
+.TP
+.BI \-\-synctex\-forward\fB= input
+Jump to the given position. The switch expects the same format as specified
+for synctex\(aqs view \-i. If no instance is running for the specified document,
+a new instance will be launched (only if \-\-synctex\-pid is not specified).
+.TP
+.BI \-\-synctex\-pid\fB= pid
+Instead of looking for an instance having the correct file opened, try only
+the instance with the given PID. Note that if the given PID does not have the
+correct file open or does not exist, no new instance will be spanned.
+.TP
+.BI \-\-mode\fB= mode
+Start in a non\-default mode
+.TP
+.B \-\-fork
+Fork into background
+.TP
+.B \-\-version
+Display version string and exit
+.TP
+.B \-\-help
+Display help and exit
+.UNINDENT
+.SH ENVIRONMENT VARIABLES
+.INDENT 0.0
+.TP
+.B ZATHURA_PLUGINS_PATH
+Path to the directory containing plugins. This directory is only considered if
+no other directory was specified using \-\-plugins\-dir.
+.UNINDENT
+.SH MOUSE AND KEY BINDINGS
+.sp
+General
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B J, PgDn
+Go to the next page
+.TP
+.B K, PgUp
+Go to the previous page
+.TP
+.B h, k, j, l
+Scroll to the left, down, up or right direction
+.TP
+.B Left, Down, Up, Right
+Scroll to the left, down, up or right direction
+.TP
+.B ^t, ^d, ^u, ^y
+Scroll a half page left, down, up or right
+.TP
+.B t, ^f, ^b, space, <S\-space>, y
+Scroll a full page left, down, up or right
+.TP
+.B gg, G, nG
+Goto to the first, the last or to the nth page
+.TP
+.B H, L
+Goto top or bottom of the current page
+.TP
+.B ^o, ^i
+Move backward and forward through the jump list
+.TP
+.B ^j, ^k
+Bisect forward and backward between the last two jump points
+.TP
+.B ^c, Escape
+Abort
+.TP
+.B a, s
+Adjust window in best\-fit or width mode
+.TP
+.B /, ?
+Search for text
+.TP
+.B n, N
+Search for the next or previous result
+.TP
+.B o, O
+Open document
+.TP
+.B f
+Follow links
+.TP
+.B F
+Display link target
+.TP
+.B :
+Enter command
+.TP
+.B r
+Rotate by 90 degrees
+.TP
+.B ^r
+Recolor (grayscale and invert colors)
+.TP
+.B R
+Reload document
+.TP
+.B Tab
+Show index and switch to \fBIndex mode\fP
+.TP
+.B d
+Toggle dual page view
+.TP
+.B F5
+Switch to presentation mode
+.TP
+.B F11
+Switch to fullscreen mode
+.TP
+.B ^m
+Toggle inputbar
+.TP
+.B ^n
+Toggle statusbar
+.TP
+.B +, \-, =
+Zoom in, out or to the original size
+.TP
+.B zI, zO, z0
+Zoom in, out or to the original size
+.TP
+.B n=
+Zoom to size n
+.TP
+.B mX
+Set a quickmark to a letter or number X
+.TP
+.B \(aqX
+Goto quickmark saved at letter or number X
+.TP
+.B q
+Quit
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Fullscreen mode
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B J, K
+Go to the next or previous page
+.TP
+.B space, <S\-space>, <BackSpace>
+Scroll a full page down or up
+.TP
+.B gg, G, nG
+Goto to the first, the last or to the nth page
+.TP
+.B ^c, Escape
+Abort
+.TP
+.B F11
+Switch to normal mode
+.TP
+.B +, \-, =
+Zoom in, out or to the original size
+.TP
+.B zI, zO, z0
+Zoom in, out or to the original size
+.TP
+.B n=
+Zoom to size n
+.TP
+.B q
+Quit
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Presentation mode
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B space, <S\-space>, <BackSpace>
+Scroll a full page down or up
+.TP
+.B ^c, Escape
+Abort
+.TP
+.B F5
+Switch to normal mode
+.TP
+.B q
+Quit
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Index mode
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B k, j
+Move to upper or lower entry
+.TP
+.B l
+Expand entry
+.TP
+.B L
+Expand all entries
+.TP
+.B h
+Collapse entry
+.TP
+.B H
+Collapse all entries
+.TP
+.B space, Return
+Select and open entry
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Mouse bindings
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B Scroll
+Scroll up or down
+.TP
+.B ^Scroll
+Zoom in or out
+.TP
+.B Hold Button2
+Pan the document
+.TP
+.B Button1
+Follow link
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SH COMMANDS
+.INDENT 0.0
+.TP
+.B bmark
+Save a bookmark
+.TP
+.B bdelete
+Delete a bookmark
+.TP
+.B blist
+List bookmarks
+.TP
+.B close
+Close document
+.TP
+.B exec
+Execute an external command
+.TP
+.B info
+Show document information
+.TP
+.B open
+Open a document
+.TP
+.B offset
+Set page offset
+.TP
+.B print
+Print document
+.TP
+.B write(!)
+Save document (and force overwriting)
+.TP
+.B export
+Export attachments
+.TP
+.B dump
+Write values, descriptions, etc. of all current settings to a file.
+.UNINDENT
+.SH CONFIGURATION
+.sp
+The default appearance and behaviour of zathura can be overwritten by modifying
+the \fIzathurarc\fP file (default path: ~/.config/zathura/zathurarc). For a detailed
+description please consult zathurarc(5).
+.SH SYNCTEX SUPPORT
+.sp
+Both synctex forward and backwards synchronization are supported by zathura, To
+enable synctex forward synchronization, please look at the \fI\-\-synctex\-forward\fP
+and \fI\-\-synctex\-editor\fP options. zathura will also emit a signal via the D\-Bus
+interface. To support synctex backwards synchronization, zathura provides a
+D\-Bus interface that can be called by the editor. For convince zathura also
+knows how to parse the output of the \fIsynctex view\fP command. It is enough to
+pass the arguments to \fIsynctex view\fP\(aqs \fI\-i\fP option to zathura via
+\fI\-\-synctex\-forward\fP and zathura will pass the information to the correct
+instance.
+.sp
+For gvim forward and backwards synchronization support can be set up as follows:
+First add the following to the vim configuration:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+function! Synctex()
+  execute "silent !zathura \-\-synctex\-forward " . line(\(aq.\(aq) . ":" . col(\(aq.\(aq) . ":" . bufname(\(aq%\(aq) . " " . g:syncpdf
+  redraw!
+endfunction
+map <C\-enter> :call Synctex()<cr>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Then launch \fIzathura\fP with
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+zathura \-x "gvim \-\-servername vim \-c \e"let g:syncpdf=\(aq$1\(aq\e" \-\-remote +%{line} %{input}" $file
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Some editors support zathura as viewer out of the box:
+.INDENT 0.0
+.IP \(bu 2
+LaTeXTools for SublimeText
+(\fI\%https://latextools.readthedocs.io/en/latest/available\-viewers/#zathura\fP)
+.IP \(bu 2
+LaTeX for Atom (\fI\%https://atom.io/packages/latex\fP)
+.UNINDENT
+.SH KNOWN BUGS
+.sp
+If GDK_NATIVE_WINDOWS is enabled you will experience problems with large
+documents. In this case zathura might crash or pages cannot be rendered
+properly. Disabling GDK_NATIVE_WINDOWS fixes this issue. The same issue may
+appear, if overlay\-scrollbar is enabled in GTK_MODULES.
+.SH SEE ALSO
+.sp
+\fIzathurarc(5)\fP
+.SH AUTHOR
+pwmt.org
+.SH COPYRIGHT
+2009-2018, pwmt.org
+.\" Generated by docutils manpage writer.
+.
diff --git a/extra/zathura/files/zathurarc.5 b/extra/zathura/files/zathurarc.5
new file mode 100644 (file)
index 0000000..42bb2cf
--- /dev/null
@@ -0,0 +1,1420 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ZATHURARC" "5" "2019-09-08" "0.4.4" "zathura"
+.SH NAME
+zathurarc \- zathura configuration file
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+/etc/zathurarc, $XDG_CONFIG_HOME/zathura/zathurarc
+.SH DESCRIPTION
+.sp
+The \fIzathurarc\fP file is a simple plain text file that can be populated with
+various commands to change the behaviour and the look of zathura which we are
+going to describe in the following subsections. Each line (besides empty lines
+and comments (which start with a prepended #) is evaluated on its own, so it
+is not possible to write multiple commands in one single line.
+.SH COMMANDS
+.SS set \- Changing options
+.sp
+In addition to the built\-in \fB:set\fP command zathura offers more options to be
+changed and makes those changes permanent. To overwrite an option you just have
+to add a line structured like the following
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+set <option> <new value>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The \fBoption\fP field has to be replaced with the name of the option that should be
+changed and the \fBnew value\fP field has to be replaced with the new value the
+option should get. The type of the value can be one of the following:
+.INDENT 0.0
+.IP \(bu 2
+INT \- An integer number
+.IP \(bu 2
+FLOAT \- A floating point number
+.IP \(bu 2
+STRING \- A character string
+.IP \(bu 2
+BOOL \- A boolean value ("true" for true, "false" for false)
+.UNINDENT
+.sp
+In addition we advice you to check the options to get a more detailed view of
+the options that can be changed and which values they should be set to.
+.sp
+The following example should give some deeper insight of how the \fBset\fP command
+can be used
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+set option1 5
+set option2 2.0
+set option3 hello
+set option4 hello\e world
+set option5 "hello world"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+If you want to use \fBcolor codes\fP for some options, make sure to quote them
+accordingly or to escape the hash symbol.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+set default\-fg "#CCBBCC"
+set default\-fg \e#CCBBCC
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS include \- Including another config file
+.sp
+This commands allows one to include other configuration files. If a relative
+path is given, the path will be resolved relative to the configuration file that
+is currently processed.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+include another\-config
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS map \- Mapping a shortcut
+.sp
+It is possible to map or remap new key bindings to shortcut functions which
+allows a high level of customization. The \fB:map\fP command can also be used in
+the \fIzathurarc\fP file to make those changes permanent:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+map [mode] <binding> <shortcut function> <argument>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Mode
+.sp
+The \fBmap\fP command expects several arguments where only the \fBbinding\fP as well as
+the \fBshortcut\-function\fP argument is required. Since zathura uses several modes
+it is possible to map bindings only for a specific mode by passing the \fBmode\fP
+argument which can take one of the following values:
+.INDENT 0.0
+.IP \(bu 2
+normal (default)
+.IP \(bu 2
+fullscreen
+.IP \(bu 2
+presentation
+.IP \(bu 2
+index
+.UNINDENT
+.sp
+The brackets around the value are mandatory.
+.SS Single key binding
+.sp
+The (possible) second argument defines the used key binding that should be
+mapped to the shortcut function and is structured like the following. On the one
+hand it is possible to just assign single letters, numbers or signs to it:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+map a shortcut_function optional_argument
+map b shortcut_function optional_argument
+map c shortcut_function optional_argument
+map 1 shortcut_function optional_argument
+map 2 shortcut_function optional_argument
+map 3 shortcut_function optional_argument
+map ! shortcut_function optional_argument
+map ? shortcut_function optional_argument
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Using modifiers
+.sp
+It is also possible to use modifiers like the Control or Alt button on the
+keyboard. It is possible to use the following modifiers:
+.INDENT 0.0
+.IP \(bu 2
+A \- Alt
+.IP \(bu 2
+C \- Control
+.IP \(bu 2
+S \- Shift
+.UNINDENT
+.sp
+If any of the modifiers should be used for a binding, it is required to define
+the \fBbinding\fP with the following structure:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+map <A\-a> shortcut_function
+map <C\-a> shortcut_function
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Special keys
+.sp
+zathura allows it also to assign keys like the space bar or the tab button which
+also have to be written in between angle brackets. The following special keys
+are currently available:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+Identifier Description
+
+BackSpace  Back space
+CapsLock   Caps lock
+Esc        Escape
+Down       Arrow down
+Up         Arrow up
+Left       Arrow left
+Right      Arrow right
+F1         F1
+F2         F2
+F3         F3
+F4         F4
+F5         F5
+F6         F6
+F7         F7
+F8         F8
+F9         F9
+F10        F10
+F11        F11
+F12        F12
+PageDown   Page Down
+PageUp     Page Up
+Return     Return
+Space      Space
+Super      Windows key
+Tab        Tab
+Print      Print key
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Of course it is possible to combine those special keys with a modifier. The
+usage of those keys should be explained by the following examples:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+map <Space> shortcut_function
+map <C\-Space> shortcut_function
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Mouse buttons
+.sp
+It is also possible to map mouse buttons to shortcuts by using the following
+special keys:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+Identifier Description
+
+Button1    Mouse button 1
+Button2    Mouse button 2
+Button3    Mouse button 3
+Button4    Mouse button 4
+Button5    Mouse button 5
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+They can also be combined with modifiers:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+map <Button1> shortcut_function
+map <C\-Button1> shortcut_function
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Buffer commands
+.sp
+If a mapping does not match one of the previous definition but is still a valid
+mapping it will be mapped as a buffer command:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+map abc quit
+map test quit
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Shortcut functions
+.sp
+The following shortcut functions can be mapped:
+.INDENT 0.0
+.IP \(bu 2
+\fBabort\fP
+.sp
+Switch back to normal mode.
+.IP \(bu 2
+\fBadjust_window\fP
+.sp
+Adjust page width. Possible arguments are \fBbest\-fit\fP and \fBwidth\fP\&.
+.IP \(bu 2
+\fBchange_mode\fP
+.sp
+Change current mode. Pass the desired mode as argument.
+.IP \(bu 2
+\fBdisplay_link\fP:
+.sp
+Display link target.
+.IP \(bu 2
+\fBexec\fP:
+.sp
+Execute an external command.
+.IP \(bu 2
+\fBfocus_inputbar\fP
+.sp
+Focus inputbar.
+.IP \(bu 2
+\fBfollow\fP
+.sp
+Follow a link.
+.IP \(bu 2
+\fBgoto\fP
+.sp
+Go to a certain page.
+.IP \(bu 2
+\fBjumplist\fP
+.sp
+Move forwards/backwards in the jumplist. Pass \fBforward\fP as argument to
+move to the next entry and \fBbackward\fP to move to the previous one.
+.IP \(bu 2
+\fBnavigate\fP
+.sp
+Navigate to the next/previous page.
+.IP \(bu 2
+\fBnavigate_index\fP
+.sp
+Navigate through the index.
+.IP \(bu 2
+\fBprint\fP
+.sp
+Show the print dialog.
+.IP \(bu 2
+\fBquit\fP
+.sp
+Quit zathura.
+.IP \(bu 2
+\fBrecolor\fP
+.sp
+Recolor pages.
+.IP \(bu 2
+\fBreload\fP
+.sp
+Reload the document.
+.IP \(bu 2
+\fBrotate\fP
+.sp
+Rotate the page. Pass \fBrotate\-ccw\fP as argument for counterclockwise rotation
+and \fBrotate\-cw\fP for clockwise rotation.
+.IP \(bu 2
+\fBscroll\fP
+.sp
+Scroll.
+.IP \(bu 2
+\fBsearch\fP
+.sp
+Search next/previous item. Pass \fBforward\fP as argument to search for the next
+hit and \fBbackward\fP to search for the previous hit.
+.IP \(bu 2
+\fBset\fP
+.sp
+Set an option.
+.IP \(bu 2
+\fBtoggle_fullscreen\fP
+.sp
+Toggle fullscreen.
+.IP \(bu 2
+\fBtoggle_index\fP
+.sp
+Show or hide index.
+.IP \(bu 2
+\fBtoggle_inputbar\fP
+.sp
+Show or hide inputbar.
+.IP \(bu 2
+\fBtoggle_page_mode\fP
+.sp
+Toggle between one and multiple pages per row.
+.IP \(bu 2
+\fBtoggle_statusbar\fP
+.sp
+Show or hide statusbar.
+.IP \(bu 2
+\fBzoom\fP
+.sp
+Zoom in or out.
+.IP \(bu 2
+\fBmark_add\fP
+.sp
+Set a quickmark.
+.IP \(bu 2
+\fBmark_evaluate\fP
+.sp
+Go to a quickmark.
+.IP \(bu 2
+\fBfeedkeys\fP
+.sp
+Simulate key presses. Note that all keys will be interpreted as if pressing a
+key on the keyboard. To input uppercase letters, follow the same convention as
+for key bindings, i.e. for \fBX\fP, use \fB<S\-X>\fP\&.
+.UNINDENT
+.SS Pass arguments
+.sp
+Some shortcut function require or have optional arguments which influence the
+behaviour of them. Those can be passed as the last argument:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+map <C\-i> zoom in
+map <C\-o> zoom out
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Possible arguments are:
+.INDENT 0.0
+.IP \(bu 2
+best\-fit
+.IP \(bu 2
+bottom
+.IP \(bu 2
+backward
+.IP \(bu 2
+collapse
+.IP \(bu 2
+collapse\-all
+.IP \(bu 2
+default
+.IP \(bu 2
+down
+.IP \(bu 2
+expand
+.IP \(bu 2
+expand\-all
+.IP \(bu 2
+forward
+.IP \(bu 2
+full\-down
+.IP \(bu 2
+full\-up
+.IP \(bu 2
+half\-down
+.IP \(bu 2
+half\-up
+.IP \(bu 2
+in
+.IP \(bu 2
+left
+.IP \(bu 2
+next
+.IP \(bu 2
+out
+.IP \(bu 2
+page\-bottom
+.IP \(bu 2
+page\-top
+.IP \(bu 2
+previous
+.IP \(bu 2
+right
+.IP \(bu 2
+rotate\-ccw
+.IP \(bu 2
+rotate\-cw
+.IP \(bu 2
+select
+.IP \(bu 2
+specific
+.IP \(bu 2
+toggle
+.IP \(bu 2
+top
+.IP \(bu 2
+up
+.IP \(bu 2
+width
+.UNINDENT
+.SS unmap \- Removing a shortcut
+.sp
+In addition to mapping or remaping custom key bindings it is possible to remove
+existing ones by using the \fB:unmap\fP command. The command is used in the
+following way (the explanation of the parameters is described in the \fBmap\fP
+section of this document
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+unmap [mode] <binding>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH OPTIONS
+.SS girara
+.sp
+This section describes settings concerning the behaviour of girara and
+zathura. The settings described here can be changed with \fBset\fP\&.
+.SS n\-completion\-items
+.sp
+Defines the maximum number of displayed completion entries.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 15
+.UNINDENT
+.SS completion\-bg
+.sp
+Defines the background color that is used for command line completion
+entries
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #232323
+.UNINDENT
+.SS completion\-fg
+.sp
+Defines the foreground color that is used for command line completion
+entries
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #DDDDDD
+.UNINDENT
+.SS completion\-group\-bg
+.sp
+Defines the background color that is used for command line completion
+group elements
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS completion\-group\-fg
+.sp
+Defines the foreground color that is used for command line completion
+group elements
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #DEDEDE
+.UNINDENT
+.SS completion\-highlight\-bg
+.sp
+Defines the background color that is used for the current command line
+completion element
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #9FBC00
+.UNINDENT
+.SS completion\-highlight\-fg
+.sp
+Defines the foreground color that is used for the current command line
+completion element
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #232323
+.UNINDENT
+.SS default\-fg
+.sp
+Defines the default foreground color
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #DDDDDD
+.UNINDENT
+.SS default\-bg
+.sp
+Defines the default background color
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS exec\-command
+.sp
+Defines a command the should be prepended to any command run with exec.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value:
+.UNINDENT
+.SS font
+.sp
+Defines the font that will be used
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: monospace normal 9
+.UNINDENT
+.SS guioptions
+.sp
+Shows or hides GUI elements.
+If it contains \(aqc\(aq, the command line is displayed.
+If it contains \(aqs\(aq, the statusbar is displayed.
+If it contains \(aqh\(aq, the horizontal scrollbar is displayed.
+If it contains \(aqv\(aq, the vertical scrollbar is displayed.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: s
+.UNINDENT
+.SS inputbar\-bg
+.sp
+Defines the background color for the inputbar
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #131313
+.UNINDENT
+.SS inputbar\-fg
+.sp
+Defines the foreground color for the inputbar
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #9FBC00
+.UNINDENT
+.SS notification\-bg
+.sp
+Defines the background color for a notification
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFFFFF
+.UNINDENT
+.SS notification\-fg
+.sp
+Defines the foreground color for a notification
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS notification\-error\-bg
+.sp
+Defines the background color for an error notification
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFFFFF
+.UNINDENT
+.SS notification\-error\-fg
+.sp
+Defines the foreground color for an error notification
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FF1212
+.UNINDENT
+.SS notification\-warning\-bg
+.sp
+Defines the background color for a warning notification
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFFFFF
+.UNINDENT
+.SS notification\-warning\-fg
+.sp
+Defines the foreground color for a warning notification
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFF712
+.UNINDENT
+.SS tabbar\-fg
+.sp
+Defines the foreground color for a tab
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFFFFF
+.UNINDENT
+.SS tabbar\-bg
+.sp
+Defines the background color for a tab
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS tabbar\-focus\-fg
+.sp
+Defines the foreground color for the focused tab
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #9FBC00
+.UNINDENT
+.SS tabbar\-focus\-bg
+.sp
+Defines the background color for the focused tab
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS show\-scrollbars
+.sp
+Defines if both the horizontal and vertical scrollbars should be shown or not.
+Deprecated, use \(aqguioptions\(aq instead.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS show\-h\-scrollbar
+.sp
+Defines whether to show/hide the horizontal scrollbar. Deprecated, use
+\(aqguioptions\(aq instead.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS show\-v\-scrollbar
+.sp
+Defines whether to show/hide the vertical scrollbar. Deprecated, use
+\(aqguioptions\(aq instead.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS statusbar\-bg
+.sp
+Defines the background color of the statusbar
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS statusbar\-fg
+.sp
+Defines the foreground color of the statusbar
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFFFFF
+.UNINDENT
+.SS statusbar\-h\-padding
+.sp
+Defines the horizontal padding of the statusbar and notificationbar
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 8
+.UNINDENT
+.SS statusbar\-v\-padding
+.sp
+Defines the vertical padding of the statusbar and notificationbar
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 2
+.UNINDENT
+.SS window\-icon
+.sp
+Defines the path for a icon to be used as window icon.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value:
+.UNINDENT
+.SS window\-height
+.sp
+Defines the window height on startup
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 600
+.UNINDENT
+.SS window\-width
+.sp
+Defines the window width on startup
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 800
+.UNINDENT
+.SS zathura
+.sp
+This section describes settings concerning the behaviour of zathura.
+.SS abort\-clear\-search
+.sp
+Defines if the search results should be cleared on abort.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS adjust\-open
+.sp
+Defines which auto adjustment mode should be used if a document is loaded.
+Possible options are "best\-fit" and "width".
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: best\-fit
+.UNINDENT
+.SS advance\-pages\-per\-row
+.sp
+Defines if the number of pages per row should be honored when advancing a page.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS continuous\-hist\-save
+.sp
+Tells zathura whether to save document history at each page change or only when
+closing a document.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS database
+.sp
+Defines the database backend to use for bookmarks and input history. Possible
+values are "plain", "sqlite" (if built with sqlite support) and "null". If
+"null" is used, bookmarks and input history will not be stored.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: plain
+.UNINDENT
+.SS dbus\-service
+.sp
+En/Disables the D\-Bus service. If the services is disabled, SyncTeX forward
+synchronization is not available.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS filemonitor
+.sp
+Defines the file monitor backend used to check for changes in files. Possible
+values are "glib", "signal" (if signal handling is supported), and "noop". The
+"noop" file monitor does not trigger reloads.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: glib
+.UNINDENT
+.SS incremental\-search
+.sp
+En/Disables incremental search (search while typing).
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS highlight\-color
+.sp
+Defines the color that is used for highlighting parts of the document (e.g.:
+show search results)
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #9FBC00
+.UNINDENT
+.SS highlight\-active\-color
+.sp
+Defines the color that is used to show the current selected highlighted element
+(e.g: current search result)
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #00BC00
+.UNINDENT
+.SS highlight\-transparency
+.sp
+Defines the opacity of a highlighted element
+.INDENT 0.0
+.IP \(bu 2
+Value type: Float
+.IP \(bu 2
+Default value: 0.5
+.UNINDENT
+.SS page\-padding
+.sp
+The page padding defines the gap in pixels between each rendered page.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 1
+.UNINDENT
+.SS page\-cache\-size
+.sp
+Defines the maximum number of pages that could be kept in the page cache. When
+the cache is full and a new page that isn\(aqt cached becomes visible, the least
+recently viewed page in the cache will be evicted to make room for the new one.
+Large values for this variable are NOT recommended, because this will lead to
+consuming a significant portion of the system memory.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 15
+.UNINDENT
+.SS page\-thumbnail\-size
+.sp
+Defines the maximum size in pixels of the thumbnail that could be kept in the
+thumbnail cache per page. The thumbnail is scaled for a quick preview during
+zooming before the page is rendered. When the page is rendered, the result is
+saved as the thumbnail only if the size is no more than this value. A larger
+value increases quality but introduces longer delay in zooming and uses more
+system memory.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 4194304 (4M)
+.UNINDENT
+.SS pages\-per\-row
+.sp
+Defines the number of pages that are rendered next to each other in a row.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 1
+.UNINDENT
+.SS first\-page\-column
+.sp
+Defines the column in which the first page will be displayed.
+This setting is stored separately for every value of pages\-per\-row according to
+the following pattern <1 page per row>:[<2 pages per row>[: ...]]. The last
+value in the list will be used for all other number of pages per row if not set
+explicitly.
+.sp
+Per default, the first column is set to 2 for double\-page layout, i.e. the faule
+is set to 1:2. A value of 1:1:3 would put the first page in dual\-page layour in
+the first column, and for layouts with more columns the first page would be put
+in the 3rd column.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: 1:2
+.UNINDENT
+.SS recolor
+.sp
+En/Disables recoloring
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS recolor\-keephue
+.sp
+En/Disables keeping original hue when recoloring
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS recolor\-darkcolor
+.sp
+Defines the color value that is used to represent dark colors in recoloring mode
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFFFFF
+.UNINDENT
+.SS recolor\-lightcolor
+.sp
+Defines the color value that is used to represent light colors in recoloring mode
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS recolor\-reverse\-video
+.sp
+Defines if original image colors should be kept while recoloring.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS render\-loading
+.sp
+Defines if the "Loading..." text should be displayed if a page is rendered.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS render\-loading\-bg
+.sp
+Defines the background color that is used for the "Loading..." text.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #FFFFFF
+.UNINDENT
+.SS render\-loading\-fg
+.sp
+Defines the foreground color that is used for the "Loading..." text.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #000000
+.UNINDENT
+.SS scroll\-hstep
+.sp
+Defines the horizontal step size of scrolling by calling the scroll command once
+.INDENT 0.0
+.IP \(bu 2
+Value type: Float
+.IP \(bu 2
+Default value: \-1
+.UNINDENT
+.SS scroll\-step
+.sp
+Defines the step size of scrolling by calling the scroll command once
+.INDENT 0.0
+.IP \(bu 2
+Value type: Float
+.IP \(bu 2
+Default value: 40
+.UNINDENT
+.SS scroll\-full\-overlap
+.sp
+Defines the proportion of the current viewing area that should be
+visible after scrolling a full page.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Float
+.IP \(bu 2
+Default value: 0
+.UNINDENT
+.SS scroll\-wrap
+.sp
+Defines if the last/first page should be wrapped
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS show\-directories
+.sp
+Defines if the directories should be displayed in completion.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS show\-hidden
+.sp
+Defines if hidden files and directories should be displayed in completion.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS show\-recent
+.sp
+Defines the number of recent files that should be displayed in completion.
+If the value is negative, no upper bounds are applied. If the value is 0, no
+recent files are shown.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 10
+.UNINDENT
+.SS scroll\-page\-aware
+.sp
+Defines if scrolling by half or full pages stops at page boundaries.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS link\-zoom
+.sp
+En/Disables the ability of changing zoom when following links.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS link\-hadjust
+.sp
+En/Disables aligning to the left internal link targets, for example from the
+index.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS search\-hadjust
+.sp
+En/Disables horizontally centered search results.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS window\-title\-basename
+.sp
+Use basename of the file in the window title.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS window\-title\-home\-tilde
+.sp
+Display a short version of the file path, which replaces $HOME with ~, in the window title.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS window\-title\-page
+.sp
+Display the page number in the window title.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS statusbar\-basename
+.sp
+Use basename of the file in the statusbar.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS statusbar\-home\-tilde
+.sp
+Display a short version of the file path, which replaces $HOME with ~, in the statusbar.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS zoom\-center
+.sp
+En/Disables horizontally centered zooming.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS vertical\-center
+.sp
+Center the screen at the vertical midpoint of the page by default.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS zoom\-max
+.sp
+Defines the maximum percentage that the zoom level can be.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 1000
+.UNINDENT
+.SS zoom\-min
+.sp
+Defines the minimum percentage that the zoom level can be.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 10
+.UNINDENT
+.SS zoom\-step
+.sp
+Defines the amount of percent that is zoomed in or out on each command.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Integer
+.IP \(bu 2
+Default value: 10
+.UNINDENT
+.SS selection\-clipboard
+.sp
+Defines the X clipboard into which mouse\-selected data will be written.  When it
+is "clipboard", selected data will be written to the CLIPBOARD clipboard, and
+can be pasted using the Ctrl+v key combination.  When it is "primary", selected
+data will be written to the PRIMARY clipboard, and can be pasted using the
+middle mouse button, or the Shift\-Insert key combination.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: primary
+.UNINDENT
+.SS selection\-notification
+.sp
+Defines if a notification should be displayed after selecting text.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS synctex
+.sp
+En/Disables SyncTeX backward synchronization support.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: true
+.UNINDENT
+.SS synctex\-editor\-command
+.sp
+Defines the command executed for SyncTeX backward synchronization.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value:
+.UNINDENT
+.SS index\-fg
+.sp
+Defines the foreground color of the index mode.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #DDDDDD
+.UNINDENT
+.SS index\-bg
+.sp
+Define the background color of the index mode.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #232323
+.UNINDENT
+.SS index\-active\-fg
+.sp
+Defines the foreground color of the selected element in index mode.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #232323
+.UNINDENT
+.SS index\-active\-bg
+.sp
+Define the background color of the selected element in index mode.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: #9FBC00
+.UNINDENT
+.SS sandbox
+.sp
+Defines the sandbox mode to use for the seccomp syscall filter. Possible
+values are "none", "normal" and "strict". If "none" is used, the sandbox
+will be disabled. The use of "normal" will provide minimal protection and
+allow normal use of zathura with support for all features. The "strict" mode
+is a read only sandbox that is intended for viewing documents only.
+.INDENT 0.0
+.IP \(bu 2
+Value type: String
+.IP \(bu 2
+Default value: normal
+.UNINDENT
+.sp
+Some features are disabled when using strict sandbox mode:
+.INDENT 0.0
+.IP \(bu 2
+saving/writing files
+.IP \(bu 2
+use of input methods like ibus
+.IP \(bu 2
+printing
+.IP \(bu 2
+bookmarks and history
+.UNINDENT
+.sp
+No feature regressions are expected when using normal sandbox mode.
+.sp
+When running under WSL, the default is "none" since seccomp is not supported in
+that environment.
+.SS window\-icon\-document
+.sp
+Defines whether the window document should be updated based on the first page of
+a dcument.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SS page\-right\-to\-left
+.sp
+Defines whether pages in multi\-column view should start from the right side.
+.INDENT 0.0
+.IP \(bu 2
+Value type: Boolean
+.IP \(bu 2
+Default value: false
+.UNINDENT
+.SH SEE ALSO
+.sp
+zathura(1)
+.SH AUTHOR
+pwmt.org
+.SH COPYRIGHT
+2009-2018, pwmt.org
+.\" Generated by docutils manpage writer.
+.
diff --git a/extra/zathura/patches/remove_gettext.patch b/extra/zathura/patches/remove_gettext.patch
new file mode 100644 (file)
index 0000000..d02f589
--- /dev/null
@@ -0,0 +1,39 @@
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -16,26 +16,6 @@
+   endforeach
+ endif
+-i18n = import('i18n')
+-podir = join_paths(meson.source_root(), 'po')
+-
+-desktop = i18n.merge_file('desktop',
+-  input: 'org.pwmt.zathura.desktop.in',
+-  output: 'org.pwmt.zathura.desktop',
+-  install: true,
+-  install_dir: desktopdir,
+-  po_dir: podir,
+-  type: 'desktop'
+-)
+-
+-appdata = i18n.merge_file('appdata',
+-  input: 'org.pwmt.zathura.appdata.xml.in',
+-  output: 'org.pwmt.zathura.appdata.xml',
+-  install: true,
+-  install_dir: metainfodir,
+-  po_dir: podir,
+-)
+-
+ desktop_file_validate = find_program('desktop-file-validate', required: get_option('tests'), native: true)
+ if desktop_file_validate.found()
+   test('validate-desktop',
+--- a/meson.build
++++ b/meson.build
+@@ -109,7 +109,6 @@
+ ]
+ subdir('data')
+-subdir('po')
+ # source files
+ sources = files(
diff --git a/extra/zathura/sources b/extra/zathura/sources
new file mode 100644 (file)
index 0000000..212f5ca
--- /dev/null
@@ -0,0 +1,4 @@
+https://github.com/pwmt/zathura/archive/0.4.7.tar.gz
+patches/remove_gettext.patch
+files/zathura.1
+files/zathurarc.5
diff --git a/extra/zathura/version b/extra/zathura/version
new file mode 100644 (file)
index 0000000..9de9e94
--- /dev/null
@@ -0,0 +1 @@
+0.4.7 1
index e6f1ead56e118a5aa8e799e67e9fa78e58ac85dc..eb98e929a4d2c9ce033974a6883697199e8ef3c0 100755 (executable)
@@ -3,4 +3,4 @@
 ./configure --prefix=/usr
 
 make
-make DESTDIR="$1" install
\ No newline at end of file
+make DESTDIR="$1" install
diff --git a/extra/zeromq/depends b/extra/zeromq/depends
deleted file mode 100644 (file)
index e69de29..0000000
index 0fdaf874dcf2c8b8922d7a9dcc20173c6437c9db..770656dba1d59f88c41983a96cfc1d19128a83da 100644 (file)
@@ -1 +1 @@
-https://github.com/zeromq/libzmq/releases/download/v4.3.4/zeromq-4.3.4.tar.gz
\ No newline at end of file
+https://github.com/zeromq/libzmq/releases/download/v4.3.4/zeromq-4.3.4.tar.gz
diff --git a/extra/zzz/build b/extra/zzz/build
new file mode 100755 (executable)
index 0000000..f365980
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh -e
+
+install -D zzz        "$1/usr/bin/zzz"
+install -D zzz        "$1/usr/bin/ZZZ"
+install -Dm 644 zzz.8 "$1/usr/share/man/man8/zzz.8"
diff --git a/extra/zzz/checksums b/extra/zzz/checksums
new file mode 100644 (file)
index 0000000..240ba5f
--- /dev/null
@@ -0,0 +1,2 @@
+c4324ef4150bc074b175d5482015d81a39df5b6bb9ff29e5f3d85b9caaebc177  zzz
+657f9488124179e03c67678c82b8574c664bc0d55468dc01762a10cb63b9d0ed  zzz.8
diff --git a/extra/zzz/files/zzz b/extra/zzz/files/zzz
new file mode 100755 (executable)
index 0000000..6dd903c
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/sh
+# zzz - really simple suspend script
+
+USAGE="Usage: ${0##*/} [-nSzZR]
+   -n   dry run (sleep for 5s instead of suspend/hibernate)
+   -S   Low-power idle (ACPI S0)
+   -z   suspend to RAM (ACPI S3) [DEFAULT for zzz(8)]
+   -Z   hibernate to disk & power off (ACPI S4) [DEFAULT for ZZZ(8)]
+   -R   hibernate to disk & reboot
+   -H   hibernate to disk & suspend (aka suspend-hybrid)"
+
+fail() { echo ${0##*/}: 1>&2 "$*"; exit 1; }
+
+export ZZZ_MODE=suspend
+export ZZZ_HIBERNATE_MODE=platform
+
+case "$0" in
+  *ZZZ) ZZZ_MODE=hibernate;;
+esac
+
+while getopts hnSzHRZ opt; do
+  case "$opt" in
+    n) ZZZ_MODE=noop;;
+    S) ZZZ_MODE=standby;;
+    z) ZZZ_MODE=suspend;;
+    Z) ZZZ_MODE=hibernate;;
+    R) ZZZ_MODE=hibernate; ZZZ_HIBERNATE_MODE=reboot;;
+    H) ZZZ_MODE=hibernate; ZZZ_HIBERNATE_MODE=suspend;;
+    [h?]) fail "$USAGE";;
+  esac
+done
+shift $((OPTIND-1))
+
+case "$ZZZ_MODE" in
+  suspend) grep -q mem /sys/power/state || fail "suspend not supported";;
+  hibernate) grep -q disk /sys/power/state || fail "hibernate not supported";;
+esac
+
+test -w /sys/power/state || fail "sleep permission denied"
+
+(
+flock -n 9 || fail "another instance of zzz is running"
+
+printf "Zzzz... "
+
+for hook in /etc/zzz.d/suspend/*; do
+  [ -x "$hook" ] && "$hook"
+done
+
+case "$ZZZ_MODE" in
+  standby) printf freeze >/sys/power/state || fail "standby failed";;
+  suspend) printf mem >/sys/power/state || fail "suspend failed";;
+  hibernate)
+       echo $ZZZ_HIBERNATE_MODE >/sys/power/disk
+       printf disk >/sys/power/state || fail "hibernate failed";;
+  noop) sleep 5;;
+esac
+
+for hook in /etc/zzz.d/resume/*; do
+  [ -x "$hook" ] && "$hook"
+done
+
+echo "yawn."
+) 9</sys/power
diff --git a/extra/zzz/files/zzz.8 b/extra/zzz/files/zzz.8
new file mode 100644 (file)
index 0000000..27c9032
--- /dev/null
@@ -0,0 +1,94 @@
+.Dd July 25, 2014
+.Dt ZZZ 8
+.Os Linux
+.Sh NAME
+.Nm zzz ,
+.Nm ZZZ
+.Nd suspend or hibernate your computer
+.Sh SYNOPSIS
+.Nm zzz
+.Op Fl nSzZRH
+.Nm ZZZ
+.Op Fl nSzZRH
+.Sh DESCRIPTION
+.Nm
+is a simple script to suspend or hibernate your computer.
+It supports hooks before and after suspending.
+.Bl -tag -width indent
+.It Fl n
+dry-run mode.
+Instead of performing an ACPI action,
+.Nm
+will just sleep for a few seconds.
+.It Fl S
+Enter low-power idle mode (ACPI S0, kernel name "freeze").
+.It Fl z
+Enter suspend to RAM mode (ACPI S3, kernel name "mem").
+This is the default for
+.Nm zzz .
+.It Fl Z
+Enter hibernate to disk mode (ACPI S4, kernel name "disk") and power off.
+This is the default for
+.Nm ZZZ .
+.It Fl R
+Enter hibernate to disk mode and reboot.
+This can be used to switch operating systems.
+.It Fl H
+Enter hibernate to disk mode and suspend.
+This is also know as suspend-hybrid.
+.El
+.Sh FILES
+Before suspending,
+.Nm zzz
+runs the executable files in
+.Pa /etc/zzz.d/suspend
+in alphanumeric order.
+After suspending,
+.Nm zzz
+runs the executable files in
+.Pa /etc/zzz.d/resume
+in alphanumeric order (not in reverse order!).
+.Pp
+The environment variable
+.Ev ZZZ_MODE
+can be used in these hooks to differentiate between
+.Ic standby ,
+.Ic suspend ,
+and
+.Ic resume .
+.Sh DIAGNOSTICS
+.Bl -tag -width indent
+.It suspend/hibernate not supported
+The hardware does not support ACPI S3/S4 with this kernel.
+.It sleep permission denied
+You lack sufficent privilege to write to
+.Pa /sys/power/state .
+.It another instance of zzz is running
+.Nm
+locks
+.Pa /sys/power
+during operation.
+Perhaps a hook is stuck?
+.It Zzzz... yawn.
+The system has woken up again.
+Everything is fine.
+You feel refreshed.
+.Sh SEE ALSO
+.Xr pm-action 8 ,
+.Xr s2disk 8 ,
+.Xr s2ram 8 ,
+OpenBSD's
+.Xr apm 8
+.Sh HISTORY
+A similar
+.Nm apm
+command appeared in
+.Nx 1.3
+and
+.Ox 1.2 .
+.Sh AUTHOR
+.An Leah Neukirchen ,
+.Mt leah@vuxu.org .
+.Sh LICENSE
+.Nm
+is in the public domain.
diff --git a/extra/zzz/sources b/extra/zzz/sources
new file mode 100644 (file)
index 0000000..06e0ed9
--- /dev/null
@@ -0,0 +1,2 @@
+files/zzz
+files/zzz.8
diff --git a/extra/zzz/version b/extra/zzz/version
new file mode 100644 (file)
index 0000000..1f27429
--- /dev/null
@@ -0,0 +1 @@
+1 1 
diff --git a/wayland/foot/build b/wayland/foot/build
deleted file mode 100755 (executable)
index 734f125..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh -e
-
-export DESTDIR="$1"
-
-fixHead=subprojects/fcft
-install -Dm644 "$fixHead/fcft.h"   "$fixHead/fcft/fcft.h"
-install -Dm644 "$fixHead/stride.h" "$fixHead/fcft/stride.h"
-
-# Note to self: always make doc generation toggleable
-sed -i "/subdir('doc')/d" meson.build
-
-meson \
-    --prefix=/usr \
-    --buildtype=debug \
-    . build
-
-ninja -C build
-ninja -C build install
-
-# Install terminfo because duh
-mkdir -p "$1/usr/share/terminfo/f"
-
-cp build/f/foot        "$1/usr/share/terminfo/f/foot"
-cp build/f/foot-direct "$1/usr/share/terminfo/f/foot-direct"
diff --git a/wayland/foot/checksums b/wayland/foot/checksums
deleted file mode 100644 (file)
index 411e500..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-cf14050281cebb1e2e3f077b47b5800e0c70aca02c6e7350940d77a2c46af1c7
-4a8ed7e9818a391ec422ec8ee561fccf2586410c1bfc86ecc64026a5cf8bc18c
-a135934d4955902d67f75f3c542ace3bfb7be3be9c44796852e76ea9e1d82b33
diff --git a/wayland/foot/depends b/wayland/foot/depends
deleted file mode 100644 (file)
index 9c68465..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-fontconfig
-freetype-harfbuzz
-libxkbcommon
-linux-headers     make
-meson             make
-ncurses           make
-pixman
-pkgconf           make
-python            make
-samurai           make
-wayland
-wayland-protocols make
diff --git a/wayland/foot/sources b/wayland/foot/sources
deleted file mode 100644 (file)
index 816a364..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-https://codeberg.org/dnkl/foot/archive/1.5.3.tar.gz
-https://codeberg.org/dnkl/fcft/archive/2.3.1.tar.gz   subprojects/fcft
-https://codeberg.org/dnkl/tllist/archive/1.0.4.tar.gz subprojects/tllist
diff --git a/wayland/foot/version b/wayland/foot/version
deleted file mode 100644 (file)
index dae1254..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.5.3 1
diff --git a/wayland/hikari/build b/wayland/hikari/build
deleted file mode 100755 (executable)
index 639bdc5..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh -e
-
-patch -p1 < no-locker.patch
-
-bmake \
-    PREFIX=/usr \
-    ETC_PREFIX=/ \
-    WITH_POSIX_C_SOURCE=YES \
-    WITH_LAYERSHELL=YES \
-    WITH_SCREENCOPY=YES
-
-bmake PREFIX=/usr ETC_PREFIX=/ DESTDIR="$1" install
diff --git a/wayland/hikari/checksums b/wayland/hikari/checksums
deleted file mode 100644 (file)
index 2356cf3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-df9b8cb6c6b2b995a5dd4bbf32c43b374d689eabfda1620a9444d845160e4de3
-29481e0881d93518c225c744c4aa0c6baf238ef5c2536789a5dd0ce59d4bc928
diff --git a/wayland/hikari/depends b/wayland/hikari/depends
deleted file mode 100644 (file)
index 5815bd1..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-cairo
-libinput
-libucl
-libxkbcommon
-linux-headers     make
-pango
-pixman
-pkgconf           make
-wayland
-wayland-protocols make
-wlroots
-bmake make
diff --git a/wayland/hikari/patches/no-locker.patch b/wayland/hikari/patches/no-locker.patch
deleted file mode 100644 (file)
index bdcf6fe..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -177,7 +177,7 @@
- PROTOCOL_HEADERS += wlr-layer-shell-unstable-v1-protocol.h
- .endif
--all: hikari hikari-unlocker
-+all: hikari
- version.h:
-       echo "#define HIKARI_VERSION \"${VERSION}\"" >> version.h
-@@ -191,9 +191,6 @@
- wlr-layer-shell-unstable-v1-protocol.h:
-       wayland-scanner server-header protocol/wlr-layer-shell-unstable-v1.xml ${.TARGET}
--hikari-unlocker: hikari_unlocker.c
--      ${CC} ${CFLAGS_EXTRA} ${LDFLAGS_EXTRA} -o hikari-unlocker hikari_unlocker.c -lpam
--
- clean-doc:
-       @test -e _darcs && echo "cleaning manpage" ||:
-       @test -e _darcs && rm share/man/man1/hikari.1 2> /dev/null ||:
-@@ -206,7 +203,6 @@
-       @rm ${OBJS} 2> /dev/null ||:
-       @echo "cleaning executables"
-       @rm hikari 2> /dev/null ||:
--      @rm hikari-unlocker 2> /dev/null ||:
- share/man/man1/hikari.1:
-       pandoc -M title:"HIKARI(1) ${VERSION} | hikari - Wayland Compositor" -s \
-@@ -219,7 +215,6 @@
-       @tar -s "#^#hikari-${VERSION}/#" -czf hikari-${VERSION}.tar.gz \
-               version.h \
-               main.c \
--              hikari_unlocker.c \
-               include/hikari/*.h \
-               src/*.c \
-               protocol/*.xml \
-@@ -232,8 +227,7 @@
-               share/man/man1/hikari.1 \
-               share/backgrounds/hikari/hikari_wallpaper.png \
-               share/wayland-sessions/hikari.desktop \
--              etc/hikari/hikari.conf \
--              etc/pam.d/hikari-unlocker.*
-+              etc/hikari/hikari.conf
- distclean: clean-doc
-       @test -e _darcs && echo "cleaning version.h" ||:
-@@ -241,29 +235,24 @@
- dist: distclean hikari-${VERSION}.tar.gz
--install: hikari hikari-unlocker share/man/man1/hikari.1
-+install: hikari share/man/man1/hikari.1
-       mkdir -p ${DESTDIR}/${PREFIX}/bin
-       mkdir -p ${DESTDIR}/${PREFIX}/share/man/man1
-       mkdir -p ${DESTDIR}/${PREFIX}/share/backgrounds/hikari
-       mkdir -p ${DESTDIR}/${PREFIX}/share/wayland-sessions
-       mkdir -p ${DESTDIR}/${ETC_PREFIX}/etc/hikari
--      mkdir -p ${DESTDIR}/${ETC_PREFIX}/etc/pam.d
-       sed "s,PREFIX,${PREFIX}," etc/hikari/hikari.conf > ${DESTDIR}/${ETC_PREFIX}/etc/hikari/hikari.conf
-       chmod 644 ${DESTDIR}/${ETC_PREFIX}/etc/hikari/hikari.conf
-       install -m ${PERMS} hikari ${DESTDIR}/${PREFIX}/bin
--      install -m 4555 hikari-unlocker ${DESTDIR}/${PREFIX}/bin
-       install -m 644 share/man/man1/hikari.1 ${DESTDIR}/${PREFIX}/share/man/man1
-       install -m 644 share/backgrounds/hikari/hikari_wallpaper.png ${DESTDIR}/${PREFIX}/share/backgrounds/hikari/hikari_wallpaper.png
-       install -m 644 share/wayland-sessions/hikari.desktop ${DESTDIR}/${PREFIX}/share/wayland-sessions/hikari.desktop
--      install -m 644 etc/pam.d/hikari-unlocker.${OS} ${DESTDIR}/${ETC_PREFIX}/etc/pam.d/hikari-unlocker
- uninstall:
-       -rm ${DESTDIR}/${PREFIX}/bin/hikari
--      -rm ${DESTDIR}/${PREFIX}/bin/hikari-unlocker
-       -rm ${DESTDIR}/${PREFIX}/share/man/man1/hikari.1
-       -rm ${DESTDIR}/${PREFIX}/share/backgrounds/hikari/hikari_wallpaper.png
-       -rm ${DESTDIR}/${PREFIX}/share/wayland-sessions/hikari.desktop
--      -rm ${DESTDIR}/${ETC_PREFIX}/etc/pam.d/hikari-unlocker
-       -rm ${DESTDIR}/${ETC_PREFIX}/etc/hikari/hikari.conf
-       -rmdir ${DESTDIR}/${ETC_PREFIX}/etc/hikari
-       -rmdir ${DESTDIR}/${PREFIX}/share/backgrounds/hikari
diff --git a/wayland/hikari/sources b/wayland/hikari/sources
deleted file mode 100644 (file)
index 29ee12e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-https://hikari.acmelabs.space/releases/hikari-2.2.2.tar.gz
-patches/no-locker.patch
diff --git a/wayland/hikari/version b/wayland/hikari/version
deleted file mode 100644 (file)
index da648f8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2.2.2 1
diff --git a/wayland/inaban/build b/wayland/inaban/build
deleted file mode 100755 (executable)
index 88032b7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -e
-
-make PREFIX=/usr
-make PREFIX=/usr DESTDIR="$1" install
diff --git a/wayland/inaban/depends b/wayland/inaban/depends
deleted file mode 100644 (file)
index 1c4bc54..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-checkpassword
-libxkbcommon
-wayland
-wayland-protocols
-wlroots
diff --git a/wayland/inaban/sources b/wayland/inaban/sources
deleted file mode 100644 (file)
index b5f02b9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-git+https://notabug.org/lanodan/inaban
diff --git a/wayland/inaban/version b/wayland/inaban/version
deleted file mode 100644 (file)
index da65ba7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-git 1
-
diff --git a/wayland/vivarium/build b/wayland/vivarium/build
deleted file mode 100755 (executable)
index 3d828ec..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh -e
-
-sed -i \
-    -e 's|fff_dep.*||g' \
-    -e 's|unity_dep.*||g' \
-    -e 's|.*tests.*||g' \
-    meson.build
-
-for i in src/*.c; do
-    sed -i 's|.*wlr/xwayland\.h.*||g' "$i"
-done
-
-meson build \
-    --prefix=/usr \
-    --sysconfdir=/etc \
-    --buildtype=release \
-    -Dxwayland=disabled \
-    -Ddevelop=false
-DESTDIR="$1" ninja -C build install
diff --git a/wayland/vivarium/checksums b/wayland/vivarium/checksums
deleted file mode 100644 (file)
index 9e5fc05..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1c752a8c270e550cf1975f2f3ad99fdf5e03e7e53fe0834cfc641cd72d09b2ad
diff --git a/wayland/vivarium/depends b/wayland/vivarium/depends
deleted file mode 100644 (file)
index 3825e51..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-libinput
-libxkbcommon
-pixman
-wayland-protocols
-wlroots
diff --git a/wayland/vivarium/sources b/wayland/vivarium/sources
deleted file mode 100644 (file)
index 711d76f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/inclement/vivarium/archive/refs/tags/v0.0.3.tar.gz
\ No newline at end of file
diff --git a/wayland/vivarium/version b/wayland/vivarium/version
deleted file mode 100644 (file)
index 54a3452..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-0.0.3 1
-
diff --git a/wayland/wayland-protocols/build b/wayland/wayland-protocols/build
deleted file mode 100755 (executable)
index 58479e8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh -e
-
-./configure \
-       --prefix=/usr
-
-make DESTDIR="$1" install
diff --git a/wayland/wayland-protocols/checksums b/wayland/wayland-protocols/checksums
deleted file mode 100644 (file)
index 3a63d59..0000000
+++ /dev/null
@@ -1 +0,0 @@
-b99945842d8be18817c26ee77dafa157883af89268e15f4a5a1a1ff3ffa4cde5
diff --git a/wayland/wayland-protocols/depends b/wayland/wayland-protocols/depends
deleted file mode 100644 (file)
index ab60f1a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-wayland make
diff --git a/wayland/wayland-protocols/sources b/wayland/wayland-protocols/sources
deleted file mode 100644 (file)
index 5ae0197..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://wayland.freedesktop.org/releases/wayland-protocols-1.21.tar.xz
diff --git a/wayland/wayland-protocols/version b/wayland/wayland-protocols/version
deleted file mode 100644 (file)
index 2cdfb39..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.21 1
diff --git a/wayland/wayland/build b/wayland/wayland/build
deleted file mode 100755 (executable)
index e705d0b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh -e
-
-./configure \
-    --prefix=/usr \
-    --enable-static \
-    --disable-dtd-validation \
-    --disable-documentation
-
-make
-make DESTDIR="$1" install
diff --git a/wayland/wayland/checksums b/wayland/wayland/checksums
deleted file mode 100644 (file)
index 24aea1c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-baccd902300d354581cd5ad3cc49daa4921d55fb416a5883e218750fef166d15
diff --git a/wayland/wayland/depends b/wayland/wayland/depends
deleted file mode 100644 (file)
index 0d49137..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-expat
-flex    make
-libffi
-pkgconf make
diff --git a/wayland/wayland/sources b/wayland/wayland/sources
deleted file mode 100644 (file)
index 9e20a50..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://wayland.freedesktop.org/releases/wayland-1.19.0.tar.xz
diff --git a/wayland/wayland/version b/wayland/wayland/version
deleted file mode 100644 (file)
index 0d6bfe8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.19.0 1
diff --git a/wayland/wlroots/build b/wayland/wlroots/build
deleted file mode 100755 (executable)
index e8864f1..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh -e
-
-export DESTDIR="$1"
-
-meson \
-       --prefix=/usr \
-       --buildtype=release \
-       -Dexamples=false \
-    -Dlogind=disabled \
-    -Dxcb-errors=disabled \
-    -Dxcb-icccm=disabled \
-    -Dxwayland=disabled \
-    -Dx11-backend=disabled \
-       . build
-
-ninja -C build
-ninja -C build install
diff --git a/wayland/wlroots/checksums b/wayland/wlroots/checksums
deleted file mode 100644 (file)
index 76fb101..0000000
+++ /dev/null
@@ -1 +0,0 @@
-f6bea37fd4a6f5e5f552b83d61adae8c73e64b0bcb9ae0ab464ebcd9309d3cf3
diff --git a/wayland/wlroots/depends b/wayland/wlroots/depends
deleted file mode 100644 (file)
index 7d6b4b1..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-flex              make
-libinput
-libxkbcommon
-linux-headers     make
-mesa
-meson             make
-pixman
-pkgconf           make
-samurai           make
-wayland-protocols make
-xkeyboard-config
diff --git a/wayland/wlroots/sources b/wayland/wlroots/sources
deleted file mode 100644 (file)
index 954dc25..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/swaywm/wlroots/archive/0.13.0.tar.gz
diff --git a/wayland/wlroots/version b/wayland/wlroots/version
deleted file mode 100644 (file)
index 8a78163..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0.13.0 1
diff --git a/xorg/brightnessctl/depends b/xorg/brightnessctl/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/xorg/brownout/build b/xorg/brownout/build
new file mode 100755 (executable)
index 0000000..88032b7
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make PREFIX=/usr
+make PREFIX=/usr DESTDIR="$1" install
diff --git a/xorg/brownout/checksums b/xorg/brownout/checksums
new file mode 100644 (file)
index 0000000..2b020a4
--- /dev/null
@@ -0,0 +1 @@
+949e6fccdabc237200f4e8202b0bf38151d55f7403bb2d87d725cba0574e1a2b
diff --git a/xorg/brownout/depends b/xorg/brownout/depends
new file mode 100644 (file)
index 0000000..1cdd87c
--- /dev/null
@@ -0,0 +1,2 @@
+libX11
+libXrandr
diff --git a/xorg/brownout/sources b/xorg/brownout/sources
new file mode 100644 (file)
index 0000000..42181f9
--- /dev/null
@@ -0,0 +1 @@
+https://github.com/graupe/brownout/archive/refs/tags/v0.4.tar.gz
\ No newline at end of file
diff --git a/xorg/brownout/version b/xorg/brownout/version
new file mode 100644 (file)
index 0000000..2bea266
--- /dev/null
@@ -0,0 +1 @@
+0.4 1
diff --git a/xorg/libICE/build b/xorg/libICE/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libICE/checksums b/xorg/libICE/checksums
new file mode 100644 (file)
index 0000000..98a60cf
--- /dev/null
@@ -0,0 +1 @@
+6f86dce12cf4bcaf5c37dddd8b1b64ed2ddf1ef7b218f22b9942595fb747c348  libICE-1.0.10.tar.bz2
diff --git a/xorg/libICE/depends b/xorg/libICE/depends
new file mode 100644 (file)
index 0000000..ff0c653
--- /dev/null
@@ -0,0 +1,3 @@
+pkgconf   make
+xorgproto make
+xtrans    make
diff --git a/xorg/libICE/sources b/xorg/libICE/sources
new file mode 100644 (file)
index 0000000..1137b15
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/libICE-1.0.10.tar.bz2
diff --git a/xorg/libICE/version b/xorg/libICE/version
new file mode 100644 (file)
index 0000000..2d248d7
--- /dev/null
@@ -0,0 +1 @@
+1.0.10 1
diff --git a/xorg/libSM/build b/xorg/libSM/build
new file mode 100755 (executable)
index 0000000..801017e
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --without-libuuid
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libSM/checksums b/xorg/libSM/checksums
new file mode 100644 (file)
index 0000000..67486e6
--- /dev/null
@@ -0,0 +1 @@
+2d264499dcb05f56438dee12a1b4b71d76736ce7ba7aa6efbf15ebb113769cbb  libSM-1.2.3.tar.bz2
diff --git a/xorg/libSM/depends b/xorg/libSM/depends
new file mode 100644 (file)
index 0000000..468728d
--- /dev/null
@@ -0,0 +1,3 @@
+libICE
+pkgconf make
+xtrans  make
diff --git a/xorg/libSM/sources b/xorg/libSM/sources
new file mode 100644 (file)
index 0000000..a9b4bbe
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/libSM-1.2.3.tar.bz2
diff --git a/xorg/libSM/version b/xorg/libSM/version
new file mode 100644 (file)
index 0000000..883a7ec
--- /dev/null
@@ -0,0 +1 @@
+1.2.3 1
index d49665f6b55f022ddf8cee351709ca47c5ccb3bc..b8bed14995ba735c883433539b96da426e55bf59 100644 (file)
@@ -1 +1 @@
-0.4.5 2
+0.4.5 1
index 9d7d10ab7548131b8cb0ebfc0baedf15d92b40c2..8b9a47f0cf67cc0ab23b6643818c4ae049a95170 100644 (file)
@@ -1 +1 @@
-1.2.0 2
+1.2.0 1
index 89d25d21947e8f5e9b6d3811c43a109a6f8085d8..3d29560aa255f3427070a3297eae876f74185740 100644 (file)
@@ -1 +1 @@
-1.1.5 2
+1.1.5 1
index d289440a7aa441de2ce8a4db8a244b4b183b6d68..737bdf4967f47112582fd9b97e1464dc218b6c6b 100644 (file)
@@ -1 +1 @@
-1.3.4 2
+1.3.4 1
index 6377cbbdc8076ebc3ca8b85ad91e820fe98f399b..b1465b7136d3930516ace12fafa60ac02c9bfdfc 100644 (file)
@@ -1 +1 @@
-0.9.10 2
+0.9.10 1
diff --git a/xorg/libfontenc/build b/xorg/libfontenc/build
new file mode 100755 (executable)
index 0000000..b1980f7
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --with-fontrootdir=/usr/share/fonts/X11
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libfontenc/checksums b/xorg/libfontenc/checksums
new file mode 100644 (file)
index 0000000..23248ab
--- /dev/null
@@ -0,0 +1 @@
+2cfcce810ddd48f2e5dc658d28c1808e86dcf303eaff16728b9aa3dbc0092079  libfontenc-1.1.4.tar.bz2
diff --git a/xorg/libfontenc/depends b/xorg/libfontenc/depends
new file mode 100644 (file)
index 0000000..d60ad15
--- /dev/null
@@ -0,0 +1,3 @@
+pkgconf   make
+xorgproto make
+zlib
diff --git a/xorg/libfontenc/sources b/xorg/libfontenc/sources
new file mode 100644 (file)
index 0000000..db937a3
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/libfontenc-1.1.4.tar.bz2
diff --git a/xorg/libfontenc/version b/xorg/libfontenc/version
new file mode 100644 (file)
index 0000000..b01ca96
--- /dev/null
@@ -0,0 +1 @@
+1.1.4 1
diff --git a/xorg/libpciaccess/build b/xorg/libpciaccess/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libpciaccess/checksums b/xorg/libpciaccess/checksums
new file mode 100644 (file)
index 0000000..3e2c8c1
--- /dev/null
@@ -0,0 +1 @@
+214c9d0d884fdd7375ec8da8dcb91a8d3169f263294c9a90c575bf1938b9f489  libpciaccess-0.16.tar.bz2
diff --git a/xorg/libpciaccess/sources b/xorg/libpciaccess/sources
new file mode 100644 (file)
index 0000000..e2d1679
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/libpciaccess-0.16.tar.bz2
diff --git a/xorg/libpciaccess/version b/xorg/libpciaccess/version
new file mode 100644 (file)
index 0000000..06da242
--- /dev/null
@@ -0,0 +1 @@
+0.16 1
diff --git a/xorg/libxcb/build b/xorg/libxcb/build
new file mode 100755 (executable)
index 0000000..285ad90
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+sed -i 's/pthread-stubs //' configure
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libxcb/checksums b/xorg/libxcb/checksums
new file mode 100644 (file)
index 0000000..0d257af
--- /dev/null
@@ -0,0 +1 @@
+a55ed6db98d43469801262d81dc2572ed124edc3db31059d4e9916eb9f844c34  libxcb-1.14.tar.xz
diff --git a/xorg/libxcb/depends b/xorg/libxcb/depends
new file mode 100644 (file)
index 0000000..5e13142
--- /dev/null
@@ -0,0 +1,5 @@
+libXau
+pkgconf make
+python  make
+xcb-proto
+xorg-util-macros
diff --git a/xorg/libxcb/sources b/xorg/libxcb/sources
new file mode 100644 (file)
index 0000000..79f6299
--- /dev/null
@@ -0,0 +1 @@
+https://xorg.freedesktop.org/archive/individual/lib/libxcb-1.14.tar.xz
diff --git a/xorg/libxcb/version b/xorg/libxcb/version
new file mode 100644 (file)
index 0000000..cfaaf4d
--- /dev/null
@@ -0,0 +1 @@
+1.14 1
index 350e4c7a5bb323d2f1d20f33273279d9c9d53fe9..a20c6f08317d1b30b0720fbe8e94fb6cc39313b3 100644 (file)
@@ -1,3 +1,3 @@
-bison   make
+byacc   make
 meson   make
 pkgconf make
index a21ffc5193f9cf3d100143ac14e90ec54e2d1b80..0a2d7f2b5c68de54f1beec2796a500ecedf53b4f 100644 (file)
@@ -1 +1 @@
-1.3.0 2
+1.3.0 1
diff --git a/xorg/libxkbfile/build b/xorg/libxkbfile/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libxkbfile/checksums b/xorg/libxkbfile/checksums
new file mode 100644 (file)
index 0000000..7320a84
--- /dev/null
@@ -0,0 +1 @@
+758dbdaa20add2db4902df0b1b7c936564b7376c02a0acd1f2a331bd334b38c7  libxkbfile-1.1.0.tar.bz2
diff --git a/xorg/libxkbfile/depends b/xorg/libxkbfile/depends
new file mode 100644 (file)
index 0000000..b3fe0df
--- /dev/null
@@ -0,0 +1,3 @@
+libX11    make
+pkgconf   make
+xorgproto make
diff --git a/xorg/libxkbfile/sources b/xorg/libxkbfile/sources
new file mode 100644 (file)
index 0000000..3421d44
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/libxkbfile-1.1.0.tar.bz2
diff --git a/xorg/libxkbfile/version b/xorg/libxkbfile/version
new file mode 100644 (file)
index 0000000..7281bb5
--- /dev/null
@@ -0,0 +1 @@
+1.1.0 1
diff --git a/xorg/libxshmfence/build b/xorg/libxshmfence/build
new file mode 100755 (executable)
index 0000000..4a70bbd
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --with-shared-memory-dir=/dev/shm
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libxshmfence/checksums b/xorg/libxshmfence/checksums
new file mode 100644 (file)
index 0000000..64031f3
--- /dev/null
@@ -0,0 +1 @@
+b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7  libxshmfence-1.3.tar.bz2
diff --git a/xorg/libxshmfence/depends b/xorg/libxshmfence/depends
new file mode 100644 (file)
index 0000000..2b5e439
--- /dev/null
@@ -0,0 +1,2 @@
+pkgconf   make
+xorgproto make
diff --git a/xorg/libxshmfence/sources b/xorg/libxshmfence/sources
new file mode 100644 (file)
index 0000000..703a3fa
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/libxshmfence-1.3.tar.bz2
diff --git a/xorg/libxshmfence/version b/xorg/libxshmfence/version
new file mode 100644 (file)
index 0000000..a37a04c
--- /dev/null
@@ -0,0 +1 @@
+1.3 1
diff --git a/xorg/pixman/build b/xorg/pixman/build
new file mode 100755 (executable)
index 0000000..cb0b1bf
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-gtk
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/pixman/checksums b/xorg/pixman/checksums
new file mode 100644 (file)
index 0000000..8df09aa
--- /dev/null
@@ -0,0 +1 @@
+da8ed9fe2d1c5ef8ce5d1207992db959226bd4e37e3f88acf908fd9a71e2704e  pixman-0.40.0.tar.xz
diff --git a/xorg/pixman/sources b/xorg/pixman/sources
new file mode 100644 (file)
index 0000000..3b4975d
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/pixman-0.40.0.tar.xz
diff --git a/xorg/pixman/version b/xorg/pixman/version
new file mode 100644 (file)
index 0000000..950c002
--- /dev/null
@@ -0,0 +1 @@
+0.40.0 1
diff --git a/xorg/redshift/build b/xorg/redshift/build
deleted file mode 100755 (executable)
index b3864b6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/sh -e
-
-./configure --prefix="/usr" \
-   --with-systemduserunitdir=no
-
-make PREFIX=/usr
-make PREFIX=/usr DESTDIR="$1" install
diff --git a/xorg/redshift/checksums b/xorg/redshift/checksums
deleted file mode 100644 (file)
index 0df0618..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5111145773f1ade10c5967c531f8c1938b42171399bf48126db10162a04b4a48
diff --git a/xorg/redshift/depends b/xorg/redshift/depends
deleted file mode 100644 (file)
index 1dca2ab..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-gettext-tiny make
-intltool make
-libxcb
diff --git a/xorg/redshift/sources b/xorg/redshift/sources
deleted file mode 100644 (file)
index c6498c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/jonls/redshift/releases/download/v1.12/redshift-1.12.tar.gz
diff --git a/xorg/redshift/version b/xorg/redshift/version
deleted file mode 100644 (file)
index 0b0e6ad..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.12 2
index a563df9819592d1bd8397785350231efe4e2e3f8..485497d9e42a5aa4740c176b7748cccee47192ba 100755 (executable)
@@ -6,4 +6,4 @@ make PREFIX=/usr DESTDIR="$1" install
 
 mkdir -p "$1/etc/spectrwm"
 install -Dm644 ../spectrwm.conf "$1/etc/spectrwm/"
-install -Dm644 ../spectrwm_us.conf "$1/etc/spectrwm/"
\ No newline at end of file
+install -Dm644 ../spectrwm_us.conf "$1/etc/spectrwm/"
index 0cf3a7adedeeb40e5ee1f12380224b3aa0cc4f35..2248b8b23b0e73a400bf589979a593fc37f797ad 100755 (executable)
@@ -1,4 +1,4 @@
 #!/usr/bin/env sh
 
 printf %s "the default config files will not work because
-they hard depend on dmenu and terminus-font."
\ No newline at end of file
+they hard depend on dmenu and terminus-font."
diff --git a/xorg/sx/build b/xorg/sx/build
new file mode 100755 (executable)
index 0000000..0837405
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+make PREFIX=/usr DESTDIR="$1" install
diff --git a/xorg/sx/checksums b/xorg/sx/checksums
new file mode 100644 (file)
index 0000000..1a1158f
--- /dev/null
@@ -0,0 +1 @@
+git  git+https://github.com/Earnestly/sx
diff --git a/xorg/sx/depends b/xorg/sx/depends
new file mode 100644 (file)
index 0000000..b856c14
--- /dev/null
@@ -0,0 +1,2 @@
+xauth
+xorg-server
diff --git a/xorg/sx/sources b/xorg/sx/sources
new file mode 100644 (file)
index 0000000..72f0dfc
--- /dev/null
@@ -0,0 +1 @@
+git+https://github.com/Earnestly/sx
diff --git a/xorg/sx/version b/xorg/sx/version
new file mode 100644 (file)
index 0000000..a383ea1
--- /dev/null
@@ -0,0 +1 @@
+git 1
index 154ba13d69244a5e48f05d70c1e42ea2546f6b88..f76d83463a7263ba0243b10559a993d39ffc7683 100644 (file)
@@ -1 +1 @@
-1.2 2
+1.2 1
diff --git a/xorg/xcb-util/build b/xorg/xcb-util/build
new file mode 100755 (executable)
index 0000000..7ca84fc
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xcb-util/checksums b/xorg/xcb-util/checksums
new file mode 100644 (file)
index 0000000..8e6359c
--- /dev/null
@@ -0,0 +1 @@
+46e49469cb3b594af1d33176cd7565def2be3fa8be4371d62271fabb5eae50e9  xcb-util-0.4.0.tar.bz2
diff --git a/xorg/xcb-util/depends b/xorg/xcb-util/depends
new file mode 100644 (file)
index 0000000..5fae28c
--- /dev/null
@@ -0,0 +1,3 @@
+libXau
+libxcb
+pkgconf make
diff --git a/xorg/xcb-util/sources b/xorg/xcb-util/sources
new file mode 100644 (file)
index 0000000..630c138
--- /dev/null
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/xcb-util-0.4.0.tar.bz2
diff --git a/xorg/xcb-util/version b/xorg/xcb-util/version
new file mode 100644 (file)
index 0000000..6f3c0f7
--- /dev/null
@@ -0,0 +1 @@
+0.4.0 1
diff --git a/xorg/xf86-input-libinput/build b/xorg/xf86-input-libinput/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xf86-input-libinput/checksums b/xorg/xf86-input-libinput/checksums
new file mode 100644 (file)
index 0000000..8774011
--- /dev/null
@@ -0,0 +1 @@
+e11d2a41419124a6e9b148f1df181bf7819fc7398c8ee9a1b6390b0742c68d16
diff --git a/xorg/xf86-input-libinput/depends b/xorg/xf86-input-libinput/depends
new file mode 100644 (file)
index 0000000..cd0f7ac
--- /dev/null
@@ -0,0 +1,4 @@
+libinput
+linux-headers make
+pkgconf       make
+xorg-server
diff --git a/xorg/xf86-input-libinput/sources b/xorg/xf86-input-libinput/sources
new file mode 100644 (file)
index 0000000..f852654
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/driver/xf86-input-libinput-1.1.0.tar.bz2
diff --git a/xorg/xf86-input-libinput/version b/xorg/xf86-input-libinput/version
new file mode 100644 (file)
index 0000000..7281bb5
--- /dev/null
@@ -0,0 +1 @@
+1.1.0 1
index 6516996d4d0a63762b0f152f7472bdc67143e28a..53a13283fd3d611ecb064cc18b2dd7cd9aea0cf0 100644 (file)
@@ -11,4 +11,4 @@ https://xorg.freedesktop.org/releases/individual/font/font-misc-misc-1.1.2.tar.b
 https://xorg.freedesktop.org/releases/individual/font/font-mutt-misc-1.0.3.tar.bz2       mutt
 https://xorg.freedesktop.org/releases/individual/font/font-schumacher-misc-1.1.2.tar.bz2 schumacher
 https://xorg.freedesktop.org/releases/individual/font/font-sony-misc-1.0.3.tar.bz2       sony
-https://xorg.freedesktop.org/releases/individual/font/font-sun-misc-1.0.3.tar.bz2        sun
\ No newline at end of file
+https://xorg.freedesktop.org/releases/individual/font/font-sun-misc-1.0.3.tar.bz2        sun
index 9bf24e044f46724e06c99a5e0bc38de480990923..dff83cc22f8b4f0744bdee3041d7cd4e364a8a27 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 
 # Give Xorg setgid to /dev/input.
-chown :input "$KISS_ROOT/usr/bin/Xorg"
-chmod g+s    "$KISS_ROOT/usr/bin/Xorg"
+chown :input "$ASD_ROOT/usr/bin/Xorg"
+chmod g+s    "$ASD_ROOT/usr/bin/Xorg"
 
 cat <<EOF
 
@@ -10,9 +10,9 @@ NOTE: You must be a part of the \e[1mvideo\e[m group
       for rootless xorg-server to work.
 
 NOTE: This groups based permissions model may not
-      be suitable if KISS will be used as a multi
-      user system. Further configuration can be
-      done at your own discretion.
+      be suitable if this install will be used as a
+      multi user system. Further configuration can
+      be done at your own discretion.
 
 -> addgroup USER video
 
diff --git a/xorg/xorg-util-macros/depends b/xorg/xorg-util-macros/depends
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/xorg/xorgproto/build b/xorg/xorgproto/build
new file mode 100755 (executable)
index 0000000..20f084f
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr \
+    --enable-legacy
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xorgproto/checksums b/xorg/xorgproto/checksums
new file mode 100644 (file)
index 0000000..d8706a6
--- /dev/null
@@ -0,0 +1 @@
+c38878053179c6f8bc2daeeeeb4710b5fbf0e46db5b3134aee4a1977ffb06e7a
diff --git a/xorg/xorgproto/sources b/xorg/xorgproto/sources
new file mode 100644 (file)
index 0000000..fe1c709
--- /dev/null
@@ -0,0 +1 @@
+https://xorg.freedesktop.org/archive/individual/proto/xorgproto-2021.4.99.2.tar.bz2
diff --git a/xorg/xorgproto/version b/xorg/xorgproto/version
new file mode 100644 (file)
index 0000000..fcb959f
--- /dev/null
@@ -0,0 +1 @@
+2021.4.99.2 1
index 9d7d10ab7548131b8cb0ebfc0baedf15d92b40c2..8b9a47f0cf67cc0ab23b6643818c4ae049a95170 100644 (file)
@@ -1 +1 @@
-1.2.0 2
+1.2.0 1
diff --git a/xorg/xtrans/build b/xorg/xtrans/build
new file mode 100755 (executable)
index 0000000..6daf22f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+    --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xtrans/checksums b/xorg/xtrans/checksums
new file mode 100644 (file)
index 0000000..7d58cad
--- /dev/null
@@ -0,0 +1 @@
+377c4491593c417946efcd2c7600d1e62639f7a8bbca391887e2c4679807d773  xtrans-1.4.0.tar.bz2
diff --git a/xorg/xtrans/depends b/xorg/xtrans/depends
new file mode 100644 (file)
index 0000000..5e737b4
--- /dev/null
@@ -0,0 +1 @@
+pkgconf make
diff --git a/xorg/xtrans/sources b/xorg/xtrans/sources
new file mode 100644 (file)
index 0000000..c8c9fc9
--- /dev/null
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/xtrans-1.4.0.tar.bz2
diff --git a/xorg/xtrans/version b/xorg/xtrans/version
new file mode 100644 (file)
index 0000000..bf41768
--- /dev/null
@@ -0,0 +1 @@
+1.4.0 1