aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LICENSE22
-rw-r--r--README18
-rwxr-xr-xcore/baselayout/build60
-rw-r--r--core/baselayout/checksums13
-rw-r--r--core/baselayout/depends3
-rw-r--r--core/baselayout/files/crypttab13
-rw-r--r--core/baselayout/files/fstab4
-rw-r--r--core/baselayout/files/group27
-rw-r--r--core/baselayout/files/host.conf4
-rw-r--r--core/baselayout/files/hosts10
-rw-r--r--core/baselayout/files/issue1
-rw-r--r--core/baselayout/files/mime.types1918
-rw-r--r--core/baselayout/files/os-release6
-rw-r--r--core/baselayout/files/passwd2
-rw-r--r--core/baselayout/files/profile16
-rw-r--r--core/baselayout/files/securetty26
-rw-r--r--core/baselayout/files/shadow1
-rw-r--r--core/baselayout/files/shells4
-rw-r--r--core/baselayout/sources13
-rw-r--r--core/baselayout/version1
-rwxr-xr-xcore/binutils/build14
-rw-r--r--core/binutils/checksums1
-rw-r--r--core/binutils/depends3
-rw-r--r--core/binutils/sources1
-rw-r--r--core/binutils/version1
-rwxr-xr-xcore/bison/build7
-rw-r--r--core/bison/checksums1
-rw-r--r--core/bison/depends2
-rw-r--r--core/bison/sources1
-rw-r--r--core/bison/version1
-rwxr-xr-xcore/busybox/build35
-rw-r--r--core/busybox/checksums1
-rw-r--r--core/busybox/depends4
-rw-r--r--core/busybox/files/.config1175
-rw-r--r--core/busybox/files/.config-suid1159
-rw-r--r--core/busybox/files/acpid.run2
-rw-r--r--core/busybox/sources6
-rw-r--r--core/busybox/version1
-rwxr-xr-xcore/bzip2/build20
-rw-r--r--core/bzip2/checksums1
-rw-r--r--core/bzip2/sources1
-rw-r--r--core/bzip2/version1
-rwxr-xr-xcore/carbs-init/build6
-rw-r--r--core/carbs-init/checksums1
-rwxr-xr-xcore/carbs-init/post-install13
-rw-r--r--core/carbs-init/sources1
-rw-r--r--core/carbs-init/version1
-rwxr-xr-xcore/curl/build18
-rw-r--r--core/curl/checksums1
-rw-r--r--core/curl/depends3
-rw-r--r--core/curl/sources1
-rw-r--r--core/curl/version1
-rwxr-xr-xcore/dhcpcd/build14
-rw-r--r--core/dhcpcd/checksums2
-rw-r--r--core/dhcpcd/files/dhcpcd.run2
-rw-r--r--core/dhcpcd/sources2
-rw-r--r--core/dhcpcd/version1
-rwxr-xr-xcore/e2fsprogs/build19
-rw-r--r--core/e2fsprogs/checksums1
-rw-r--r--core/e2fsprogs/depends3
-rw-r--r--core/e2fsprogs/sources1
-rw-r--r--core/e2fsprogs/version1
-rwxr-xr-xcore/eudev/build14
-rw-r--r--core/eudev/checksums2
-rw-r--r--core/eudev/depends2
-rw-r--r--core/eudev/files/udevd.run2
-rw-r--r--core/eudev/sources2
-rw-r--r--core/eudev/version1
-rwxr-xr-xcore/gcc/build52
-rw-r--r--core/gcc/checksums5
-rw-r--r--core/gcc/depends5
-rw-r--r--core/gcc/files/c992
-rw-r--r--core/gcc/sources5
-rw-r--r--core/gcc/version1
-rwxr-xr-xcore/git/build22
-rw-r--r--core/git/checksums1
-rw-r--r--core/git/depends3
-rw-r--r--core/git/sources1
-rw-r--r--core/git/version1
-rwxr-xr-xcore/grub/build38
-rw-r--r--core/grub/checksums2
-rw-r--r--core/grub/depends6
-rw-r--r--core/grub/files/grub.default53
-rw-r--r--core/grub/sources2
-rw-r--r--core/grub/version1
-rwxr-xr-xcore/gzip/build7
-rw-r--r--core/gzip/checksums1
-rw-r--r--core/gzip/sources1
-rw-r--r--core/gzip/version1
-rwxr-xr-xcore/kiss-utils/build7
-rw-r--r--core/kiss-utils/checksums1
-rw-r--r--core/kiss-utils/sources1
-rw-r--r--core/kiss-utils/version1
-rwxr-xr-xcore/kiss/build5
-rw-r--r--core/kiss/checksums2
-rw-r--r--core/kiss/depends2
-rw-r--r--core/kiss/files/kiss_path.sh1
-rw-r--r--core/kiss/sources2
-rw-r--r--core/kiss/version1
-rwxr-xr-xcore/libelf/build10
-rw-r--r--core/libelf/checksums1
-rw-r--r--core/libelf/sources1
-rw-r--r--core/libelf/version1
-rwxr-xr-xcore/libnl/build9
-rw-r--r--core/libnl/checksums1
-rw-r--r--core/libnl/sources1
-rw-r--r--core/libnl/version1
-rwxr-xr-xcore/libressl/build10
-rw-r--r--core/libressl/checksums2
-rwxr-xr-xcore/libressl/files/update-certdata.sh14
-rwxr-xr-xcore/libressl/post-install3
-rw-r--r--core/libressl/sources2
-rw-r--r--core/libressl/version1
-rwxr-xr-xcore/linux-headers/build3
-rw-r--r--core/linux-headers/checksums1
-rw-r--r--core/linux-headers/sources1
-rw-r--r--core/linux-headers/version1
-rwxr-xr-xcore/m4/build7
-rw-r--r--core/m4/checksums1
-rw-r--r--core/m4/sources1
-rw-r--r--core/m4/version1
-rwxr-xr-xcore/make/build7
-rw-r--r--core/make/checksums1
-rw-r--r--core/make/sources1
-rw-r--r--core/make/version1
-rwxr-xr-xcore/mandoc/build25
-rw-r--r--core/mandoc/checksums1
-rw-r--r--core/mandoc/depends1
-rw-r--r--core/mandoc/sources1
-rw-r--r--core/mandoc/version1
-rwxr-xr-xcore/musl/build19
-rw-r--r--core/musl/checksums5
-rwxr-xr-xcore/musl/files/cdefs.h26
-rw-r--r--core/musl/files/getconf.c338
-rwxr-xr-xcore/musl/files/queue.h846
-rwxr-xr-xcore/musl/files/tree.h761
-rw-r--r--core/musl/sources5
-rw-r--r--core/musl/version1
-rwxr-xr-xcore/perl/build43
-rw-r--r--core/perl/checksums1
-rw-r--r--core/perl/depends2
-rw-r--r--core/perl/sources1
-rw-r--r--core/perl/version1
-rwxr-xr-xcore/pkgconf/build10
-rw-r--r--core/pkgconf/checksums1
-rw-r--r--core/pkgconf/sources1
-rw-r--r--core/pkgconf/version1
-rwxr-xr-xcore/rsync/build10
-rw-r--r--core/rsync/checksums1
-rw-r--r--core/rsync/depends1
-rw-r--r--core/rsync/sources1
-rw-r--r--core/rsync/version1
-rwxr-xr-xcore/wpa_supplicant/build6
-rw-r--r--core/wpa_supplicant/checksums2
-rw-r--r--core/wpa_supplicant/depends3
-rw-r--r--core/wpa_supplicant/files/.config550
-rw-r--r--core/wpa_supplicant/sources2
-rw-r--r--core/wpa_supplicant/version1
-rwxr-xr-xcore/xz/build7
-rw-r--r--core/xz/checksums1
-rw-r--r--core/xz/sources1
-rw-r--r--core/xz/version1
-rwxr-xr-xcore/zlib/build9
-rw-r--r--core/zlib/checksums1
-rw-r--r--core/zlib/sources1
-rw-r--r--core/zlib/version1
-rwxr-xr-xextra/alsa-lib/build8
-rw-r--r--extra/alsa-lib/checksums1
-rw-r--r--extra/alsa-lib/sources1
-rw-r--r--extra/alsa-lib/version1
-rwxr-xr-xextra/alsa-utils/build11
-rw-r--r--extra/alsa-utils/checksums1
-rw-r--r--extra/alsa-utils/depends2
-rw-r--r--extra/alsa-utils/sources1
-rw-r--r--extra/alsa-utils/version1
-rwxr-xr-xextra/atk/build14
-rw-r--r--extra/atk/checksums1
-rw-r--r--extra/atk/depends3
-rw-r--r--extra/atk/sources1
-rw-r--r--extra/atk/version1
-rwxr-xr-xextra/autoconf/build7
-rw-r--r--extra/autoconf/checksums1
-rw-r--r--extra/autoconf/depends2
-rw-r--r--extra/autoconf/sources1
-rw-r--r--extra/autoconf/version1
-rwxr-xr-xextra/automake/build7
-rw-r--r--extra/automake/checksums1
-rw-r--r--extra/automake/depends2
-rw-r--r--extra/automake/sources1
-rw-r--r--extra/automake/version1
-rwxr-xr-xextra/cbindgen/build10
-rw-r--r--extra/cbindgen/checksums1
-rw-r--r--extra/cbindgen/depends1
-rw-r--r--extra/cbindgen/sources1
-rw-r--r--extra/cbindgen/version1
-rwxr-xr-xextra/ccache/build21
-rw-r--r--extra/ccache/checksums1
-rw-r--r--extra/ccache/depends1
-rwxr-xr-xextra/ccache/post-install10
-rw-r--r--extra/ccache/sources1
-rw-r--r--extra/ccache/version1
-rwxr-xr-xextra/clang/build17
-rw-r--r--extra/clang/checksums1
-rw-r--r--extra/clang/depends5
-rw-r--r--extra/clang/sources1
-rw-r--r--extra/clang/version1
-rwxr-xr-xextra/cmake/build38
-rw-r--r--extra/cmake/checksums1
-rw-r--r--extra/cmake/depends5
-rw-r--r--extra/cmake/sources1
-rw-r--r--extra/cmake/version1
-rwxr-xr-xextra/cryptsetup/build12
-rw-r--r--extra/cryptsetup/checksums1
-rw-r--r--extra/cryptsetup/depends4
-rw-r--r--extra/cryptsetup/sources1
-rw-r--r--extra/cryptsetup/version1
-rwxr-xr-xextra/efibootmgr/build10
-rw-r--r--extra/efibootmgr/checksums2
-rw-r--r--extra/efibootmgr/depends2
-rw-r--r--extra/efibootmgr/patches/efivar.patch14
-rw-r--r--extra/efibootmgr/sources2
-rw-r--r--extra/efibootmgr/version1
-rwxr-xr-xextra/efivar/build17
-rw-r--r--extra/efivar/checksums3
-rw-r--r--extra/efivar/patches/fix-gcc9-dp.h.patch56
-rw-r--r--extra/efivar/patches/fix-gcc9.patch168
-rw-r--r--extra/efivar/sources3
-rw-r--r--extra/efivar/version1
-rwxr-xr-xextra/expat/build7
-rw-r--r--extra/expat/checksums1
-rw-r--r--extra/expat/sources1
-rw-r--r--extra/expat/version1
-rwxr-xr-xextra/ffmpeg/build25
-rw-r--r--extra/ffmpeg/checksums1
-rw-r--r--extra/ffmpeg/depends15
-rw-r--r--extra/ffmpeg/sources1
-rw-r--r--extra/ffmpeg/version1
-rwxr-xr-xextra/firefox/build42
-rw-r--r--extra/firefox/checksums15
-rw-r--r--extra/firefox/depends53
-rw-r--r--extra/firefox/files/mozconfig59
-rw-r--r--extra/firefox/files/policies.json21
-rw-r--r--extra/firefox/files/stab.h71
-rw-r--r--extra/firefox/files/vendor.js619
-rw-r--r--extra/firefox/patches/firefox-71-no-accessibility.patch13
-rw-r--r--extra/firefox/patches/firefox-71-no-dbus.patch425
-rw-r--r--extra/firefox/patches/fix-fortify-system-wrappers.patch13
-rw-r--r--extra/firefox/patches/fix-sandbox-membarrier.patch54
-rw-r--r--extra/firefox/patches/fix-seccomp-bpf.patch14
-rw-r--r--extra/firefox/patches/fix-toolkit.patch90
-rw-r--r--extra/firefox/patches/fix-tools.patch37
-rw-r--r--extra/firefox/patches/fix-webrtc-glibcisms.patch20
-rw-r--r--extra/firefox/patches/mallinfo.patch34
-rw-r--r--extra/firefox/sources15
-rw-r--r--extra/firefox/version1
-rwxr-xr-xextra/fribidi/build7
-rw-r--r--extra/fribidi/checksums1
-rw-r--r--extra/fribidi/sources1
-rw-r--r--extra/fribidi/version1
-rwxr-xr-xextra/giflib/build4
-rw-r--r--extra/giflib/checksums1
-rw-r--r--extra/giflib/sources1
-rw-r--r--extra/giflib/version1
-rwxr-xr-xextra/glib/build18
-rw-r--r--extra/glib/checksums1
-rw-r--r--extra/glib/depends4
-rw-r--r--extra/glib/sources1
-rw-r--r--extra/glib/version1
-rwxr-xr-xextra/gnupg1/build9
-rw-r--r--extra/gnupg1/checksums1
-rw-r--r--extra/gnupg1/depends4
-rw-r--r--extra/gnupg1/sources1
-rw-r--r--extra/gnupg1/version1
-rwxr-xr-xextra/gperf/build7
-rw-r--r--extra/gperf/checksums1
-rw-r--r--extra/gperf/sources1
-rw-r--r--extra/gperf/version1
-rwxr-xr-xextra/json-c/build7
-rw-r--r--extra/json-c/checksums1
-rw-r--r--extra/json-c/depends1
-rw-r--r--extra/json-c/sources1
-rw-r--r--extra/json-c/version1
-rwxr-xr-xextra/lame/build9
-rw-r--r--extra/lame/checksums1
-rw-r--r--extra/lame/depends1
-rw-r--r--extra/lame/sources1
-rw-r--r--extra/lame/version1
-rwxr-xr-xextra/libaio/build4
-rw-r--r--extra/libaio/checksums1
-rw-r--r--extra/libaio/sources1
-rw-r--r--extra/libaio/version1
-rwxr-xr-xextra/libass/build8
-rw-r--r--extra/libass/checksums1
-rw-r--r--extra/libass/depends6
-rw-r--r--extra/libass/sources1
-rw-r--r--extra/libass/version1
-rwxr-xr-xextra/libffi/build17
-rw-r--r--extra/libffi/checksums1
-rw-r--r--extra/libffi/sources1
-rw-r--r--extra/libffi/version1
-rwxr-xr-xextra/libjpeg-turbo/build13
-rw-r--r--extra/libjpeg-turbo/checksums1
-rw-r--r--extra/libjpeg-turbo/depends2
-rw-r--r--extra/libjpeg-turbo/sources1
-rw-r--r--extra/libjpeg-turbo/version1
-rwxr-xr-xextra/libogg/build7
-rw-r--r--extra/libogg/checksums1
-rw-r--r--extra/libogg/sources1
-rw-r--r--extra/libogg/version1
-rwxr-xr-xextra/libpng/build9
-rw-r--r--extra/libpng/checksums2
-rw-r--r--extra/libpng/depends1
-rw-r--r--extra/libpng/patches/libpng-1.6.37-apng.patch1728
-rw-r--r--extra/libpng/sources2
-rw-r--r--extra/libpng/version1
-rwxr-xr-xextra/libtheora/build9
-rw-r--r--extra/libtheora/checksums2
-rw-r--r--extra/libtheora/depends1
-rw-r--r--extra/libtheora/patches/libtheora-1.1.1-libpng16.patch17
-rw-r--r--extra/libtheora/sources2
-rw-r--r--extra/libtheora/version1
-rwxr-xr-xextra/libtool/build7
-rw-r--r--extra/libtool/checksums1
-rw-r--r--extra/libtool/depends1
-rw-r--r--extra/libtool/sources1
-rw-r--r--extra/libtool/version1
-rwxr-xr-xextra/libvorbis/build7
-rw-r--r--extra/libvorbis/checksums1
-rw-r--r--extra/libvorbis/depends1
-rw-r--r--extra/libvorbis/sources1
-rw-r--r--extra/libvorbis/version1
-rwxr-xr-xextra/libvpx/build23
-rw-r--r--extra/libvpx/checksums2
-rw-r--r--extra/libvpx/depends2
-rw-r--r--extra/libvpx/patches/fix-busybox-diff.patch13
-rw-r--r--extra/libvpx/sources2
-rw-r--r--extra/libvpx/version1
-rwxr-xr-xextra/libwebp/build11
-rw-r--r--extra/libwebp/checksums1
-rw-r--r--extra/libwebp/depends3
-rw-r--r--extra/libwebp/sources1
-rw-r--r--extra/libwebp/version1
-rwxr-xr-xextra/libxml2/build11
-rw-r--r--extra/libxml2/checksums1
-rw-r--r--extra/libxml2/depends2
-rw-r--r--extra/libxml2/sources1
-rw-r--r--extra/libxml2/version1
-rwxr-xr-xextra/llvm/build19
-rw-r--r--extra/llvm/checksums1
-rw-r--r--extra/llvm/depends3
-rw-r--r--extra/llvm/sources1
-rw-r--r--extra/llvm/version1
-rwxr-xr-xextra/lvm2/build41
-rw-r--r--extra/lvm2/checksums3
-rw-r--r--extra/lvm2/depends3
-rw-r--r--extra/lvm2/patches/disable-symver.patch136
-rw-r--r--extra/lvm2/patches/fix-stdio-usage.patch58
-rw-r--r--extra/lvm2/sources3
-rw-r--r--extra/lvm2/version1
-rwxr-xr-xextra/meson/build7
-rw-r--r--extra/meson/checksums1
-rw-r--r--extra/meson/depends2
-rw-r--r--extra/meson/sources1
-rw-r--r--extra/meson/version1
-rwxr-xr-xextra/mpv/build13
-rw-r--r--extra/mpv/checksums2
-rw-r--r--extra/mpv/depends9
-rw-r--r--extra/mpv/sources2
-rw-r--r--extra/mpv/version1
-rwxr-xr-xextra/nasm/build7
-rw-r--r--extra/nasm/checksums1
-rw-r--r--extra/nasm/depends1
-rw-r--r--extra/nasm/sources1
-rw-r--r--extra/nasm/version1
-rwxr-xr-xextra/ncurses/build21
-rw-r--r--extra/ncurses/checksums1
-rw-r--r--extra/ncurses/sources1
-rw-r--r--extra/ncurses/version1
-rwxr-xr-xextra/nodejs/build10
-rw-r--r--extra/nodejs/checksums1
-rw-r--r--extra/nodejs/depends1
-rw-r--r--extra/nodejs/sources1
-rw-r--r--extra/nodejs/version1
-rwxr-xr-xextra/openssh/build25
-rw-r--r--extra/openssh/checksums2
-rw-r--r--extra/openssh/depends2
-rw-r--r--extra/openssh/files/sshd.run3
-rw-r--r--extra/openssh/sources2
-rw-r--r--extra/openssh/version1
-rwxr-xr-xextra/opus/build9
-rw-r--r--extra/opus/checksums1
-rw-r--r--extra/opus/sources1
-rw-r--r--extra/opus/version1
-rwxr-xr-xextra/popt/build7
-rw-r--r--extra/popt/checksums1
-rw-r--r--extra/popt/sources1
-rw-r--r--extra/popt/version1
-rwxr-xr-xextra/python/build19
-rw-r--r--extra/python/checksums2
-rw-r--r--extra/python/depends5
-rw-r--r--extra/python/patches/python3-always-pip.patch13
-rw-r--r--extra/python/sources2
-rw-r--r--extra/python/version1
-rwxr-xr-xextra/python2/build14
-rw-r--r--extra/python2/checksums1
-rw-r--r--extra/python2/depends3
-rw-r--r--extra/python2/sources1
-rw-r--r--extra/python2/version1
-rwxr-xr-xextra/rust/build56
-rw-r--r--extra/rust/checksums5
-rw-r--r--extra/rust/depends7
-rw-r--r--extra/rust/patches/musl-libressl.patch128
-rw-r--r--extra/rust/sources5
-rw-r--r--extra/rust/version1
-rwxr-xr-xextra/samurai/build6
-rw-r--r--extra/samurai/checksums1
-rw-r--r--extra/samurai/sources1
-rw-r--r--extra/samurai/version1
-rwxr-xr-xextra/shared-mime-info/build54
-rw-r--r--extra/shared-mime-info/checksums1
-rw-r--r--extra/shared-mime-info/depends4
-rwxr-xr-xextra/shared-mime-info/post-install3
-rw-r--r--extra/shared-mime-info/sources1
-rw-r--r--extra/shared-mime-info/version1
-rwxr-xr-xextra/sqlite/build12
-rw-r--r--extra/sqlite/checksums1
-rw-r--r--extra/sqlite/depends1
-rw-r--r--extra/sqlite/sources1
-rw-r--r--extra/sqlite/version1
-rwxr-xr-xextra/sudo/build20
-rw-r--r--extra/sudo/checksums1
-rw-r--r--extra/sudo/depends1
-rw-r--r--extra/sudo/sources1
-rw-r--r--extra/sudo/version1
-rwxr-xr-xextra/tiff/build9
-rw-r--r--extra/tiff/checksums1
-rw-r--r--extra/tiff/depends3
-rw-r--r--extra/tiff/sources1
-rw-r--r--extra/tiff/version1
-rwxr-xr-xextra/tzdata/build13
-rw-r--r--extra/tzdata/checksums1
-rw-r--r--extra/tzdata/sources1
-rw-r--r--extra/tzdata/version1
-rwxr-xr-xextra/vim/build21
-rw-r--r--extra/vim/checksums1
-rw-r--r--extra/vim/depends1
-rw-r--r--extra/vim/sources1
-rw-r--r--extra/vim/version1
-rwxr-xr-xextra/x264/build13
-rw-r--r--extra/x264/checksums2
-rw-r--r--extra/x264/depends2
-rw-r--r--extra/x264/patches/x264-no-bash.patch222
-rw-r--r--extra/x264/sources2
-rw-r--r--extra/x264/version1
-rwxr-xr-xextra/x265/build10
-rw-r--r--extra/x265/checksums1
-rw-r--r--extra/x265/depends2
-rw-r--r--extra/x265/sources1
-rw-r--r--extra/x265/version1
-rwxr-xr-xextra/xvidcore/build9
-rw-r--r--extra/xvidcore/checksums1
-rw-r--r--extra/xvidcore/depends1
-rw-r--r--extra/xvidcore/sources1
-rw-r--r--extra/xvidcore/version1
-rwxr-xr-xextra/yasm/build7
-rw-r--r--extra/yasm/checksums1
-rw-r--r--extra/yasm/sources1
-rw-r--r--extra/yasm/version1
-rwxr-xr-xextra/zip/build12
-rw-r--r--extra/zip/checksums1
-rw-r--r--extra/zip/depends1
-rw-r--r--extra/zip/sources1
-rw-r--r--extra/zip/version1
-rwxr-xr-xxorg/cairo/build22
-rw-r--r--xorg/cairo/checksums1
-rw-r--r--xorg/cairo/depends9
-rw-r--r--xorg/cairo/sources1
-rw-r--r--xorg/cairo/version1
-rwxr-xr-xxorg/fontconfig/build10
-rw-r--r--xorg/fontconfig/checksums1
-rw-r--r--xorg/fontconfig/depends3
-rwxr-xr-xxorg/fontconfig/post-install3
-rw-r--r--xorg/fontconfig/sources1
-rw-r--r--xorg/fontconfig/version1
-rwxr-xr-xxorg/freetype-harfbuzz/build40
-rw-r--r--xorg/freetype-harfbuzz/checksums2
-rw-r--r--xorg/freetype-harfbuzz/depends17
-rw-r--r--xorg/freetype-harfbuzz/sources2
-rw-r--r--xorg/freetype-harfbuzz/version1
-rwxr-xr-xxorg/gdk-pixbuf/build19
-rw-r--r--xorg/gdk-pixbuf/checksums1
-rw-r--r--xorg/gdk-pixbuf/depends5
-rwxr-xr-xxorg/gdk-pixbuf/post-install3
-rw-r--r--xorg/gdk-pixbuf/sources1
-rw-r--r--xorg/gdk-pixbuf/version1
-rwxr-xr-xxorg/gtk+2/build18
-rw-r--r--xorg/gtk+2/checksums1
-rw-r--r--xorg/gtk+2/depends10
-rw-r--r--xorg/gtk+2/sources1
-rw-r--r--xorg/gtk+2/version1
-rwxr-xr-xxorg/gtk+3/build31
-rw-r--r--xorg/gtk+3/checksums1
-rw-r--r--xorg/gtk+3/depends15
-rwxr-xr-xxorg/gtk+3/post-install3
-rw-r--r--xorg/gtk+3/sources1
-rw-r--r--xorg/gtk+3/version1
-rwxr-xr-xxorg/hicolor-icon-theme/build6
-rw-r--r--xorg/hicolor-icon-theme/checksums1
-rw-r--r--xorg/hicolor-icon-theme/sources1
-rw-r--r--xorg/hicolor-icon-theme/version1
-rwxr-xr-xxorg/libICE/build7
-rw-r--r--xorg/libICE/checksums1
-rw-r--r--xorg/libICE/depends2
-rw-r--r--xorg/libICE/sources1
-rw-r--r--xorg/libICE/version1
-rwxr-xr-xxorg/libSM/build7
-rw-r--r--xorg/libSM/checksums1
-rw-r--r--xorg/libSM/depends3
-rw-r--r--xorg/libSM/sources1
-rw-r--r--xorg/libSM/version1
-rwxr-xr-xxorg/libX11/build13
-rw-r--r--xorg/libX11/checksums1
-rw-r--r--xorg/libX11/depends4
-rw-r--r--xorg/libX11/sources1
-rw-r--r--xorg/libX11/version1
-rwxr-xr-xxorg/libXScrnSaver/build8
-rw-r--r--xorg/libXScrnSaver/checksums1
-rw-r--r--xorg/libXScrnSaver/depends3
-rw-r--r--xorg/libXScrnSaver/sources1
-rw-r--r--xorg/libXScrnSaver/version1
-rwxr-xr-xxorg/libXau/build7
-rw-r--r--xorg/libXau/checksums1
-rw-r--r--xorg/libXau/depends1
-rw-r--r--xorg/libXau/sources1
-rw-r--r--xorg/libXau/version1
-rwxr-xr-xxorg/libXcomposite/build7
-rw-r--r--xorg/libXcomposite/checksums1
-rw-r--r--xorg/libXcomposite/depends2
-rw-r--r--xorg/libXcomposite/sources1
-rw-r--r--xorg/libXcomposite/version1
-rwxr-xr-xxorg/libXcursor/build7
-rw-r--r--xorg/libXcursor/checksums1
-rw-r--r--xorg/libXcursor/depends3
-rw-r--r--xorg/libXcursor/sources1
-rw-r--r--xorg/libXcursor/version1
-rwxr-xr-xxorg/libXdamage/build7
-rw-r--r--xorg/libXdamage/checksums1
-rw-r--r--xorg/libXdamage/depends3
-rw-r--r--xorg/libXdamage/sources1
-rw-r--r--xorg/libXdamage/version1
-rwxr-xr-xxorg/libXext/build7
-rw-r--r--xorg/libXext/checksums1
-rw-r--r--xorg/libXext/depends2
-rw-r--r--xorg/libXext/sources1
-rw-r--r--xorg/libXext/version1
-rwxr-xr-xxorg/libXfixes/build7
-rw-r--r--xorg/libXfixes/checksums1
-rw-r--r--xorg/libXfixes/sources1
-rw-r--r--xorg/libXfixes/version1
-rwxr-xr-xxorg/libXfont2/build7
-rw-r--r--xorg/libXfont2/checksums1
-rw-r--r--xorg/libXfont2/depends4
-rw-r--r--xorg/libXfont2/sources1
-rw-r--r--xorg/libXfont2/version1
-rwxr-xr-xxorg/libXft/build7
-rw-r--r--xorg/libXft/checksums1
-rw-r--r--xorg/libXft/depends4
-rw-r--r--xorg/libXft/sources1
-rw-r--r--xorg/libXft/version1
-rwxr-xr-xxorg/libXi/build8
-rw-r--r--xorg/libXi/checksums1
-rw-r--r--xorg/libXi/depends3
-rw-r--r--xorg/libXi/sources1
-rw-r--r--xorg/libXi/version1
-rwxr-xr-xxorg/libXinerama/build8
-rw-r--r--xorg/libXinerama/checksums1
-rw-r--r--xorg/libXinerama/depends2
-rw-r--r--xorg/libXinerama/sources1
-rw-r--r--xorg/libXinerama/version1
-rwxr-xr-xxorg/libXmu/build8
-rw-r--r--xorg/libXmu/checksums1
-rw-r--r--xorg/libXmu/depends3
-rw-r--r--xorg/libXmu/sources1
-rw-r--r--xorg/libXmu/version1
-rwxr-xr-xxorg/libXrandr/build7
-rw-r--r--xorg/libXrandr/checksums1
-rw-r--r--xorg/libXrandr/depends3
-rw-r--r--xorg/libXrandr/sources1
-rw-r--r--xorg/libXrandr/version1
-rwxr-xr-xxorg/libXrender/build7
-rw-r--r--xorg/libXrender/checksums1
-rw-r--r--xorg/libXrender/depends2
-rw-r--r--xorg/libXrender/sources1
-rw-r--r--xorg/libXrender/version1
-rwxr-xr-xxorg/libXt/build8
-rw-r--r--xorg/libXt/checksums1
-rw-r--r--xorg/libXt/depends3
-rw-r--r--xorg/libXt/sources1
-rw-r--r--xorg/libXt/version1
-rwxr-xr-xxorg/libXxf86vm/build7
-rw-r--r--xorg/libXxf86vm/checksums1
-rw-r--r--xorg/libXxf86vm/depends2
-rw-r--r--xorg/libXxf86vm/sources1
-rw-r--r--xorg/libXxf86vm/version1
-rwxr-xr-xxorg/libdrm/build8
-rw-r--r--xorg/libdrm/checksums1
-rw-r--r--xorg/libdrm/depends1
-rw-r--r--xorg/libdrm/sources1
-rw-r--r--xorg/libdrm/version1
-rwxr-xr-xxorg/libepoxy/build13
-rw-r--r--xorg/libepoxy/checksums1
-rw-r--r--xorg/libepoxy/depends2
-rw-r--r--xorg/libepoxy/sources1
-rw-r--r--xorg/libepoxy/version1
-rwxr-xr-xxorg/libevdev/build8
-rw-r--r--xorg/libevdev/checksums1
-rw-r--r--xorg/libevdev/depends2
-rw-r--r--xorg/libevdev/sources1
-rw-r--r--xorg/libevdev/version1
-rwxr-xr-xxorg/libfontenc/build8
-rw-r--r--xorg/libfontenc/checksums1
-rw-r--r--xorg/libfontenc/depends2
-rw-r--r--xorg/libfontenc/sources1
-rw-r--r--xorg/libfontenc/version1
-rwxr-xr-xxorg/libinput/build16
-rw-r--r--xorg/libinput/checksums1
-rw-r--r--xorg/libinput/depends4
-rwxr-xr-xxorg/libinput/post-install17
-rw-r--r--xorg/libinput/sources1
-rw-r--r--xorg/libinput/version1
-rwxr-xr-xxorg/libpciaccess/build7
-rw-r--r--xorg/libpciaccess/checksums1
-rw-r--r--xorg/libpciaccess/sources1
-rw-r--r--xorg/libpciaccess/version1
-rwxr-xr-xxorg/libxcb/build9
-rw-r--r--xorg/libxcb/checksums1
-rw-r--r--xorg/libxcb/depends3
-rw-r--r--xorg/libxcb/sources1
-rw-r--r--xorg/libxcb/version1
-rwxr-xr-xxorg/libxkbfile/build7
-rw-r--r--xorg/libxkbfile/checksums1
-rw-r--r--xorg/libxkbfile/depends2
-rw-r--r--xorg/libxkbfile/sources1
-rw-r--r--xorg/libxkbfile/version1
-rwxr-xr-xxorg/libxshmfence/build8
-rw-r--r--xorg/libxshmfence/checksums1
-rw-r--r--xorg/libxshmfence/depends1
-rw-r--r--xorg/libxshmfence/sources1
-rw-r--r--xorg/libxshmfence/version1
-rwxr-xr-xxorg/mesa/build16
-rw-r--r--xorg/mesa/checksums1
-rw-r--r--xorg/mesa/depends19
-rw-r--r--xorg/mesa/sources1
-rw-r--r--xorg/mesa/version1
-rwxr-xr-xxorg/mtdev/build7
-rw-r--r--xorg/mtdev/checksums1
-rw-r--r--xorg/mtdev/sources1
-rw-r--r--xorg/mtdev/version1
-rwxr-xr-xxorg/pango/build17
-rw-r--r--xorg/pango/checksums1
-rw-r--r--xorg/pango/depends8
-rw-r--r--xorg/pango/sources1
-rw-r--r--xorg/pango/version1
-rwxr-xr-xxorg/pixman/build8
-rw-r--r--xorg/pixman/checksums1
-rw-r--r--xorg/pixman/sources1
-rw-r--r--xorg/pixman/version1
-rwxr-xr-xxorg/python-mako/build6
-rw-r--r--xorg/python-mako/checksums1
-rw-r--r--xorg/python-mako/depends1
-rw-r--r--xorg/python-mako/sources1
-rw-r--r--xorg/python-mako/version1
-rwxr-xr-xxorg/setxkbmap/build9
-rw-r--r--xorg/setxkbmap/checksums1
-rw-r--r--xorg/setxkbmap/depends2
-rw-r--r--xorg/setxkbmap/sources1
-rw-r--r--xorg/setxkbmap/version1
-rwxr-xr-xxorg/sowm/build4
-rw-r--r--xorg/sowm/checksums1
-rw-r--r--xorg/sowm/depends1
-rw-r--r--xorg/sowm/sources1
-rw-r--r--xorg/sowm/version1
-rwxr-xr-xxorg/st/build6
-rw-r--r--xorg/st/checksums1
-rw-r--r--xorg/st/depends4
-rw-r--r--xorg/st/sources1
-rw-r--r--xorg/st/version1
-rwxr-xr-xxorg/xbitmaps/build10
-rw-r--r--xorg/xbitmaps/checksums1
-rw-r--r--xorg/xbitmaps/depends1
-rw-r--r--xorg/xbitmaps/sources1
-rw-r--r--xorg/xbitmaps/version1
-rwxr-xr-xxorg/xcb-proto/build7
-rw-r--r--xorg/xcb-proto/checksums1
-rw-r--r--xorg/xcb-proto/depends1
-rw-r--r--xorg/xcb-proto/sources1
-rw-r--r--xorg/xcb-proto/version1
-rwxr-xr-xxorg/xcb-util-cursor/build8
-rw-r--r--xorg/xcb-util-cursor/checksums1
-rw-r--r--xorg/xcb-util-cursor/depends5
-rw-r--r--xorg/xcb-util-cursor/sources1
-rw-r--r--xorg/xcb-util-cursor/version1
-rwxr-xr-xxorg/xcb-util-image/build8
-rw-r--r--xorg/xcb-util-image/checksums1
-rw-r--r--xorg/xcb-util-image/depends3
-rw-r--r--xorg/xcb-util-image/sources1
-rw-r--r--xorg/xcb-util-image/version1
-rwxr-xr-xxorg/xcb-util-keysyms/build8
-rw-r--r--xorg/xcb-util-keysyms/checksums1
-rw-r--r--xorg/xcb-util-keysyms/depends2
-rw-r--r--xorg/xcb-util-keysyms/sources1
-rw-r--r--xorg/xcb-util-keysyms/version1
-rwxr-xr-xxorg/xcb-util-renderutil/build8
-rw-r--r--xorg/xcb-util-renderutil/checksums1
-rw-r--r--xorg/xcb-util-renderutil/depends2
-rw-r--r--xorg/xcb-util-renderutil/sources1
-rw-r--r--xorg/xcb-util-renderutil/version1
-rwxr-xr-xxorg/xcb-util-wm/build8
-rw-r--r--xorg/xcb-util-wm/checksums1
-rw-r--r--xorg/xcb-util-wm/depends2
-rw-r--r--xorg/xcb-util-wm/sources1
-rw-r--r--xorg/xcb-util-wm/version1
-rwxr-xr-xxorg/xcb-util/build8
-rw-r--r--xorg/xcb-util/checksums1
-rw-r--r--xorg/xcb-util/depends2
-rw-r--r--xorg/xcb-util/sources1
-rw-r--r--xorg/xcb-util/version1
-rwxr-xr-xxorg/xf86-input-libinput/build7
-rw-r--r--xorg/xf86-input-libinput/checksums1
-rw-r--r--xorg/xf86-input-libinput/depends2
-rw-r--r--xorg/xf86-input-libinput/sources1
-rw-r--r--xorg/xf86-input-libinput/version1
-rwxr-xr-xxorg/xf86-video-amdgpu/build9
-rw-r--r--xorg/xf86-video-amdgpu/checksums1
-rw-r--r--xorg/xf86-video-amdgpu/depends6
-rw-r--r--xorg/xf86-video-amdgpu/sources1
-rw-r--r--xorg/xf86-video-amdgpu/version1
-rwxr-xr-xxorg/xf86-video-ati/build9
-rw-r--r--xorg/xf86-video-ati/checksums1
-rw-r--r--xorg/xf86-video-ati/depends6
-rw-r--r--xorg/xf86-video-ati/sources1
-rw-r--r--xorg/xf86-video-ati/version1
-rwxr-xr-xxorg/xf86-video-intel/build13
-rw-r--r--xorg/xf86-video-intel/checksums1
-rw-r--r--xorg/xf86-video-intel/depends10
-rw-r--r--xorg/xf86-video-intel/sources1
-rw-r--r--xorg/xf86-video-intel/version1
-rwxr-xr-xxorg/xf86-video-nouveau/build9
-rw-r--r--xorg/xf86-video-nouveau/checksums1
-rw-r--r--xorg/xf86-video-nouveau/depends3
-rw-r--r--xorg/xf86-video-nouveau/sources1
-rw-r--r--xorg/xf86-video-nouveau/version1
-rwxr-xr-xxorg/xf86-video-vesa/build9
-rw-r--r--xorg/xf86-video-vesa/checksums1
-rw-r--r--xorg/xf86-video-vesa/depends3
-rw-r--r--xorg/xf86-video-vesa/sources1
-rw-r--r--xorg/xf86-video-vesa/version1
-rwxr-xr-xxorg/xinit/build10
-rw-r--r--xorg/xinit/checksums1
-rw-r--r--xorg/xinit/depends1
-rw-r--r--xorg/xinit/sources1
-rw-r--r--xorg/xinit/version1
-rwxr-xr-xxorg/xinput/build9
-rw-r--r--xorg/xinput/checksums1
-rw-r--r--xorg/xinput/depends2
-rw-r--r--xorg/xinput/sources1
-rw-r--r--xorg/xinput/version1
-rwxr-xr-xxorg/xkbcomp/build7
-rw-r--r--xorg/xkbcomp/checksums1
-rw-r--r--xorg/xkbcomp/depends2
-rw-r--r--xorg/xkbcomp/sources1
-rw-r--r--xorg/xkbcomp/version1
-rwxr-xr-xxorg/xkeyboard-config/build9
-rw-r--r--xorg/xkeyboard-config/checksums1
-rw-r--r--xorg/xkeyboard-config/depends2
-rw-r--r--xorg/xkeyboard-config/sources1
-rw-r--r--xorg/xkeyboard-config/version1
-rwxr-xr-xxorg/xorg-server/build25
-rw-r--r--xorg/xorg-server/checksums2
-rw-r--r--xorg/xorg-server/depends24
-rw-r--r--xorg/xorg-server/patches/rootless_modesetting.patch14
-rwxr-xr-xxorg/xorg-server/post-install15
-rw-r--r--xorg/xorg-server/sources2
-rw-r--r--xorg/xorg-server/version1
-rwxr-xr-xxorg/xorg-util-macros/build7
-rw-r--r--xorg/xorg-util-macros/checksums1
-rw-r--r--xorg/xorg-util-macros/sources1
-rw-r--r--xorg/xorg-util-macros/version1
-rwxr-xr-xxorg/xorgproto/build8
-rw-r--r--xorg/xorgproto/checksums1
-rw-r--r--xorg/xorgproto/sources1
-rw-r--r--xorg/xorgproto/version1
-rwxr-xr-xxorg/xprop/build9
-rw-r--r--xorg/xprop/checksums1
-rw-r--r--xorg/xprop/depends2
-rw-r--r--xorg/xprop/sources1
-rw-r--r--xorg/xprop/version1
-rwxr-xr-xxorg/xrandr/build9
-rw-r--r--xorg/xrandr/checksums1
-rw-r--r--xorg/xrandr/depends2
-rw-r--r--xorg/xrandr/sources1
-rw-r--r--xorg/xrandr/version1
-rwxr-xr-xxorg/xrdb/build9
-rw-r--r--xorg/xrdb/checksums1
-rw-r--r--xorg/xrdb/depends3
-rw-r--r--xorg/xrdb/sources1
-rw-r--r--xorg/xrdb/version1
-rwxr-xr-xxorg/xset/build10
-rw-r--r--xorg/xset/checksums1
-rw-r--r--xorg/xset/depends2
-rw-r--r--xorg/xset/sources1
-rw-r--r--xorg/xset/version1
-rwxr-xr-xxorg/xsetroot/build9
-rw-r--r--xorg/xsetroot/checksums1
-rw-r--r--xorg/xsetroot/depends5
-rw-r--r--xorg/xsetroot/sources1
-rw-r--r--xorg/xsetroot/version1
-rwxr-xr-xxorg/xtrans/build7
-rw-r--r--xorg/xtrans/checksums1
-rw-r--r--xorg/xtrans/sources1
-rw-r--r--xorg/xtrans/version1
821 files changed, 14259 insertions, 0 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..f2c0afad
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2019 Cem Keylan
+Copyright (c) 2019 Dylan Araps
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README b/README
new file mode 100644
index 00000000..9edbad0b
--- /dev/null
+++ b/README
@@ -0,0 +1,18 @@
+Carbs Linux Repository
+======================
+
+Official Repository of Carbs Linux
+
+* Forked from Kiss Linux Repositories to fit Carbs Linux
+
+
+List of Changes
+---------------
+
+Until the repository is different enough, there
+will be a list of changes here
+
+* Removed musl libc and package fixes of musl
+* Removed baseinit
+* Added own baselayout configuration
+* Added own busybox configuration
diff --git a/core/baselayout/build b/core/baselayout/build
new file mode 100755
index 00000000..29d4fabb
--- /dev/null
+++ b/core/baselayout/build
@@ -0,0 +1,60 @@
+#!/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 lib32 share src; do
+ install -d -m755 "$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"
+install -dm 1777 "$1/var/spool/mail"
+
+ln -s spool/mail "$1/var/mail"
+ln -s ../run "$1/var/run"
+ln -s ../run/lock "$1/var/lock"
+
+# Setup /usr/local (usually for any programs installed outside package manager).
+for d in bin etc games include lib man sbin share src; do
+ install -dm 755 "$1/usr/local/$d"
+done
+
+ln -s ../man "$1/usr/local/share/man"
+
+# /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 crypttab 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
index 00000000..cc764b89
--- /dev/null
+++ b/core/baselayout/checksums
@@ -0,0 +1,13 @@
+87f84ab7389df20851fc596fd4e843ec crypttab
+e33f6dfdd61978fcb3ddf1431286e05a fstab
+f070f3a22cd7433eb61d1ee1c7744c76 group
+e946a911b1dc8bb033d035132806915c host.conf
+8b448363d1deeb95e4cd6cfafe53983e hosts
+745737da818c160ff9bb6989f9d84e9f issue
+b3c676e8b1035157c8c9cd9807e98edc mime.types
+1357ce144e8de1a19d3c9e2d9e7b8b63 os-release
+5313edb55673b79318e192dc2cf67cdd passwd
+f89a899e0cec6aeb05a6ff64a3e8d881 profile
+38ce61ba07c1238c0e2dc678339d81f0 securetty
+f64466dd77c7bec37a8b47681468211a shadow
+11c89a8d881b828e02a36cac08b4cc23 shells
diff --git a/core/baselayout/depends b/core/baselayout/depends
new file mode 100644
index 00000000..12bb11ef
--- /dev/null
+++ b/core/baselayout/depends
@@ -0,0 +1,3 @@
+busybox
+kiss
+musl
diff --git a/core/baselayout/files/crypttab b/core/baselayout/files/crypttab
new file mode 100644
index 00000000..196b0d6e
--- /dev/null
+++ b/core/baselayout/files/crypttab
@@ -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
index 00000000..903906d2
--- /dev/null
+++ b/core/baselayout/files/fstab
@@ -0,0 +1,4 @@
+# Static information about the filesystems.
+# See fstab(5) for details.
+
+# <file system> <dir> <type> <options> <dump> <pass>
diff --git a/core/baselayout/files/group b/core/baselayout/files/group
new file mode 100644
index 00000000..0797f31c
--- /dev/null
+++ b/core/baselayout/files/group
@@ -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
index 00000000..db09a07b
--- /dev/null
+++ b/core/baselayout/files/host.conf
@@ -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
index 00000000..e08b4376
--- /dev/null
+++ b/core/baselayout/files/hosts
@@ -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
index 00000000..3567c3ae
--- /dev/null
+++ b/core/baselayout/files/issue
@@ -0,0 +1 @@
+Carbs Linux \r (\l)
diff --git a/core/baselayout/files/mime.types b/core/baselayout/files/mime.types
new file mode 100644
index 00000000..8af0a167
--- /dev/null
+++ b/core/baselayout/files/mime.types
@@ -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
index 00000000..51703ba2
--- /dev/null
+++ b/core/baselayout/files/os-release
@@ -0,0 +1,6 @@
+NAME="Carbs Linux"
+PRETTY_NAME="Carbs Linux"
+ID=carbs
+BUILD_ID=rolling
+HOME_URL="https://carbslinux.org"
+DOCUMENTATION_URL="https://carbslinux.org"
diff --git a/core/baselayout/files/passwd b/core/baselayout/files/passwd
new file mode 100644
index 00000000..1edbef6c
--- /dev/null
+++ b/core/baselayout/files/passwd
@@ -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
index 00000000..8e5fcd75
--- /dev/null
+++ b/core/baselayout/files/profile
@@ -0,0 +1,16 @@
+# /etc/profile
+#
+# System wide environment and startup programs.
+
+# Set default path (/usr/sbin:/sbin:/bin included for non-KISS Linux chroots).
+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
index 00000000..70146044
--- /dev/null
+++ b/core/baselayout/files/securetty
@@ -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
index 00000000..7edfd69b
--- /dev/null
+++ b/core/baselayout/files/shadow
@@ -0,0 +1 @@
+root::14871::::::
diff --git a/core/baselayout/files/shells b/core/baselayout/files/shells
new file mode 100644
index 00000000..15eb3942
--- /dev/null
+++ b/core/baselayout/files/shells
@@ -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
index 00000000..abe0bf09
--- /dev/null
+++ b/core/baselayout/sources
@@ -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
index 00000000..2fb73a07
--- /dev/null
+++ b/core/baselayout/version
@@ -0,0 +1 @@
+1 1
diff --git a/core/binutils/build b/core/binutils/build
new file mode 100755
index 00000000..361d7126
--- /dev/null
+++ b/core/binutils/build
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --build=x86_64-pc-linux-musl \
+ --host=x86_64-pc-linux-musl \
+ --enable-targets=x86_64-pep \
+ --disable-multilib \
+ --disable-werror \
+ --with-mmap \
+ --with-system-zlib
+
+make
+make DESTDIR="$1" install
diff --git a/core/binutils/checksums b/core/binutils/checksums
new file mode 100644
index 00000000..0f6829ea
--- /dev/null
+++ b/core/binutils/checksums
@@ -0,0 +1 @@
+ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf binutils-2.33.1.tar.xz
diff --git a/core/binutils/depends b/core/binutils/depends
new file mode 100644
index 00000000..fd0e8f1f
--- /dev/null
+++ b/core/binutils/depends
@@ -0,0 +1,3 @@
+bison make
+flex
+zlib
diff --git a/core/binutils/sources b/core/binutils/sources
new file mode 100644
index 00000000..b42cb8a2
--- /dev/null
+++ b/core/binutils/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.xz
diff --git a/core/binutils/version b/core/binutils/version
new file mode 100644
index 00000000..8475917b
--- /dev/null
+++ b/core/binutils/version
@@ -0,0 +1 @@
+2.33.1 1
diff --git a/core/bison/build b/core/bison/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/core/bison/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/bison/checksums b/core/bison/checksums
new file mode 100644
index 00000000..05c5dd3d
--- /dev/null
+++ b/core/bison/checksums
@@ -0,0 +1 @@
+27d05534699735dc69e86add5b808d6cb35900ad3fd63fa82e3eb644336abfa0 bison-3.4.2.tar.xz
diff --git a/core/bison/depends b/core/bison/depends
new file mode 100644
index 00000000..3e9da3a6
--- /dev/null
+++ b/core/bison/depends
@@ -0,0 +1,2 @@
+m4
+perl make
diff --git a/core/bison/sources b/core/bison/sources
new file mode 100644
index 00000000..aad281b3
--- /dev/null
+++ b/core/bison/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/bison/bison-3.4.2.tar.xz
diff --git a/core/bison/version b/core/bison/version
new file mode 100644
index 00000000..7675fd4a
--- /dev/null
+++ b/core/bison/version
@@ -0,0 +1 @@
+3.4.2 1
diff --git a/core/busybox/build b/core/busybox/build
new file mode 100755
index 00000000..5625cecb
--- /dev/null
+++ b/core/busybox/build
@@ -0,0 +1,35 @@
+#!/bin/sh -e
+
+# Build and install regular busybox.
+# This excludes utilities which require 'suid' to function.
+make CC="${CC:-gcc}"
+make CONFIG_PREFIX="$1/usr" install
+
+# Rename the binary temporarily.
+mv "$1/usr/bin/busybox" "$1/usr/bin/busybox-nosuid"
+
+# Build and install suid busybox.
+# This _only_ includes utlities which require 'suid' to function.
+cp -f .config-suid .config
+make CC="${CC:-gcc}"
+make CONFIG_PREFIX="$1/usr" install
+
+# Aptly name the busybox binaries.
+mv "$1/usr/bin/busybox" "$1/usr/bin/busybox-suid"
+mv "$1/usr/bin/busybox-nosuid" "$1/usr/bin/busybox"
+
+# Install the non-suid symlinks.
+"$1/usr/bin/busybox" --list | while read -r bin; do
+ ln -s busybox "$1/usr/bin/$bin"
+done
+
+# Install the suid symlinks.
+"$1/usr/bin/busybox-suid" --list | while read -r bin; do
+ ln -s busybox-suid "$1/usr/bin/$bin"
+done
+
+# Set suid on busybox suid.
+chmod u+s "$1/usr/bin/busybox-suid"
+
+# Install runit services
+install -Dm755 acpid.run "$1/etc/sv/acpid/run"
diff --git a/core/busybox/checksums b/core/busybox/checksums
new file mode 100644
index 00000000..580af57b
--- /dev/null
+++ b/core/busybox/checksums
@@ -0,0 +1 @@
+d0f940a72f648943c1f2211e0e3117387c31d765137d92bd8284a3fb9752a998 busybox-1.31.1.tar.bz2
diff --git a/core/busybox/depends b/core/busybox/depends
new file mode 100644
index 00000000..49b59d3f
--- /dev/null
+++ b/core/busybox/depends
@@ -0,0 +1,4 @@
+bzip2
+gzip
+libressl make
+linux-headers make
diff --git a/core/busybox/files/.config b/core/busybox/files/.config
new file mode 100644
index 00000000..afb1ee48
--- /dev/null
+++ b/core/busybox/files/.config
@@ -0,0 +1,1175 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.31.1
+# Mon Dec 9 15:00:50 2019
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Settings
+#
+CONFIG_DESKTOP=y
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEDORA_COMPAT is not set
+CONFIG_INCLUDE_SUSv2=y
+CONFIG_LONG_OPTS=y
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_LFS=y
+# CONFIG_PAM is not set
+CONFIG_FEATURE_DEVPTS=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_PID_FILE_PATH="/var/run"
+CONFIG_BUSYBOX=y
+CONFIG_FEATURE_SHOW_SCRIPT=y
+CONFIG_FEATURE_INSTALLER=y
+# CONFIG_INSTALL_NO_USR is not set
+# CONFIG_FEATURE_SUID is not set
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SYSLOG_INFO=y
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_PLATFORM_LINUX=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_SYSROOT=""
+CONFIG_EXTRA_CFLAGS=""
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+CONFIG_USE_PORTABLE_CODE=y
+CONFIG_STACK_OPTIMIZATION_386=y
+
+#
+# Installation Options ("make install" behavior)
+#
+# CONFIG_INSTALL_APPLET_SYMLINKS is not set
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+CONFIG_INSTALL_APPLET_DONT=y
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_DEBUG_SANITIZE is not set
+# CONFIG_UNIT_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Library Tuning
+#
+# CONFIG_FEATURE_USE_BSS_TAIL is not set
+# CONFIG_FLOAT_DURATION is not set
+# CONFIG_FEATURE_RTMINMAX is not set
+# CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SMALL=1
+CONFIG_SHA3_SMALL=1
+CONFIG_FEATURE_FAST_TOP=y
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+# CONFIG_FEATURE_ETC_SERVICES is not set
+# CONFIG_FEATURE_EDITING is not set
+CONFIG_FEATURE_EDITING_MAX_LEN=0
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=0
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
+# CONFIG_FEATURE_REVERSE_SEARCH is not set
+# CONFIG_FEATURE_TAB_COMPLETION is not set
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
+# CONFIG_FEATURE_EDITING_WINCH is not set
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+# CONFIG_LOCALE_SUPPORT is not set
+CONFIG_UNICODE_SUPPORT=y
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=63
+CONFIG_LAST_SUPPORTED_WCHAR=767
+CONFIG_UNICODE_COMBINING_WCHARS=y
+CONFIG_UNICODE_WIDE_WCHARS=y
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+# CONFIG_UNICODE_PRESERVE_BROKEN is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_USE_SENDFILE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_FEATURE_SKIP_ROOTFS=y
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+CONFIG_FEATURE_HWIB=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_FEATURE_SEAMLESS_XZ=y
+CONFIG_FEATURE_SEAMLESS_LZMA=y
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+# CONFIG_AR is not set
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+# CONFIG_FEATURE_AR_CREATE is not set
+# CONFIG_UNCOMPRESS is not set
+CONFIG_GUNZIP=y
+# CONFIG_ZCAT is not set
+CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
+CONFIG_BUNZIP2=y
+# CONFIG_BZCAT is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_LZCAT is not set
+# CONFIG_LZMA is not set
+CONFIG_UNXZ=y
+# CONFIG_XZCAT is not set
+CONFIG_XZ=y
+CONFIG_BZIP2=y
+CONFIG_BZIP2_SMALL=8
+CONFIG_FEATURE_BZIP2_DECOMPRESS=y
+# CONFIG_CPIO is not set
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+CONFIG_GZIP=y
+CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+CONFIG_GZIP_FAST=0
+# CONFIG_FEATURE_GZIP_LEVELS is not set
+CONFIG_FEATURE_GZIP_DECOMPRESS=y
+# CONFIG_LZOP is not set
+# CONFIG_UNLZOP is not set
+# CONFIG_LZOPCAT is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM is not set
+# CONFIG_RPM2CPIO is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_TO_COMMAND=y
+CONFIG_FEATURE_TAR_UNAME_GNAME=y
+CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
+# CONFIG_FEATURE_TAR_SELINUX is not set
+CONFIG_UNZIP=y
+CONFIG_FEATURE_UNZIP_CDF=y
+CONFIG_FEATURE_UNZIP_BZIP2=y
+CONFIG_FEATURE_UNZIP_LZMA=y
+CONFIG_FEATURE_UNZIP_XZ=y
+# CONFIG_FEATURE_LZMA_FAST is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAT=y
+CONFIG_FEATURE_CATN=y
+# CONFIG_FEATURE_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_FEATURE_CP_LONG_OPTIONS=y
+CONFIG_FEATURE_CP_REFLINK=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_FEATURE_DATE_NANO=y
+CONFIG_FEATURE_DATE_COMPAT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_FEATURE_DD_STATUS=y
+CONFIG_DF=y
+CONFIG_FEATURE_DF_FANCY=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_EXPAND=y
+CONFIG_UNEXPAND=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FACTOR=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_GROUPS=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LINK=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_WIDTH=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
+CONFIG_SHA512SUM=y
+CONFIG_SHA3SUM=y
+
+#
+# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+CONFIG_MKDIR=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MKTEMP=y
+CONFIG_MV=y
+CONFIG_NICE=y
+CONFIG_NL=y
+CONFIG_NOHUP=y
+CONFIG_NPROC=y
+CONFIG_OD=y
+CONFIG_PASTE=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+CONFIG_SHRED=y
+CONFIG_SHUF=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_FEATURE_STAT_FILESYSTEM=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_FEATURE_SYNC_FANCY=y
+CONFIG_FSYNC=y
+CONFIG_TAC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_TEST1=y
+CONFIG_TEST2=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TIMEOUT=y
+CONFIG_TOUCH=y
+CONFIG_FEATURE_TOUCH_NODEREF=y
+CONFIG_FEATURE_TOUCH_SUSV3=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TRUNCATE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNAME_OSNAME="Carbs Linux"
+CONFIG_BB_ARCH=y
+CONFIG_UNIQ=y
+CONFIG_UNLINK=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_BASE64=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_W=y
+CONFIG_USERS=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options
+#
+CONFIG_FEATURE_VERBOSE=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+# CONFIG_FGCONSOLE is not set
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_SETFONT=y
+CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y
+CONFIG_DEFAULT_SETFONT_DIR=""
+
+#
+# Common options for loadfont and setfont
+#
+CONFIG_FEATURE_LOADFONT_PSF2=y
+CONFIG_FEATURE_LOADFONT_RAW=y
+CONFIG_LOADKMAP=y
+# CONFIG_OPENVT is not set
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+# CONFIG_SETKEYCODES is not set
+CONFIG_SETLOGCONS=y
+# CONFIG_SHOWKEY is not set
+
+#
+# Debian Utilities
+#
+# CONFIG_PIPE_PROGRESS is not set
+# CONFIG_RUN_PARTS is not set
+# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+# CONFIG_START_STOP_DAEMON is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
+CONFIG_WHICH=y
+
+#
+# klibc-utils
+#
+# CONFIG_MINIPS is not set
+# CONFIG_NUKE is not set
+# CONFIG_RESUME is not set
+# CONFIG_RUN_INIT is not set
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_LIBM=y
+CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=4096
+# CONFIG_FEATURE_VI_8BIT is not set
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_ASK_TERMINAL=y
+CONFIG_FEATURE_VI_UNDO=y
+CONFIG_FEATURE_VI_UNDO_QUEUE=y
+CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_EXECUTABLE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_EXEC_PLUS=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+CONFIG_FEATURE_FIND_QUIT=y
+CONFIG_FEATURE_FIND_DELETE=y
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_FEATURE_FIND_LINKS=y
+CONFIG_GREP=y
+CONFIG_EGREP=y
+CONFIG_FGREP=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
+CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y
+CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+CONFIG_HALT=y
+CONFIG_POWEROFF=y
+CONFIG_REBOOT=y
+CONFIG_FEATURE_WAIT_FOR_INIT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+CONFIG_INIT=y
+# CONFIG_LINUXRC is not set
+CONFIG_FEATURE_USE_INITTAB=y
+# CONFIG_FEATURE_KILL_REMOVED is not set
+CONFIG_FEATURE_KILL_DELAY=0
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_INIT_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_INIT_TERMINAL_TYPE="linux"
+CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+CONFIG_USE_BB_PWD_GRP=y
+CONFIG_USE_BB_SHADOW=y
+CONFIG_USE_BB_CRYPT=y
+CONFIG_USE_BB_CRYPT_SHA=y
+CONFIG_ADD_SHELL=y
+CONFIG_REMOVE_SHELL=y
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_LAST_ID=60000
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=999
+# CONFIG_CHPASSWD is not set
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des"
+CONFIG_CRYPTPW=y
+CONFIG_MKPASSWD=y
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_GETTY=y
+# CONFIG_LOGIN is not set
+# CONFIG_LOGIN_SESSION_AS_CHILD is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+# CONFIG_FEATURE_NOLOGIN is not set
+# CONFIG_FEATURE_SECURETTY is not set
+# CONFIG_PASSWD is not set
+# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
+# CONFIG_SU is not set
+# CONFIG_FEATURE_SU_SYSLOG is not set
+# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
+# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
+CONFIG_SULOGIN=y
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_TUNE2FS is not set
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+CONFIG_DEPMOD=y
+CONFIG_INSMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODINFO=y
+CONFIG_MODPROBE=y
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+CONFIG_RMMOD=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+# CONFIG_FEATURE_MODUTILS_ALIAS is not set
+# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+
+#
+# Linux System Utilities
+#
+CONFIG_ACPID=y
+CONFIG_FEATURE_ACPID_COMPAT=y
+# CONFIG_BLKDISCARD is not set
+# CONFIG_BLKID is not set
+# CONFIG_FEATURE_BLKID_TYPE is not set
+# CONFIG_BLOCKDEV is not set
+# CONFIG_CAL is not set
+# CONFIG_CHRT is not set
+# CONFIG_DMESG is not set
+# CONFIG_FEATURE_DMESG_PRETTY is not set
+# CONFIG_EJECT is not set
+# CONFIG_FEATURE_EJECT_SCSI is not set
+# CONFIG_FALLOCATE is not set
+# CONFIG_FATATTR is not set
+# CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFORMAT is not set
+# CONFIG_FDISK is not set
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+# CONFIG_FEATURE_FDISK_WRITABLE is not set
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_GPT_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FINDFS is not set
+# CONFIG_FLOCK is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_FSFREEZE is not set
+# CONFIG_FSTRIM is not set
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
+# CONFIG_HEXDUMP is not set
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+# CONFIG_HD is not set
+# CONFIG_XXD is not set
+# CONFIG_HWCLOCK is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+# CONFIG_IONICE is not set
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+# CONFIG_LOSETUP is not set
+CONFIG_LSPCI=y
+CONFIG_LSUSB=y
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_RENAME is not set
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_FEATURE_MDEV_DAEMON is not set
+# CONFIG_MESG is not set
+# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
+# CONFIG_MKE2FS is not set
+# CONFIG_MKFS_EXT2 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_REISER is not set
+# CONFIG_MKDOSFS is not set
+# CONFIG_MKFS_VFAT is not set
+# CONFIG_MKSWAP is not set
+# CONFIG_FEATURE_MKSWAP_UUID is not set
+# CONFIG_MORE is not set
+# CONFIG_MOUNT is not set
+# CONFIG_FEATURE_MOUNT_FAKE is not set
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+# CONFIG_FEATURE_MOUNT_LABEL is not set
+# CONFIG_FEATURE_MOUNT_NFS is not set
+# CONFIG_FEATURE_MOUNT_CIFS is not set
+# CONFIG_FEATURE_MOUNT_FLAGS is not set
+# CONFIG_FEATURE_MOUNT_FSTAB is not set
+# CONFIG_FEATURE_MOUNT_OTHERTAB is not set
+# CONFIG_MOUNTPOINT is not set
+CONFIG_NOLOGIN=y
+CONFIG_NOLOGIN_DEPENDENCIES=y
+# CONFIG_NSENTER is not set
+# CONFIG_PIVOT_ROOT is not set
+# CONFIG_RDATE is not set
+# CONFIG_RDEV is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_RENICE is not set
+# CONFIG_REV is not set
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+# CONFIG_SETARCH is not set
+# CONFIG_LINUX32 is not set
+# CONFIG_LINUX64 is not set
+# CONFIG_SETPRIV is not set
+# CONFIG_FEATURE_SETPRIV_DUMP is not set
+# CONFIG_FEATURE_SETPRIV_CAPABILITIES is not set
+# CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES is not set
+# CONFIG_SETSID is not set
+# CONFIG_SWAPON is not set
+# CONFIG_FEATURE_SWAPON_DISCARD is not set
+# CONFIG_FEATURE_SWAPON_PRI is not set
+# CONFIG_SWAPOFF is not set
+# CONFIG_FEATURE_SWAPONOFF_LABEL is not set
+# CONFIG_SWITCH_ROOT is not set
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+# CONFIG_UEVENT is not set
+# CONFIG_UMOUNT is not set
+# CONFIG_FEATURE_UMOUNT_ALL is not set
+# CONFIG_UNSHARE is not set
+# CONFIG_WALL is not set
+# CONFIG_FEATURE_MOUNT_LOOP is not set
+# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+# CONFIG_VOLUMEID is not set
+# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+# CONFIG_FEATURE_VOLUMEID_EXFAT is not set
+# CONFIG_FEATURE_VOLUMEID_EXT is not set
+# CONFIG_FEATURE_VOLUMEID_F2FS is not set
+# CONFIG_FEATURE_VOLUMEID_FAT is not set
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_JFS is not set
+# CONFIG_FEATURE_VOLUMEID_LFS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+# CONFIG_FEATURE_VOLUMEID_MINIX is not set
+# CONFIG_FEATURE_VOLUMEID_NILFS is not set
+# CONFIG_FEATURE_VOLUMEID_NTFS is not set
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+# CONFIG_FEATURE_VOLUMEID_UBIFS is not set
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_XFS is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
+CONFIG_BC=y
+CONFIG_DC=y
+CONFIG_FEATURE_DC_BIG=y
+# CONFIG_FEATURE_DC_LIBM is not set
+CONFIG_FEATURE_BC_INTERACTIVE=y
+CONFIG_FEATURE_BC_LONG_OPTIONS=y
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+# CONFIG_CONSPY is not set
+# CONFIG_CROND is not set
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set
+CONFIG_FEATURE_CROND_DIR=""
+# CONFIG_CRONTAB is not set
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+CONFIG_HEXEDIT=y
+# CONFIG_I2CGET is not set
+# CONFIG_I2CSET is not set
+# CONFIG_I2CDUMP is not set
+# CONFIG_I2CDETECT is not set
+# CONFIG_I2CTRANSFER is not set
+# CONFIG_INOTIFYD is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_TRUNCATE=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_FEATURE_LESS_WINCH=y
+CONFIG_FEATURE_LESS_ASK_TERMINAL=y
+CONFIG_FEATURE_LESS_DASHCMD=y
+CONFIG_FEATURE_LESS_LINENUMS=y
+CONFIG_FEATURE_LESS_RAW=y
+CONFIG_FEATURE_LESS_ENV=y
+# CONFIG_LSSCSI is not set
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+# CONFIG_MT is not set
+# CONFIG_NANDWRITE is not set
+# CONFIG_NANDDUMP is not set
+CONFIG_PARTPROBE=y
+# CONFIG_RAIDAUTORUN is not set
+CONFIG_READAHEAD=y
+# CONFIG_RFKILL is not set
+CONFIG_RUNLEVEL=y
+# CONFIG_RX is not set
+# CONFIG_SETFATTR is not set
+# CONFIG_SETSERIAL is not set
+# CONFIG_STRINGS is not set
+CONFIG_TIME=y
+# CONFIG_TS is not set
+# CONFIG_TTYSIZE is not set
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+# CONFIG_UBIMKVOL is not set
+# CONFIG_UBIRMVOL is not set
+# CONFIG_UBIRSVOL is not set
+# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_UBIRENAME is not set
+# CONFIG_VOLNAME is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_FEATURE_TLS_SHA1 is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+CONFIG_FEATURE_BRCTL_FANCY=y
+CONFIG_FEATURE_BRCTL_SHOW=y
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FTPD=y
+CONFIG_FEATURE_FTPD_WRITE=y
+CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+CONFIG_FEATURE_FTPD_AUTHENTICATION=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+# CONFIG_DNSDOMAINNAME is not set
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+# CONFIG_FEATURE_HTTPD_GZIP is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFENSLAVE=y
+CONFIG_IFPLUGD=y
+CONFIG_IFUP=y
+CONFIG_IFDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_INETD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPNEIGH=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2"
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_NEIGH=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FAKEIDENTD=y
+CONFIG_NAMEIF=y
+CONFIG_FEATURE_NAMEIF_EXTENDED=y
+CONFIG_NBDCLIENT=y
+CONFIG_NC=y
+CONFIG_NETCAT=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NC_110_COMPAT=y
+CONFIG_NETSTAT=y
+CONFIG_FEATURE_NETSTAT_WIDE=y
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+CONFIG_FEATURE_NSLOOKUP_BIG=y
+CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y
+CONFIG_NTPD=y
+CONFIG_FEATURE_NTPD_SERVER=y
+CONFIG_FEATURE_NTPD_CONF=y
+CONFIG_FEATURE_NTP_AUTH=y
+# CONFIG_PING is not set
+# CONFIG_PING6 is not set
+# CONFIG_FEATURE_FANCY_PING is not set
+CONFIG_PSCAN=y
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+CONFIG_SSL_CLIENT=y
+CONFIG_TC=y
+CONFIG_FEATURE_TC_INGRESS=y
+CONFIG_TCPSVD=y
+CONFIG_UDPSVD=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_FEATURE_TELNET_WIDTH=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_FEATURE_TELNETD_INETD_WAIT=y
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
+CONFIG_FEATURE_TFTP_HPA_COMPAT=y
+CONFIG_TFTPD=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_TFTP_DEBUG is not set
+CONFIG_TLS=y
+# CONFIG_TRACEROUTE is not set
+CONFIG_TRACEROUTE6=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
+CONFIG_TUNCTL=y
+CONFIG_FEATURE_TUNCTL_UG=y
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_TIMEOUT=y
+CONFIG_FEATURE_WGET_HTTPS=y
+CONFIG_FEATURE_WGET_OPENSSL=y
+CONFIG_WHOIS=y
+# CONFIG_ZCIP is not set
+# CONFIG_UDHCPD is not set
+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_DHCPD_LEASES_FILE=""
+# CONFIG_DUMPLEASES is not set
+# CONFIG_DHCPRELAY is not set
+# CONFIG_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT=""
+# CONFIG_UDHCPC6 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+# CONFIG_FEATURE_UDHCP_8021Q is not set
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_IOSTAT=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_LSOF=y
+CONFIG_MPSTAT=y
+CONFIG_NMETER=y
+CONFIG_PGREP=y
+CONFIG_PKILL=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PMAP=y
+CONFIG_POWERTOP=y
+CONFIG_FEATURE_POWERTOP_INTERACTIVE=y
+CONFIG_PS=y
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_FEATURE_PS_LONG is not set
+CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y
+CONFIG_PSTREE=y
+CONFIG_PWDX=y
+CONFIG_SMEMCAP=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_INTERACTIVE=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_SMP_CPU=y
+CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_FEATURE_TOP_SMP_PROCESS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_UPTIME=y
+CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y
+CONFIG_WATCH=y
+CONFIG_FEATURE_SHOW_THREADS=y
+
+#
+# Runit Utilities
+#
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_FEATURE_RUNSVDIR_LOG=y
+CONFIG_SV=y
+CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service"
+CONFIG_SVC=y
+CONFIG_SVOK=y
+CONFIG_SVLOGD=y
+# CONFIG_CHCON is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SESTATUS is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_SETSEBOOL is not set
+
+#
+# Shells
+#
+CONFIG_SH_IS_ASH=y
+# CONFIG_SH_IS_HUSH is not set
+# CONFIG_SH_IS_NONE is not set
+# CONFIG_BASH_IS_ASH is not set
+# CONFIG_BASH_IS_HUSH is not set
+CONFIG_BASH_IS_NONE=y
+CONFIG_ASH=y
+# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_ASH_INTERNAL_GLOB is not set
+# CONFIG_ASH_BASH_COMPAT is not set
+# CONFIG_ASH_BASH_SOURCE_CURDIR is not set
+# CONFIG_ASH_BASH_NOT_FOUND_HOOK is not set
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_ALIAS=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+CONFIG_ASH_EXPAND_PRMT=y
+CONFIG_ASH_IDLE_TIMEOUT=y
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_ECHO=y
+CONFIG_ASH_PRINTF=y
+CONFIG_ASH_TEST=y
+CONFIG_ASH_HELP=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_CMDCMD=y
+# CONFIG_CTTYHACK is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_LINENO_VAR is not set
+# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_HUSH_ECHO is not set
+# CONFIG_HUSH_PRINTF is not set
+# CONFIG_HUSH_TEST is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_EXPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_READONLY is not set
+# CONFIG_HUSH_KILL is not set
+# CONFIG_HUSH_WAIT is not set
+# CONFIG_HUSH_COMMAND is not set
+# CONFIG_HUSH_TRAP is not set
+# CONFIG_HUSH_TYPE is not set
+# CONFIG_HUSH_TIMES is not set
+# CONFIG_HUSH_READ is not set
+# CONFIG_HUSH_SET is not set
+# CONFIG_HUSH_UNSET is not set
+# CONFIG_HUSH_ULIMIT is not set
+# CONFIG_HUSH_UMASK is not set
+# CONFIG_HUSH_GETOPTS is not set
+# CONFIG_HUSH_MEMLEAK is not set
+
+#
+# Options common to all shells
+#
+CONFIG_FEATURE_SH_MATH=y
+CONFIG_FEATURE_SH_MATH_64=y
+CONFIG_FEATURE_SH_MATH_BASE=y
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_FEATURE_SH_READ_FRAC=y
+CONFIG_FEATURE_SH_HISTFILESIZE=y
+CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y
+
+#
+# System Logging Utilities
+#
+# CONFIG_KLOGD is not set
+# CONFIG_FEATURE_KLOGD_KLOGCTL is not set
+# CONFIG_LOGGER is not set
+# CONFIG_LOGREAD is not set
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+# CONFIG_SYSLOGD is not set
+# CONFIG_FEATURE_ROTATE_LOGFILE is not set
+# CONFIG_FEATURE_REMOTE_LOG is not set
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+# CONFIG_FEATURE_SYSLOGD_CFG is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
+# CONFIG_FEATURE_IPC_SYSLOG is not set
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
+# CONFIG_FEATURE_KMSG_SYSLOG is not set
diff --git a/core/busybox/files/.config-suid b/core/busybox/files/.config-suid
new file mode 100644
index 00000000..7c71f89b
--- /dev/null
+++ b/core/busybox/files/.config-suid
@@ -0,0 +1,1159 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.31.0
+# Wed Sep 18 12:37:29 2019
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Settings
+#
+# CONFIG_DESKTOP is not set
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEDORA_COMPAT is not set
+# CONFIG_INCLUDE_SUSv2 is not set
+# CONFIG_LONG_OPTS is not set
+# CONFIG_SHOW_USAGE is not set
+# CONFIG_FEATURE_VERBOSE_USAGE is not set
+# CONFIG_FEATURE_COMPRESS_USAGE is not set
+# CONFIG_LFS is not set
+# CONFIG_PAM is not set
+# CONFIG_FEATURE_DEVPTS is not set
+# CONFIG_FEATURE_UTMP is not set
+# CONFIG_FEATURE_WTMP is not set
+# CONFIG_FEATURE_PIDFILE is not set
+CONFIG_PID_FILE_PATH=""
+CONFIG_BUSYBOX=y
+CONFIG_FEATURE_SHOW_SCRIPT=y
+CONFIG_FEATURE_INSTALLER=y
+# CONFIG_INSTALL_NO_USR is not set
+# CONFIG_FEATURE_SUID is not set
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SYSLOG_INFO=y
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_PLATFORM_LINUX=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+CONFIG_PIE=y
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_SYSROOT=""
+CONFIG_EXTRA_CFLAGS=""
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+# CONFIG_USE_PORTABLE_CODE is not set
+# CONFIG_STACK_OPTIMIZATION_386 is not set
+
+#
+# Installation Options ("make install" behavior)
+#
+# CONFIG_INSTALL_APPLET_SYMLINKS is not set
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+CONFIG_INSTALL_APPLET_DONT=y
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_DEBUG_SANITIZE is not set
+# CONFIG_UNIT_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Library Tuning
+#
+# CONFIG_FEATURE_USE_BSS_TAIL is not set
+# CONFIG_FLOAT_DURATION is not set
+# CONFIG_FEATURE_RTMINMAX is not set
+# CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SMALL=1
+CONFIG_SHA3_SMALL=1
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+# CONFIG_FEATURE_ETC_SERVICES is not set
+# CONFIG_FEATURE_EDITING is not set
+CONFIG_FEATURE_EDITING_MAX_LEN=0
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=0
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
+# CONFIG_FEATURE_REVERSE_SEARCH is not set
+# CONFIG_FEATURE_TAB_COMPLETION is not set
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
+# CONFIG_FEATURE_EDITING_WINCH is not set
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_UNICODE_SUPPORT is not set
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=0
+CONFIG_LAST_SUPPORTED_WCHAR=0
+# CONFIG_UNICODE_COMBINING_WCHARS is not set
+# CONFIG_UNICODE_WIDE_WCHARS is not set
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+# CONFIG_UNICODE_PRESERVE_BROKEN is not set
+# CONFIG_FEATURE_NON_POSIX_CP is not set
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+# CONFIG_FEATURE_USE_SENDFILE is not set
+CONFIG_FEATURE_COPYBUF_KB=4
+# CONFIG_FEATURE_SKIP_ROOTFS is not set
+# CONFIG_MONOTONIC_SYSCALL is not set
+# CONFIG_IOCTL_HEX2STR_ERROR is not set
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_XZ is not set
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+# CONFIG_FEATURE_SEAMLESS_BZ2 is not set
+# CONFIG_FEATURE_SEAMLESS_GZ is not set
+# CONFIG_FEATURE_SEAMLESS_Z is not set
+# CONFIG_AR is not set
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+# CONFIG_FEATURE_AR_CREATE is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_GUNZIP is not set
+# CONFIG_ZCAT is not set
+# CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set
+# CONFIG_BUNZIP2 is not set
+# CONFIG_BZCAT is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_LZCAT is not set
+# CONFIG_LZMA is not set
+# CONFIG_UNXZ is not set
+# CONFIG_XZCAT is not set
+# CONFIG_XZ is not set
+# CONFIG_BZIP2 is not set
+CONFIG_BZIP2_SMALL=0
+# CONFIG_FEATURE_BZIP2_DECOMPRESS is not set
+# CONFIG_CPIO is not set
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_GZIP is not set
+# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
+CONFIG_GZIP_FAST=0
+# CONFIG_FEATURE_GZIP_LEVELS is not set
+# CONFIG_FEATURE_GZIP_DECOMPRESS is not set
+# CONFIG_LZOP is not set
+# CONFIG_UNLZOP is not set
+# CONFIG_LZOPCAT is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM is not set
+# CONFIG_RPM2CPIO is not set
+# CONFIG_TAR is not set
+# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
+# CONFIG_FEATURE_TAR_CREATE is not set
+# CONFIG_FEATURE_TAR_AUTODETECT is not set
+# CONFIG_FEATURE_TAR_FROM is not set
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set
+# CONFIG_FEATURE_TAR_TO_COMMAND is not set
+# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
+# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
+# CONFIG_FEATURE_TAR_SELINUX is not set
+# CONFIG_UNZIP is not set
+# CONFIG_FEATURE_UNZIP_CDF is not set
+# CONFIG_FEATURE_UNZIP_BZIP2 is not set
+# CONFIG_FEATURE_UNZIP_LZMA is not set
+# CONFIG_FEATURE_UNZIP_XZ is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+
+#
+# Coreutils
+#
+# CONFIG_BASENAME is not set
+# CONFIG_CAT is not set
+# CONFIG_FEATURE_CATN is not set
+# CONFIG_FEATURE_CATV is not set
+# CONFIG_CHGRP is not set
+# CONFIG_CHMOD is not set
+# CONFIG_CHOWN is not set
+# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
+# CONFIG_CHROOT is not set
+# CONFIG_CKSUM is not set
+# CONFIG_COMM is not set
+# CONFIG_CP is not set
+# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
+# CONFIG_FEATURE_CP_REFLINK is not set
+# CONFIG_CUT is not set
+# CONFIG_DATE is not set
+# CONFIG_FEATURE_DATE_ISOFMT is not set
+# CONFIG_FEATURE_DATE_NANO is not set
+# CONFIG_FEATURE_DATE_COMPAT is not set
+# CONFIG_DD is not set
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+# CONFIG_FEATURE_DD_STATUS is not set
+# CONFIG_DF is not set
+# CONFIG_FEATURE_DF_FANCY is not set
+# CONFIG_DIRNAME is not set
+# CONFIG_DOS2UNIX is not set
+# CONFIG_UNIX2DOS is not set
+# CONFIG_DU is not set
+# CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set
+# CONFIG_ECHO is not set
+# CONFIG_FEATURE_FANCY_ECHO is not set
+# CONFIG_ENV is not set
+# CONFIG_EXPAND is not set
+# CONFIG_UNEXPAND is not set
+# CONFIG_EXPR is not set
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+# CONFIG_FACTOR is not set
+# CONFIG_FALSE is not set
+# CONFIG_FOLD is not set
+# CONFIG_HEAD is not set
+# CONFIG_FEATURE_FANCY_HEAD is not set
+# CONFIG_HOSTID is not set
+# CONFIG_ID is not set
+# CONFIG_GROUPS is not set
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+# CONFIG_LINK is not set
+# CONFIG_LN is not set
+# CONFIG_LOGNAME is not set
+# CONFIG_LS is not set
+# CONFIG_FEATURE_LS_FILETYPES is not set
+# CONFIG_FEATURE_LS_FOLLOWLINKS is not set
+# CONFIG_FEATURE_LS_RECURSIVE is not set
+# CONFIG_FEATURE_LS_WIDTH is not set
+# CONFIG_FEATURE_LS_SORTFILES is not set
+# CONFIG_FEATURE_LS_TIMESTAMPS is not set
+# CONFIG_FEATURE_LS_USERNAME is not set
+# CONFIG_FEATURE_LS_COLOR is not set
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+# CONFIG_MD5SUM is not set
+# CONFIG_SHA1SUM is not set
+# CONFIG_SHA256SUM is not set
+# CONFIG_SHA512SUM is not set
+# CONFIG_SHA3SUM is not set
+# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
+# CONFIG_MKDIR is not set
+# CONFIG_MKFIFO is not set
+# CONFIG_MKNOD is not set
+# CONFIG_MKTEMP is not set
+# CONFIG_MV is not set
+# CONFIG_NICE is not set
+# CONFIG_NL is not set
+# CONFIG_NOHUP is not set
+# CONFIG_NPROC is not set
+# CONFIG_OD is not set
+# CONFIG_PASTE is not set
+# CONFIG_PRINTENV is not set
+# CONFIG_PRINTF is not set
+# CONFIG_PWD is not set
+# CONFIG_READLINK is not set
+# CONFIG_FEATURE_READLINK_FOLLOW is not set
+# CONFIG_REALPATH is not set
+# CONFIG_RM is not set
+# CONFIG_RMDIR is not set
+# CONFIG_SEQ is not set
+# CONFIG_SHRED is not set
+# CONFIG_SHUF is not set
+# CONFIG_SLEEP is not set
+# CONFIG_FEATURE_FANCY_SLEEP is not set
+# CONFIG_SORT is not set
+# CONFIG_FEATURE_SORT_BIG is not set
+# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+# CONFIG_FEATURE_STAT_FILESYSTEM is not set
+# CONFIG_STTY is not set
+# CONFIG_SUM is not set
+# CONFIG_SYNC is not set
+# CONFIG_FEATURE_SYNC_FANCY is not set
+# CONFIG_FSYNC is not set
+# CONFIG_TAC is not set
+# CONFIG_TAIL is not set
+# CONFIG_FEATURE_FANCY_TAIL is not set
+# CONFIG_TEE is not set
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+# CONFIG_TEST is not set
+# CONFIG_TEST1 is not set
+# CONFIG_TEST2 is not set
+# CONFIG_FEATURE_TEST_64 is not set
+# CONFIG_TIMEOUT is not set
+# CONFIG_TOUCH is not set
+# CONFIG_FEATURE_TOUCH_NODEREF is not set
+# CONFIG_FEATURE_TOUCH_SUSV3 is not set
+# CONFIG_TR is not set
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+# CONFIG_TRUE is not set
+# CONFIG_TRUNCATE is not set
+# CONFIG_TTY is not set
+# CONFIG_UNAME is not set
+CONFIG_UNAME_OSNAME=""
+# CONFIG_BB_ARCH is not set
+# CONFIG_UNIQ is not set
+# CONFIG_UNLINK is not set
+# CONFIG_USLEEP is not set
+# CONFIG_UUDECODE is not set
+# CONFIG_BASE64 is not set
+# CONFIG_UUENCODE is not set
+# CONFIG_WC is not set
+# CONFIG_FEATURE_WC_LARGE is not set
+# CONFIG_WHO is not set
+# CONFIG_W is not set
+# CONFIG_USERS is not set
+# CONFIG_WHOAMI is not set
+# CONFIG_YES is not set
+
+#
+# Common options
+#
+# CONFIG_FEATURE_VERBOSE is not set
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+# CONFIG_FEATURE_HUMAN_READABLE is not set
+
+#
+# Console Utilities
+#
+# CONFIG_CHVT is not set
+# CONFIG_CLEAR is not set
+# CONFIG_DEALLOCVT is not set
+# CONFIG_DUMPKMAP is not set
+# CONFIG_FGCONSOLE is not set
+# CONFIG_KBD_MODE is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_SETFONT is not set
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
+# CONFIG_FEATURE_LOADFONT_PSF2 is not set
+# CONFIG_FEATURE_LOADFONT_RAW is not set
+# CONFIG_LOADKMAP is not set
+# CONFIG_OPENVT is not set
+# CONFIG_RESET is not set
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+# CONFIG_SETCONSOLE is not set
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+# CONFIG_SETKEYCODES is not set
+# CONFIG_SETLOGCONS is not set
+# CONFIG_SHOWKEY is not set
+
+#
+# Debian Utilities
+#
+# CONFIG_PIPE_PROGRESS is not set
+# CONFIG_RUN_PARTS is not set
+# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+# CONFIG_START_STOP_DAEMON is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
+# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
+# CONFIG_WHICH is not set
+
+#
+# klibc-utils
+#
+# CONFIG_MINIPS is not set
+# CONFIG_NUKE is not set
+# CONFIG_RESUME is not set
+# CONFIG_RUN_INIT is not set
+
+#
+# Editors
+#
+# CONFIG_AWK is not set
+# CONFIG_FEATURE_AWK_LIBM is not set
+# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set
+# CONFIG_CMP is not set
+# CONFIG_DIFF is not set
+# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
+# CONFIG_FEATURE_DIFF_DIR is not set
+# CONFIG_ED is not set
+# CONFIG_PATCH is not set
+# CONFIG_SED is not set
+# CONFIG_VI is not set
+CONFIG_FEATURE_VI_MAX_LEN=0
+# CONFIG_FEATURE_VI_8BIT is not set
+# CONFIG_FEATURE_VI_COLON is not set
+# CONFIG_FEATURE_VI_YANKMARK is not set
+# CONFIG_FEATURE_VI_SEARCH is not set
+# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
+# CONFIG_FEATURE_VI_USE_SIGNALS is not set
+# CONFIG_FEATURE_VI_DOT_CMD is not set
+# CONFIG_FEATURE_VI_READONLY is not set
+# CONFIG_FEATURE_VI_SETOPTS is not set
+# CONFIG_FEATURE_VI_SET is not set
+# CONFIG_FEATURE_VI_WIN_RESIZE is not set
+# CONFIG_FEATURE_VI_ASK_TERMINAL is not set
+# CONFIG_FEATURE_VI_UNDO is not set
+# CONFIG_FEATURE_VI_UNDO_QUEUE is not set
+CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0
+# CONFIG_FEATURE_ALLOW_EXEC is not set
+
+#
+# Finding Utilities
+#
+# CONFIG_FIND is not set
+# CONFIG_FEATURE_FIND_PRINT0 is not set
+# CONFIG_FEATURE_FIND_MTIME is not set
+# CONFIG_FEATURE_FIND_MMIN is not set
+# CONFIG_FEATURE_FIND_PERM is not set
+# CONFIG_FEATURE_FIND_TYPE is not set
+# CONFIG_FEATURE_FIND_EXECUTABLE is not set
+# CONFIG_FEATURE_FIND_XDEV is not set
+# CONFIG_FEATURE_FIND_MAXDEPTH is not set
+# CONFIG_FEATURE_FIND_NEWER is not set
+# CONFIG_FEATURE_FIND_INUM is not set
+# CONFIG_FEATURE_FIND_EXEC is not set
+# CONFIG_FEATURE_FIND_EXEC_PLUS is not set
+# CONFIG_FEATURE_FIND_USER is not set
+# CONFIG_FEATURE_FIND_GROUP is not set
+# CONFIG_FEATURE_FIND_NOT is not set
+# CONFIG_FEATURE_FIND_DEPTH is not set
+# CONFIG_FEATURE_FIND_PAREN is not set
+# CONFIG_FEATURE_FIND_SIZE is not set
+# CONFIG_FEATURE_FIND_PRUNE is not set
+# CONFIG_FEATURE_FIND_QUIT is not set
+# CONFIG_FEATURE_FIND_DELETE is not set
+# CONFIG_FEATURE_FIND_PATH is not set
+# CONFIG_FEATURE_FIND_REGEX is not set
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+# CONFIG_FEATURE_FIND_LINKS is not set
+# CONFIG_GREP is not set
+# CONFIG_EGREP is not set
+# CONFIG_FGREP is not set
+# CONFIG_FEATURE_GREP_CONTEXT is not set
+# CONFIG_XARGS is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+# CONFIG_HALT is not set
+# CONFIG_POWEROFF is not set
+# CONFIG_REBOOT is not set
+# CONFIG_FEATURE_WAIT_FOR_INIT is not set
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+# CONFIG_INIT is not set
+# CONFIG_LINUXRC is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_KILL_REMOVED is not set
+CONFIG_FEATURE_KILL_DELAY=0
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+# CONFIG_FEATURE_INIT_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_INIT_TERMINAL_TYPE=""
+# CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+CONFIG_USE_BB_PWD_GRP=y
+CONFIG_USE_BB_SHADOW=y
+CONFIG_USE_BB_CRYPT=y
+CONFIG_USE_BB_CRYPT_SHA=y
+# CONFIG_ADD_SHELL is not set
+# CONFIG_REMOVE_SHELL is not set
+# CONFIG_ADDGROUP is not set
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+# CONFIG_ADDUSER is not set
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_LAST_ID=0
+CONFIG_FIRST_SYSTEM_ID=0
+CONFIG_LAST_SYSTEM_ID=0
+# CONFIG_CHPASSWD is not set
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des"
+# CONFIG_CRYPTPW is not set
+# CONFIG_MKPASSWD is not set
+# CONFIG_DELUSER is not set
+# CONFIG_DELGROUP is not set
+# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
+# CONFIG_GETTY is not set
+CONFIG_LOGIN=y
+# CONFIG_LOGIN_SESSION_AS_CHILD is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
+# CONFIG_SULOGIN is not set
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_TUNE2FS is not set
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_DEPMOD is not set
+# CONFIG_INSMOD is not set
+# CONFIG_LSMOD is not set
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+# CONFIG_MODINFO is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+# CONFIG_RMMOD is not set
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
+# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+# CONFIG_FEATURE_MODUTILS_ALIAS is not set
+# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
+CONFIG_DEFAULT_MODULES_DIR=""
+CONFIG_DEFAULT_DEPMOD_FILE=""
+
+#
+# Linux System Utilities
+#
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+# CONFIG_BLKDISCARD is not set
+# CONFIG_BLKID is not set
+# CONFIG_FEATURE_BLKID_TYPE is not set
+# CONFIG_BLOCKDEV is not set
+# CONFIG_CAL is not set
+# CONFIG_CHRT is not set
+# CONFIG_DMESG is not set
+# CONFIG_FEATURE_DMESG_PRETTY is not set
+# CONFIG_EJECT is not set
+# CONFIG_FEATURE_EJECT_SCSI is not set
+# CONFIG_FALLOCATE is not set
+# CONFIG_FATATTR is not set
+# CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFORMAT is not set
+# CONFIG_FDISK is not set
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+# CONFIG_FEATURE_FDISK_WRITABLE is not set
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_GPT_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FINDFS is not set
+# CONFIG_FLOCK is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_FSFREEZE is not set
+# CONFIG_FSTRIM is not set
+# CONFIG_GETOPT is not set
+# CONFIG_FEATURE_GETOPT_LONG is not set
+# CONFIG_HEXDUMP is not set
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+# CONFIG_HD is not set
+# CONFIG_XXD is not set
+# CONFIG_HWCLOCK is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+# CONFIG_IONICE is not set
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+# CONFIG_LOSETUP is not set
+# CONFIG_LSPCI is not set
+# CONFIG_LSUSB is not set
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_RENAME is not set
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_FEATURE_MDEV_DAEMON is not set
+# CONFIG_MESG is not set
+# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
+# CONFIG_MKE2FS is not set
+# CONFIG_MKFS_EXT2 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_REISER is not set
+# CONFIG_MKDOSFS is not set
+# CONFIG_MKFS_VFAT is not set
+# CONFIG_MKSWAP is not set
+# CONFIG_FEATURE_MKSWAP_UUID is not set
+# CONFIG_MORE is not set
+# CONFIG_MOUNT is not set
+# CONFIG_FEATURE_MOUNT_FAKE is not set
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+# CONFIG_FEATURE_MOUNT_LABEL is not set
+# CONFIG_FEATURE_MOUNT_NFS is not set
+# CONFIG_FEATURE_MOUNT_CIFS is not set
+# CONFIG_FEATURE_MOUNT_FLAGS is not set
+# CONFIG_FEATURE_MOUNT_FSTAB is not set
+# CONFIG_FEATURE_MOUNT_OTHERTAB is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_NOLOGIN is not set
+# CONFIG_NOLOGIN_DEPENDENCIES is not set
+# CONFIG_NSENTER is not set
+# CONFIG_PIVOT_ROOT is not set
+# CONFIG_RDATE is not set
+# CONFIG_RDEV is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_RENICE is not set
+# CONFIG_REV is not set
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+# CONFIG_SETARCH is not set
+# CONFIG_LINUX32 is not set
+# CONFIG_LINUX64 is not set
+# CONFIG_SETPRIV is not set
+# CONFIG_FEATURE_SETPRIV_DUMP is not set
+# CONFIG_FEATURE_SETPRIV_CAPABILITIES is not set
+# CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES is not set
+# CONFIG_SETSID is not set
+# CONFIG_SWAPON is not set
+# CONFIG_FEATURE_SWAPON_DISCARD is not set
+# CONFIG_FEATURE_SWAPON_PRI is not set
+# CONFIG_SWAPOFF is not set
+# CONFIG_FEATURE_SWAPONOFF_LABEL is not set
+# CONFIG_SWITCH_ROOT is not set
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+# CONFIG_UEVENT is not set
+# CONFIG_UMOUNT is not set
+# CONFIG_FEATURE_UMOUNT_ALL is not set
+# CONFIG_UNSHARE is not set
+# CONFIG_WALL is not set
+# CONFIG_FEATURE_MOUNT_LOOP is not set
+# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+# CONFIG_VOLUMEID is not set
+# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+# CONFIG_FEATURE_VOLUMEID_EXFAT is not set
+# CONFIG_FEATURE_VOLUMEID_EXT is not set
+# CONFIG_FEATURE_VOLUMEID_F2FS is not set
+# CONFIG_FEATURE_VOLUMEID_FAT is not set
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_JFS is not set
+# CONFIG_FEATURE_VOLUMEID_LFS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+# CONFIG_FEATURE_VOLUMEID_MINIX is not set
+# CONFIG_FEATURE_VOLUMEID_NILFS is not set
+# CONFIG_FEATURE_VOLUMEID_NTFS is not set
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+# CONFIG_FEATURE_VOLUMEID_UBIFS is not set
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_XFS is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
+# CONFIG_BC is not set
+# CONFIG_DC is not set
+# CONFIG_FEATURE_DC_BIG is not set
+# CONFIG_FEATURE_DC_LIBM is not set
+# CONFIG_FEATURE_BC_INTERACTIVE is not set
+# CONFIG_FEATURE_BC_LONG_OPTIONS is not set
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+# CONFIG_CONSPY is not set
+# CONFIG_CROND is not set
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set
+CONFIG_FEATURE_CROND_DIR="/var/spool/cron"
+CONFIG_CRONTAB=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_HEXEDIT is not set
+# CONFIG_I2CGET is not set
+# CONFIG_I2CSET is not set
+# CONFIG_I2CDUMP is not set
+# CONFIG_I2CDETECT is not set
+# CONFIG_I2CTRANSFER is not set
+# CONFIG_INOTIFYD is not set
+# CONFIG_LESS is not set
+CONFIG_FEATURE_LESS_MAXLINES=0
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# CONFIG_FEATURE_LESS_TRUNCATE is not set
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
+# CONFIG_FEATURE_LESS_RAW is not set
+# CONFIG_FEATURE_LESS_ENV is not set
+# CONFIG_LSSCSI is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+# CONFIG_MT is not set
+# CONFIG_NANDWRITE is not set
+# CONFIG_NANDDUMP is not set
+# CONFIG_PARTPROBE is not set
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+# CONFIG_RFKILL is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+# CONFIG_SETFATTR is not set
+# CONFIG_SETSERIAL is not set
+# CONFIG_STRINGS is not set
+# CONFIG_TIME is not set
+# CONFIG_TS is not set
+# CONFIG_TTYSIZE is not set
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+# CONFIG_UBIMKVOL is not set
+# CONFIG_UBIRMVOL is not set
+# CONFIG_UBIRSVOL is not set
+# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_UBIRENAME is not set
+# CONFIG_VOLNAME is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+# CONFIG_FEATURE_IPV6 is not set
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_FEATURE_TLS_SHA1 is not set
+# CONFIG_ARP is not set
+# CONFIG_ARPING is not set
+# CONFIG_BRCTL is not set
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+# CONFIG_DNSD is not set
+# CONFIG_ETHER_WAKE is not set
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTPD_WRITE is not set
+# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
+# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+# CONFIG_HOSTNAME is not set
+# CONFIG_DNSDOMAINNAME is not set
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+# CONFIG_FEATURE_HTTPD_GZIP is not set
+# CONFIG_IFCONFIG is not set
+# CONFIG_FEATURE_IFCONFIG_STATUS is not set
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+# CONFIG_FEATURE_IFCONFIG_HW is not set
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+# CONFIG_IFENSLAVE is not set
+# CONFIG_IFPLUGD is not set
+# CONFIG_IFUP is not set
+# CONFIG_IFDOWN is not set
+CONFIG_IFUPDOWN_IFSTATE_PATH=""
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+# CONFIG_IP is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_IPRULE is not set
+# CONFIG_IPNEIGH is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+CONFIG_FEATURE_IP_ROUTE_DIR=""
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# CONFIG_FEATURE_IP_RULE is not set
+# CONFIG_FEATURE_IP_NEIGH is not set
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_NAMEIF is not set
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+# CONFIG_NBDCLIENT is not set
+# CONFIG_NC is not set
+# CONFIG_NETCAT is not set
+# CONFIG_NC_SERVER is not set
+# CONFIG_NC_EXTRA is not set
+# CONFIG_NC_110_COMPAT is not set
+# CONFIG_NETSTAT is not set
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+# CONFIG_FEATURE_NETSTAT_PRG is not set
+# CONFIG_NSLOOKUP is not set
+# CONFIG_FEATURE_NSLOOKUP_BIG is not set
+# CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS is not set
+# CONFIG_NTPD is not set
+# CONFIG_FEATURE_NTPD_SERVER is not set
+# CONFIG_FEATURE_NTPD_CONF is not set
+# CONFIG_FEATURE_NTP_AUTH is not set
+CONFIG_PING=y
+# CONFIG_PING6 is not set
+CONFIG_FEATURE_FANCY_PING=y
+# CONFIG_PSCAN is not set
+# CONFIG_ROUTE is not set
+# CONFIG_SLATTACH is not set
+# CONFIG_SSL_CLIENT is not set
+# CONFIG_TC is not set
+# CONFIG_FEATURE_TC_INGRESS is not set
+# CONFIG_TCPSVD is not set
+# CONFIG_UDPSVD is not set
+# CONFIG_TELNET is not set
+# CONFIG_FEATURE_TELNET_TTYPE is not set
+# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
+# CONFIG_FEATURE_TELNET_WIDTH is not set
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
+# CONFIG_TFTP is not set
+# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+# CONFIG_FEATURE_TFTP_HPA_COMPAT is not set
+# CONFIG_TFTPD is not set
+# CONFIG_FEATURE_TFTP_GET is not set
+# CONFIG_FEATURE_TFTP_PUT is not set
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_TFTP_DEBUG is not set
+# CONFIG_TLS is not set
+# CONFIG_TRACEROUTE is not set
+# CONFIG_TRACEROUTE6 is not set
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_TUNCTL is not set
+# CONFIG_FEATURE_TUNCTL_UG is not set
+# CONFIG_VCONFIG is not set
+# CONFIG_WGET is not set
+# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+# CONFIG_FEATURE_WGET_STATUSBAR is not set
+# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
+# CONFIG_FEATURE_WGET_TIMEOUT is not set
+# CONFIG_FEATURE_WGET_HTTPS is not set
+# CONFIG_FEATURE_WGET_OPENSSL is not set
+# CONFIG_WHOIS is not set
+# CONFIG_ZCIP is not set
+# CONFIG_UDHCPD is not set
+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_DHCPD_LEASES_FILE=""
+# CONFIG_DUMPLEASES is not set
+# CONFIG_DHCPRELAY is not set
+# CONFIG_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT=""
+# CONFIG_UDHCPC6 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+# CONFIG_FEATURE_UDHCP_8021Q is not set
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+
+#
+# Process Utilities
+#
+# CONFIG_FREE is not set
+# CONFIG_FUSER is not set
+# CONFIG_IOSTAT is not set
+# CONFIG_KILL is not set
+# CONFIG_KILLALL is not set
+# CONFIG_KILLALL5 is not set
+# CONFIG_LSOF is not set
+# CONFIG_MPSTAT is not set
+# CONFIG_NMETER is not set
+# CONFIG_PGREP is not set
+# CONFIG_PKILL is not set
+# CONFIG_PIDOF is not set
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+# CONFIG_PMAP is not set
+# CONFIG_POWERTOP is not set
+# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set
+# CONFIG_PS is not set
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_FEATURE_PS_LONG is not set
+# CONFIG_FEATURE_PS_TIME is not set
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
+# CONFIG_PSTREE is not set
+# CONFIG_PWDX is not set
+# CONFIG_SMEMCAP is not set
+# CONFIG_BB_SYSCTL is not set
+# CONFIG_TOP is not set
+# CONFIG_FEATURE_TOP_INTERACTIVE is not set
+# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set
+# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set
+# CONFIG_FEATURE_TOP_SMP_CPU is not set
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
+# CONFIG_FEATURE_TOPMEM is not set
+# CONFIG_UPTIME is not set
+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
+# CONFIG_WATCH is not set
+# CONFIG_FEATURE_SHOW_THREADS is not set
+
+#
+# Runit Utilities
+#
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVC is not set
+# CONFIG_SVOK is not set
+# CONFIG_SVLOGD is not set
+# CONFIG_CHCON is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SESTATUS is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_SETSEBOOL is not set
+
+#
+# Shells
+#
+# CONFIG_SH_IS_ASH is not set
+# CONFIG_SH_IS_HUSH is not set
+CONFIG_SH_IS_NONE=y
+# CONFIG_BASH_IS_ASH is not set
+# CONFIG_BASH_IS_HUSH is not set
+CONFIG_BASH_IS_NONE=y
+# CONFIG_ASH is not set
+# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_ASH_INTERNAL_GLOB is not set
+# CONFIG_ASH_BASH_COMPAT is not set
+# CONFIG_ASH_BASH_SOURCE_CURDIR is not set
+# CONFIG_ASH_BASH_NOT_FOUND_HOOK is not set
+# CONFIG_ASH_JOB_CONTROL is not set
+# CONFIG_ASH_ALIAS is not set
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+# CONFIG_ASH_EXPAND_PRMT is not set
+# CONFIG_ASH_IDLE_TIMEOUT is not set
+# CONFIG_ASH_MAIL is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
+# CONFIG_ASH_HELP is not set
+# CONFIG_ASH_GETOPTS is not set
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_CTTYHACK is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_LINENO_VAR is not set
+# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_HUSH_ECHO is not set
+# CONFIG_HUSH_PRINTF is not set
+# CONFIG_HUSH_TEST is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_EXPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_READONLY is not set
+# CONFIG_HUSH_KILL is not set
+# CONFIG_HUSH_WAIT is not set
+# CONFIG_HUSH_COMMAND is not set
+# CONFIG_HUSH_TRAP is not set
+# CONFIG_HUSH_TYPE is not set
+# CONFIG_HUSH_TIMES is not set
+# CONFIG_HUSH_READ is not set
+# CONFIG_HUSH_SET is not set
+# CONFIG_HUSH_UNSET is not set
+# CONFIG_HUSH_ULIMIT is not set
+# CONFIG_HUSH_UMASK is not set
+# CONFIG_HUSH_GETOPTS is not set
+# CONFIG_HUSH_MEMLEAK is not set
+
+#
+# Options common to all shells
+#
+# CONFIG_FEATURE_SH_MATH is not set
+# CONFIG_FEATURE_SH_MATH_64 is not set
+# CONFIG_FEATURE_SH_MATH_BASE is not set
+# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+# CONFIG_FEATURE_SH_READ_FRAC is not set
+# CONFIG_FEATURE_SH_HISTFILESIZE is not set
+# CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS is not set
+
+#
+# System Logging Utilities
+#
+# CONFIG_KLOGD is not set
+# CONFIG_FEATURE_KLOGD_KLOGCTL is not set
+# CONFIG_LOGGER is not set
+# CONFIG_LOGREAD is not set
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+# CONFIG_SYSLOGD is not set
+# CONFIG_FEATURE_ROTATE_LOGFILE is not set
+# CONFIG_FEATURE_REMOTE_LOG is not set
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+# CONFIG_FEATURE_SYSLOGD_CFG is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
+# CONFIG_FEATURE_IPC_SYSLOG is not set
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
+# CONFIG_FEATURE_KMSG_SYSLOG is not set
diff --git a/core/busybox/files/acpid.run b/core/busybox/files/acpid.run
new file mode 100644
index 00000000..2f1ecdb6
--- /dev/null
+++ b/core/busybox/files/acpid.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec acpid -fl
diff --git a/core/busybox/sources b/core/busybox/sources
new file mode 100644
index 00000000..c012a491
--- /dev/null
+++ b/core/busybox/sources
@@ -0,0 +1,6 @@
+https://busybox.net/downloads/busybox-1.31.1.tar.bz2
+files/.config
+files/.config-suid
+files/acpid.run
+files/crond.run
+files/syslogd.run
diff --git a/core/busybox/version b/core/busybox/version
new file mode 100644
index 00000000..41e47002
--- /dev/null
+++ b/core/busybox/version
@@ -0,0 +1 @@
+1.31.1 0
diff --git a/core/bzip2/build b/core/bzip2/build
new file mode 100755
index 00000000..3f08f33b
--- /dev/null
+++ b/core/bzip2/build
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+
+make CC="${CC:-gcc} $CFLAGS -fPIC $LDFLAGS" -f Makefile-libbz2_so
+make CC="${CC:-gcc} $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
index 00000000..b50d3466
--- /dev/null
+++ b/core/bzip2/checksums
@@ -0,0 +1 @@
+ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269 bzip2-1.0.8.tar.gz
diff --git a/core/bzip2/sources b/core/bzip2/sources
new file mode 100644
index 00000000..a04bc1bb
--- /dev/null
+++ b/core/bzip2/sources
@@ -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
index 00000000..0bc3d1eb
--- /dev/null
+++ b/core/bzip2/version
@@ -0,0 +1 @@
+1.0.8 1
diff --git a/core/carbs-init/build b/core/carbs-init/build
new file mode 100755
index 00000000..97c33153
--- /dev/null
+++ b/core/carbs-init/build
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+mkdir -p "$1/usr"
+
+cp -R etc "$1"
+cp -R lib "$1/usr"
diff --git a/core/carbs-init/checksums b/core/carbs-init/checksums
new file mode 100644
index 00000000..13affdfe
--- /dev/null
+++ b/core/carbs-init/checksums
@@ -0,0 +1 @@
+5fcfc48b1f8493c0db36a6953e326c1a init-0.1.tar.gz
diff --git a/core/carbs-init/post-install b/core/carbs-init/post-install
new file mode 100755
index 00000000..78b3038c
--- /dev/null
+++ b/core/carbs-init/post-install
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+cat <<EOF
+
+NOTE: 'udevd' is now killed once the boot is
+ complete as the daemon is optional.
+
+NOTE: If you require the daemon, it can be
+ enabled as a runit service
+
+-> ln -s /etc/sv/udevd/ /var/servie/
+
+EOF
diff --git a/core/carbs-init/sources b/core/carbs-init/sources
new file mode 100644
index 00000000..869db535
--- /dev/null
+++ b/core/carbs-init/sources
@@ -0,0 +1 @@
+https://carbslinux.org/git/archives/init/init-0.1.tar.gz
diff --git a/core/carbs-init/version b/core/carbs-init/version
new file mode 100644
index 00000000..084a74c2
--- /dev/null
+++ b/core/carbs-init/version
@@ -0,0 +1 @@
+0.1 1
diff --git a/core/curl/build b/core/curl/build
new file mode 100755
index 00000000..ac041c31
--- /dev/null
+++ b/core/curl/build
@@ -0,0 +1,18 @@
+#!/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-libidn \
+ --without-librtmp \
+ --with-pic
+
+make
+make DESTDIR="$1" install
diff --git a/core/curl/checksums b/core/curl/checksums
new file mode 100644
index 00000000..7ccaa5e1
--- /dev/null
+++ b/core/curl/checksums
@@ -0,0 +1 @@
+f5d2e7320379338c3952dcc7566a140abb49edb575f9f99272455785c40e536c curl-7.67.0.tar.xz
diff --git a/core/curl/depends b/core/curl/depends
new file mode 100644
index 00000000..01e22f1c
--- /dev/null
+++ b/core/curl/depends
@@ -0,0 +1,3 @@
+libressl
+perl make
+zlib
diff --git a/core/curl/sources b/core/curl/sources
new file mode 100644
index 00000000..001d55e6
--- /dev/null
+++ b/core/curl/sources
@@ -0,0 +1 @@
+https://curl.haxx.se/download/curl-7.67.0.tar.xz
diff --git a/core/curl/version b/core/curl/version
new file mode 100644
index 00000000..68297a3f
--- /dev/null
+++ b/core/curl/version
@@ -0,0 +1 @@
+7.67.0 1
diff --git a/core/dhcpcd/build b/core/dhcpcd/build
new file mode 100755
index 00000000..5e4235c7
--- /dev/null
+++ b/core/dhcpcd/build
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --rundir=/run
+
+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/core/dhcpcd/checksums b/core/dhcpcd/checksums
new file mode 100644
index 00000000..c035d50a
--- /dev/null
+++ b/core/dhcpcd/checksums
@@ -0,0 +1,2 @@
+808261106c47c692c51e10bef83d364a693ad9216b1be7c4735240b24c2d6715 dhcpcd-8.1.2.tar.gz
+533714c2f3edcd70e47822cb880d8e8ffdba673b10452ea808037ec2714a375c dhcpcd.run
diff --git a/core/dhcpcd/files/dhcpcd.run b/core/dhcpcd/files/dhcpcd.run
new file mode 100644
index 00000000..0172d7f8
--- /dev/null
+++ b/core/dhcpcd/files/dhcpcd.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec dhcpcd -BM 1>&2
diff --git a/core/dhcpcd/sources b/core/dhcpcd/sources
new file mode 100644
index 00000000..ab8475e5
--- /dev/null
+++ b/core/dhcpcd/sources
@@ -0,0 +1,2 @@
+https://github.com/rsmarples/dhcpcd/archive/dhcpcd-8.1.2.tar.gz
+files/dhcpcd.run
diff --git a/core/dhcpcd/version b/core/dhcpcd/version
new file mode 100644
index 00000000..1679acdb
--- /dev/null
+++ b/core/dhcpcd/version
@@ -0,0 +1 @@
+8.1.2 1
diff --git a/core/e2fsprogs/build b/core/e2fsprogs/build
new file mode 100755
index 00000000..a01968a7
--- /dev/null
+++ b/core/e2fsprogs/build
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --enable-symlink-install \
+ --disable-uuidd \
+ --disable-libuuid \
+ --disable-libblkid \
+ --disable-elf-shlibs \
+ --disable-fsck
+
+# MKDIR_P fixes an install issue on musl/busybox.
+make
+make MKDIR_P="install -d" DESTDIR="$1" install install-libs
+
+# Make static libraries writable.
+chmod -v u+w "$1/usr/lib/"*.a
diff --git a/core/e2fsprogs/checksums b/core/e2fsprogs/checksums
new file mode 100644
index 00000000..c1a64445
--- /dev/null
+++ b/core/e2fsprogs/checksums
@@ -0,0 +1 @@
+65faf6b590ca1da97440d6446bd11de9e0914b42553740ba5d9d2a796fa0dc02 e2fsprogs-1.45.4.tar.xz
diff --git a/core/e2fsprogs/depends b/core/e2fsprogs/depends
new file mode 100644
index 00000000..55c8f231
--- /dev/null
+++ b/core/e2fsprogs/depends
@@ -0,0 +1,3 @@
+linux-headers make
+pkgconf make
+util-linux
diff --git a/core/e2fsprogs/sources b/core/e2fsprogs/sources
new file mode 100644
index 00000000..cc57e983
--- /dev/null
+++ b/core/e2fsprogs/sources
@@ -0,0 +1 @@
+https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.45.4/e2fsprogs-1.45.4.tar.xz
diff --git a/core/e2fsprogs/version b/core/e2fsprogs/version
new file mode 100644
index 00000000..8fdade9d
--- /dev/null
+++ b/core/e2fsprogs/version
@@ -0,0 +1 @@
+1.45.4 1
diff --git a/core/eudev/build b/core/eudev/build
new file mode 100755
index 00000000..07b1bbd1
--- /dev/null
+++ b/core/eudev/build
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-hwdb \
+ --disable-introspection
+
+make
+make DESTDIR="$1" install
+
+# Install runit service.
+install -Dm755 udevd.run "$1/etc/sv/udevd/run"
+ln -s /run/runit/supervise.udevd "$1/etc/sv/udevd/supervise"
diff --git a/core/eudev/checksums b/core/eudev/checksums
new file mode 100644
index 00000000..04f21a64
--- /dev/null
+++ b/core/eudev/checksums
@@ -0,0 +1,2 @@
+89618619084a19e1451d373c43f141b469c9fd09767973d73dd268b92074d4fc eudev-3.2.9.tar.gz
+5b965dc067c5f411a3342f867e11ccfcf689cc1bf5957b0da4521c528be4ce5e udevd.run
diff --git a/core/eudev/depends b/core/eudev/depends
new file mode 100644
index 00000000..b342f9ac
--- /dev/null
+++ b/core/eudev/depends
@@ -0,0 +1,2 @@
+gperf make
+util-linux
diff --git a/core/eudev/files/udevd.run b/core/eudev/files/udevd.run
new file mode 100644
index 00000000..5e21489c
--- /dev/null
+++ b/core/eudev/files/udevd.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec udevd
diff --git a/core/eudev/sources b/core/eudev/sources
new file mode 100644
index 00000000..96d65f64
--- /dev/null
+++ b/core/eudev/sources
@@ -0,0 +1,2 @@
+https://dev.gentoo.org/~blueness/eudev/eudev-3.2.9.tar.gz
+files/udevd.run
diff --git a/core/eudev/version b/core/eudev/version
new file mode 100644
index 00000000..18935346
--- /dev/null
+++ b/core/eudev/version
@@ -0,0 +1 @@
+3.2.9 2
diff --git a/core/gcc/build b/core/gcc/build
new file mode 100755
index 00000000..ef0e87db
--- /dev/null
+++ b/core/gcc/build
@@ -0,0 +1,52 @@
+#!/bin/sh -e
+
+# Make sure gmp is built with generic options.
+cp -v gcc/gmp/configfsf.guess gcc/gmp/config.guess
+cp -v gcc/gmp/configfsf.sub gcc/gmp/config.sub
+
+# Use lib not lib64 by default.
+sed -i '/m64=/s/lib64/lib/' gcc/gcc/config/i386/t-linux64
+sed -i 's/lib64/lib/' gcc/gcc/config/i386/linux64.h
+
+# Build must happen outside of gcc source.
+mkdir -p gcc-build
+cd gcc-build
+
+export libat_cv_have_ifunc=no
+
+../gcc/configure \
+ --prefix=/usr \
+ --disable-multilib \
+ --disable-symvers \
+ --disable-libmpx \
+ --disable-libmudflap \
+ --disable-libsanitizer \
+ --disable-werror \
+ --disable-fixed-point \
+ --disable-libstdcxx-pch \
+ --enable-checking=release \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --with-system-zlib \
+ --enable-__cxa_atexit \
+ --enable-default-pie \
+ --enable-default-ssp \
+ --enable-shared \
+ --enable-threads \
+ --enable-tls \
+ --enable-languages=c,c++ \
+ --build=x86_64-pc-linux-musl
+
+make
+make DESTDIR="$1" install
+
+# Save 35MB.
+find "$1" -name libgtkpeer.a -delete
+find "$1" -name libgjsmalsa.a -delete
+find "$1" -name libgij.a -delete
+
+# Some legacy programs will expect cc
+ln -s gcc "$1/usr/bin/cc"
+
+# POSIX compliance.
+install -Dm755 ../c99 "$1/usr/bin/c99"
diff --git a/core/gcc/checksums b/core/gcc/checksums
new file mode 100644
index 00000000..30470230
--- /dev/null
+++ b/core/gcc/checksums
@@ -0,0 +1,5 @@
+ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206 gcc-9.2.0.tar.xz
+87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912 gmp-6.1.2.tar.xz
+1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a mpfr-4.0.2.tar.xz
+6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e mpc-1.1.0.tar.gz
+765614b3396d70bca3fa0ae4a813632486c6dca320e2bd13c8c39dca52be4a4c c99
diff --git a/core/gcc/depends b/core/gcc/depends
new file mode 100644
index 00000000..11c84767
--- /dev/null
+++ b/core/gcc/depends
@@ -0,0 +1,5 @@
+binutils
+bison
+flex
+linux-headers
+zlib
diff --git a/core/gcc/files/c99 b/core/gcc/files/c99
new file mode 100644
index 00000000..692f0924
--- /dev/null
+++ b/core/gcc/files/c99
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec cc -std=c99 "$@"
diff --git a/core/gcc/sources b/core/gcc/sources
new file mode 100644
index 00000000..a76e4eeb
--- /dev/null
+++ b/core/gcc/sources
@@ -0,0 +1,5 @@
+https://gcc.gnu.org/pub/gcc/releases/gcc-9.2.0/gcc-9.2.0.tar.xz gcc
+https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz gcc/gmp
+https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.xz gcc/mpfr
+https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz gcc/mpc
+files/c99
diff --git a/core/gcc/version b/core/gcc/version
new file mode 100644
index 00000000..b821d350
--- /dev/null
+++ b/core/gcc/version
@@ -0,0 +1 @@
+9.2.0 1
diff --git a/core/git/build b/core/git/build
new file mode 100755
index 00000000..c129008c
--- /dev/null
+++ b/core/git/build
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+cat > config.mak <<EOF
+NO_GETTEXT=YesPlease
+NO_SVN_TESTS=YesPlease
+NO_TCLTK=YesPlease
+NO_EXPAT=YesPlease
+NO_NSEC=YesPlease
+NO_PYTHON=YesPlease
+NO_PERL=YesPlease
+NO_SYS_POLL_H=1
+NO_CROSS_DIRECTORY_HARDLINKS=1
+NO_INSTALL_HARDLINKS=1
+EOF
+
+./configure \
+ --prefix=/usr \
+ ac_cv_snprintf_returns_bogus=no \
+ ac_cv_fread_reads_directories=yes
+
+make
+make DESTDIR="$1" install
diff --git a/core/git/checksums b/core/git/checksums
new file mode 100644
index 00000000..3277c107
--- /dev/null
+++ b/core/git/checksums
@@ -0,0 +1 @@
+9f71d61973626d8b28c4cdf8e2484b4bf13870ed643fed982d68b2cfd754371b git-2.24.0.tar.xz
diff --git a/core/git/depends b/core/git/depends
new file mode 100644
index 00000000..ae42686b
--- /dev/null
+++ b/core/git/depends
@@ -0,0 +1,3 @@
+curl
+libressl
+zlib
diff --git a/core/git/sources b/core/git/sources
new file mode 100644
index 00000000..c9793b8e
--- /dev/null
+++ b/core/git/sources
@@ -0,0 +1 @@
+https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.0.tar.xz
diff --git a/core/git/version b/core/git/version
new file mode 100644
index 00000000..c95bbf0c
--- /dev/null
+++ b/core/git/version
@@ -0,0 +1 @@
+2.24.0 1
diff --git a/core/grub/build b/core/grub/build
new file mode 100755
index 00000000..d0cee821
--- /dev/null
+++ b/core/grub/build
@@ -0,0 +1,38 @@
+#!/bin/sh -e
+
+# Grub is built in a function so the script argument needs to be stored.
+pkg_dir=$1
+
+build_grub() (
+ cp -a grub "grub-${1##*=}"
+ cd "grub-${1##*=}"
+
+ ./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-werror \
+ --disable-grub-mkfont \
+ --disable-grub-mount \
+ "$@"
+
+ make
+ make DESTDIR="$pkg_dir" install
+)
+
+build_grub --with-platform=pc
+build_grub --with-platform=efi --disable-efiemu
+
+# Install /etc/default/grub (used by grub-mkconfig).
+install -Dm0644 grub.default "$1/etc/default/grub"
+
+# Remove gdb debugging files.
+(
+ cd "$pkg_dir/usr/lib"
+
+ rm -f grub/*/*.module
+ rm -f grub/*/*.image
+ rm -f grub/*/kernel.exec
+ rm -f grub/*/gdb_grub
+ rm -f grub/*/gmodule.pl
+)
diff --git a/core/grub/checksums b/core/grub/checksums
new file mode 100644
index 00000000..11c607c3
--- /dev/null
+++ b/core/grub/checksums
@@ -0,0 +1,2 @@
+e5292496995ad42dabe843a0192cf2a2c502e7ffcc7479398232b10a472df77d grub-2.04.tar.xz
+93cde7ed22280bf1bf205d1e2c9700c64d8d32bd759569f6e00913ec001389c5 grub.default
diff --git a/core/grub/depends b/core/grub/depends
new file mode 100644
index 00000000..58223007
--- /dev/null
+++ b/core/grub/depends
@@ -0,0 +1,6 @@
+binutils make
+bison make
+flex make
+linux-headers make
+python make
+xz
diff --git a/core/grub/files/grub.default b/core/grub/files/grub.default
new file mode 100644
index 00000000..762f3384
--- /dev/null
+++ b/core/grub/files/grub.default
@@ -0,0 +1,53 @@
+# GRUB boot loader configuration
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="KISS"
+GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
+
+# Preload both GPT and MBR modules so that they are not missed
+GRUB_PRELOAD_MODULES="part_gpt part_msdos"
+
+# Uncomment to enable booting from LUKS encrypted devices
+#GRUB_ENABLE_CRYPTODISK=y
+
+# Set to 'countdown' or 'hidden' to change timeout behavior,
+# press ESC key to display menu.
+#GRUB_TIMEOUT_STYLE=menu
+
+# Uncomment to use basic console
+#GRUB_TERMINAL_INPUT=console
+
+# Uncomment to disable graphical terminal
+#GRUB_TERMINAL_OUTPUT=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+#GRUB_GFXMODE=auto
+
+# Uncomment to allow the kernel use the same resolution used by grub
+#GRUB_GFXPAYLOAD_LINUX=keep
+
+# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
+# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY=true
+
+# Uncomment and set to the desired menu colors. Used by normal and wallpaper
+# modes only. Entries specified as foreground/background.
+#GRUB_COLOR_NORMAL="light-blue/black"
+#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
+
+# Uncomment one of them for the gfx desired, a image background or a gfxtheme
+#GRUB_BACKGROUND="/path/to/wallpaper"
+#GRUB_THEME="/path/to/gfxtheme"
+
+# Uncomment to get a beep at GRUB start
+#GRUB_INIT_TUNE="480 440 1"
+
+# Uncomment to make GRUB remember the last selection. This requires to
+# set 'GRUB_DEFAULT=saved' above.
+#GRUB_SAVEDEFAULT="true"
diff --git a/core/grub/sources b/core/grub/sources
new file mode 100644
index 00000000..3c08ed68
--- /dev/null
+++ b/core/grub/sources
@@ -0,0 +1,2 @@
+https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz grub/
+files/grub.default
diff --git a/core/grub/version b/core/grub/version
new file mode 100644
index 00000000..b24222c0
--- /dev/null
+++ b/core/grub/version
@@ -0,0 +1 @@
+2.04 3
diff --git a/core/gzip/build b/core/gzip/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/core/gzip/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/gzip/checksums b/core/gzip/checksums
new file mode 100644
index 00000000..54032f3b
--- /dev/null
+++ b/core/gzip/checksums
@@ -0,0 +1 @@
+8425ccac99872d544d4310305f915f5ea81e04d0f437ef1a230dc9d1c819d7c0 gzip-1.10.tar.xz
diff --git a/core/gzip/sources b/core/gzip/sources
new file mode 100644
index 00000000..6bff4586
--- /dev/null
+++ b/core/gzip/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/pub/gnu/gzip/gzip-1.10.tar.xz
diff --git a/core/gzip/version b/core/gzip/version
new file mode 100644
index 00000000..82096ecf
--- /dev/null
+++ b/core/gzip/version
@@ -0,0 +1 @@
+1.10 1
diff --git a/core/kiss-utils/build b/core/kiss-utils/build
new file mode 100755
index 00000000..d59d22df
--- /dev/null
+++ b/core/kiss-utils/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+cd contrib
+
+for bin in *; do
+ install -D "$bin" "$1/usr/bin/$bin"
+done
diff --git a/core/kiss-utils/checksums b/core/kiss-utils/checksums
new file mode 100644
index 00000000..4cfa711c
--- /dev/null
+++ b/core/kiss-utils/checksums
@@ -0,0 +1 @@
+54d23b2b53df104ca776a3cfbcff354ce5912dfd87104bfded6b9b744d23b154 49cfb7cac2c2f6875b9cbe5d31c3c8deffbad0a5.tar.gz
diff --git a/core/kiss-utils/sources b/core/kiss-utils/sources
new file mode 100644
index 00000000..d19db4e8
--- /dev/null
+++ b/core/kiss-utils/sources
@@ -0,0 +1 @@
+https://github.com/kisslinux/kiss/archive/49cfb7cac2c2f6875b9cbe5d31c3c8deffbad0a5.tar.gz
diff --git a/core/kiss-utils/version b/core/kiss-utils/version
new file mode 100644
index 00000000..19de110f
--- /dev/null
+++ b/core/kiss-utils/version
@@ -0,0 +1 @@
+0.3.0 1
diff --git a/core/kiss/build b/core/kiss/build
new file mode 100755
index 00000000..2e6c7c3f
--- /dev/null
+++ b/core/kiss/build
@@ -0,0 +1,5 @@
+#!/bin/sh -e
+
+install -D kiss "$1/usr/bin/kiss"
+install -D kiss_path.sh "$1/etc/profile.d/kiss_path.sh"
+install -D kiss.1 "$1/usr/share/man/man1/kiss.1"
diff --git a/core/kiss/checksums b/core/kiss/checksums
new file mode 100644
index 00000000..833ab9db
--- /dev/null
+++ b/core/kiss/checksums
@@ -0,0 +1,2 @@
+37858e66a9cd4ae1dc33a7e5acc631fa07b97751a82d299d9f6cc038a9c66871 0.53.6.tar.gz
+d56d159fd9f0c39a2692b4b00b1543b2eb476a0659aa6899efa0ff460863dc70 kiss_path.sh
diff --git a/core/kiss/depends b/core/kiss/depends
new file mode 100644
index 00000000..0160809b
--- /dev/null
+++ b/core/kiss/depends
@@ -0,0 +1,2 @@
+git
+rsync
diff --git a/core/kiss/files/kiss_path.sh b/core/kiss/files/kiss_path.sh
new file mode 100644
index 00000000..95cf8fac
--- /dev/null
+++ b/core/kiss/files/kiss_path.sh
@@ -0,0 +1 @@
+export KISS_PATH=/var/db/kiss/repo/core:/var/db/kiss/repo/extra:/var/db/kiss/repo/xorg
diff --git a/core/kiss/sources b/core/kiss/sources
new file mode 100644
index 00000000..6dae71e8
--- /dev/null
+++ b/core/kiss/sources
@@ -0,0 +1,2 @@
+https://github.com/kisslinux/kiss/archive/0.53.6.tar.gz
+files/kiss_path.sh
diff --git a/core/kiss/version b/core/kiss/version
new file mode 100644
index 00000000..cf2870c5
--- /dev/null
+++ b/core/kiss/version
@@ -0,0 +1 @@
+0.53.6 1
diff --git a/core/libelf/build b/core/libelf/build
new file mode 100755
index 00000000..a7a7f497
--- /dev/null
+++ b/core/libelf/build
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+sed -i 's/-I/-isystem /g' libelf.pc.in
+
+./configure \
+ --prefix=/usr \
+ --enable-nls=auto
+
+make
+make prefix="$1/usr" install
diff --git a/core/libelf/checksums b/core/libelf/checksums
new file mode 100644
index 00000000..46a6d9a8
--- /dev/null
+++ b/core/libelf/checksums
@@ -0,0 +1 @@
+591a9b4ec81c1f2042a97aa60564e0cb79d041c52faa7416acb38bc95bd2c76d libelf-0.8.13.tar.gz
diff --git a/core/libelf/sources b/core/libelf/sources
new file mode 100644
index 00000000..d8f130e7
--- /dev/null
+++ b/core/libelf/sources
@@ -0,0 +1 @@
+https://fossies.org/linux/misc/old/libelf-0.8.13.tar.gz
diff --git a/core/libelf/version b/core/libelf/version
new file mode 100644
index 00000000..5af15bd9
--- /dev/null
+++ b/core/libelf/version
@@ -0,0 +1 @@
+0.8.13 2
diff --git a/core/libnl/build b/core/libnl/build
new file mode 100755
index 00000000..105b0ee6
--- /dev/null
+++ b/core/libnl/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/core/libnl/checksums b/core/libnl/checksums
new file mode 100644
index 00000000..44ea30a5
--- /dev/null
+++ b/core/libnl/checksums
@@ -0,0 +1 @@
+352133ec9545da76f77e70ccb48c9d7e5324d67f6474744647a7ed382b5e05fa libnl-3.5.0.tar.gz
diff --git a/core/libnl/sources b/core/libnl/sources
new file mode 100644
index 00000000..47e8b9d1
--- /dev/null
+++ b/core/libnl/sources
@@ -0,0 +1 @@
+https://github.com/thom311/libnl/releases/download/libnl3_5_0/libnl-3.5.0.tar.gz
diff --git a/core/libnl/version b/core/libnl/version
new file mode 100644
index 00000000..ad1efe9a
--- /dev/null
+++ b/core/libnl/version
@@ -0,0 +1 @@
+3.5.0 1
diff --git a/core/libressl/build b/core/libressl/build
new file mode 100755
index 00000000..efe55abb
--- /dev/null
+++ b/core/libressl/build
@@ -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
index 00000000..5d28022d
--- /dev/null
+++ b/core/libressl/checksums
@@ -0,0 +1,2 @@
+df7b172bf79b957dd27ef36dcaa1fb162562c0e8999e194aa8c1a3df2f15398e libressl-3.0.2.tar.gz
+57cedb6745330bc52df27fd5e80a0c7c757ad36beb3fe16a709cdb990e96087a update-certdata.sh
diff --git a/core/libressl/files/update-certdata.sh b/core/libressl/files/update-certdata.sh
new file mode 100755
index 00000000..0c333e7a
--- /dev/null
+++ b/core/libressl/files/update-certdata.sh
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+#
+# update-certdata.sh
+
+[ -w /etc/ssl ] || {
+ printf '%s\n' "${0##*/}: root required to update cert." >&2
+ exit 1
+}
+
+cd /etc/ssl && {
+ wget https://curl.haxx.se/ca/cacert.pem
+ mv -f cacert.pem cert.pem
+ printf '%s\n' "${0##*/}: updated cert.pm"
+}
diff --git a/core/libressl/post-install b/core/libressl/post-install
new file mode 100755
index 00000000..c12dca76
--- /dev/null
+++ b/core/libressl/post-install
@@ -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
index 00000000..3746774e
--- /dev/null
+++ b/core/libressl/sources
@@ -0,0 +1,2 @@
+https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.0.2.tar.gz
+files/update-certdata.sh
diff --git a/core/libressl/version b/core/libressl/version
new file mode 100644
index 00000000..b0b71c8f
--- /dev/null
+++ b/core/libressl/version
@@ -0,0 +1 @@
+3.0.2 1
diff --git a/core/linux-headers/build b/core/linux-headers/build
new file mode 100755
index 00000000..5eae502f
--- /dev/null
+++ b/core/linux-headers/build
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+make headers_install INSTALL_HDR_PATH="$1/usr"
diff --git a/core/linux-headers/checksums b/core/linux-headers/checksums
new file mode 100644
index 00000000..5ac73c7b
--- /dev/null
+++ b/core/linux-headers/checksums
@@ -0,0 +1 @@
+bf338980b1670bca287f9994b7441c2361907635879169c64ae78364efc5f491 linux-5.4.tar.xz
diff --git a/core/linux-headers/sources b/core/linux-headers/sources
new file mode 100644
index 00000000..e60ccae9
--- /dev/null
+++ b/core/linux-headers/sources
@@ -0,0 +1 @@
+https://kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.xz
diff --git a/core/linux-headers/version b/core/linux-headers/version
new file mode 100644
index 00000000..d8f4edb8
--- /dev/null
+++ b/core/linux-headers/version
@@ -0,0 +1 @@
+5.4 1
diff --git a/core/m4/build b/core/m4/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/core/m4/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/m4/checksums b/core/m4/checksums
new file mode 100644
index 00000000..1357398a
--- /dev/null
+++ b/core/m4/checksums
@@ -0,0 +1 @@
+f2c1e86ca0a404ff281631bdc8377638992744b175afb806e25871a24a934e07 m4-1.4.18.tar.xz
diff --git a/core/m4/sources b/core/m4/sources
new file mode 100644
index 00000000..07be0f71
--- /dev/null
+++ b/core/m4/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz
diff --git a/core/m4/version b/core/m4/version
new file mode 100644
index 00000000..4920469b
--- /dev/null
+++ b/core/m4/version
@@ -0,0 +1 @@
+1.4.18 2
diff --git a/core/make/build b/core/make/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/core/make/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/make/checksums b/core/make/checksums
new file mode 100644
index 00000000..92e5ce41
--- /dev/null
+++ b/core/make/checksums
@@ -0,0 +1 @@
+d6e262bf3601b42d2b1e4ef8310029e1dcf20083c5446b4b7aa67081fdffc589 make-4.2.1.tar.bz2
diff --git a/core/make/sources b/core/make/sources
new file mode 100644
index 00000000..7a32d60b
--- /dev/null
+++ b/core/make/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/make/make-4.2.1.tar.bz2
diff --git a/core/make/version b/core/make/version
new file mode 100644
index 00000000..fa7b9c86
--- /dev/null
+++ b/core/make/version
@@ -0,0 +1 @@
+4.2.1 2
diff --git a/core/mandoc/build b/core/mandoc/build
new file mode 100755
index 00000000..5b015e39
--- /dev/null
+++ b/core/mandoc/build
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+
+sed -i 's,"more -s","less",g' main.c
+
+cat > configure.local <<EOF
+PREFIX=/usr
+MANDIR=/usr/share/man
+LIBDIR=/usr/lib
+CC="${CC:-gcc}"
+CFLAGS="$CFLAGS"
+MANPATH_DEFAULT=/usr/share/man
+LN="ln -sf"
+EOF
+
+MANPATH_BASE=/usr/share/man ./configure
+make
+make -j1 DESTDIR="$1" base-install lib-install
+
+# Make binaries writable.
+chmod -v u+w "$1/usr/bin/"*
+
+# Remove all development files.
+rm -rf "$1/usr/include" \
+ "$1/usr/lib" \
+ "$1/usr/share/man/man3"
diff --git a/core/mandoc/checksums b/core/mandoc/checksums
new file mode 100644
index 00000000..05dfea01
--- /dev/null
+++ b/core/mandoc/checksums
@@ -0,0 +1 @@
+8219b42cb56fc07b2aa660574e6211ac38eefdbf21f41b698d3348793ba5d8f7 mandoc-1.14.5.tar.gz
diff --git a/core/mandoc/depends b/core/mandoc/depends
new file mode 100644
index 00000000..f22003e8
--- /dev/null
+++ b/core/mandoc/depends
@@ -0,0 +1 @@
+zlib
diff --git a/core/mandoc/sources b/core/mandoc/sources
new file mode 100644
index 00000000..85f63e7e
--- /dev/null
+++ b/core/mandoc/sources
@@ -0,0 +1 @@
+https://fossies.org/linux/misc/mandoc-1.14.5.tar.gz
diff --git a/core/mandoc/version b/core/mandoc/version
new file mode 100644
index 00000000..9507d448
--- /dev/null
+++ b/core/mandoc/version
@@ -0,0 +1 @@
+1.14.5 2
diff --git a/core/musl/build b/core/musl/build
new file mode 100755
index 00000000..b2c7144f
--- /dev/null
+++ b/core/musl/build
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --syslibdir=/usr/lib
+
+make
+make DESTDIR="$1" install
+
+mkdir -p "$1/usr/bin"
+ln -s "/usr/lib/ld-musl-x86_64.so.1" "$1/usr/bin/ldd"
+
+# 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"
diff --git a/core/musl/checksums b/core/musl/checksums
new file mode 100644
index 00000000..59161cfc
--- /dev/null
+++ b/core/musl/checksums
@@ -0,0 +1,5 @@
+1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3 musl-1.1.24.tar.gz
+30bb6d7e0e0b61fcd95d830c376c829a614bce4683c1b97e06c201ec2c6e839a cdefs.h
+c13407edd0e33be73cae72514cb234f8612e1c0e54401c9448daffd3a240158b queue.h
+e1e498a79bf160a5766fa560f2b07b206fe89fe21a62600c77d72e00a6992f92 tree.h
+d87d0cbb3690ae2c5d8cc218349fd8278b93855dd625deaf7ae50e320aad247c getconf.c
diff --git a/core/musl/files/cdefs.h b/core/musl/files/cdefs.h
new file mode 100755
index 00000000..209a623c
--- /dev/null
+++ b/core/musl/files/cdefs.h
@@ -0,0 +1,26 @@
+#warning usage of non-standard #include <sys/cdefs.h> is deprecated
+
+#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
index 00000000..c4235242
--- /dev/null
+++ b/core/musl/files/getconf.c
@@ -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/queue.h b/core/musl/files/queue.h
new file mode 100755
index 00000000..a38499a2
--- /dev/null
+++ b/core/musl/files/queue.h
@@ -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
index 00000000..eaea56aa
--- /dev/null
+++ b/core/musl/files/tree.h
@@ -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
index 00000000..c6e411f7
--- /dev/null
+++ b/core/musl/sources
@@ -0,0 +1,5 @@
+https://www.musl-libc.org/releases/musl-1.1.24.tar.gz
+files/cdefs.h
+files/queue.h
+files/tree.h
+files/getconf.c
diff --git a/core/musl/version b/core/musl/version
new file mode 100644
index 00000000..11d0eb49
--- /dev/null
+++ b/core/musl/version
@@ -0,0 +1 @@
+1.1.24 1
diff --git a/core/perl/build b/core/perl/build
new file mode 100755
index 00000000..a81dc976
--- /dev/null
+++ b/core/perl/build
@@ -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:-gcc}" \
+ -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 -delete
+find "$1" -name .packlist -delete
+find "$1" -name README\* -delete
+find "$1" -name TODO\* -delete
+find "$1" -name Change\* -delete
+find "$1" -name \*.bs -delete
+find "$1" -name \*.0 -type f -delete
+
+# 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
index 00000000..acdd60ac
--- /dev/null
+++ b/core/perl/checksums
@@ -0,0 +1 @@
+41f299900436a32e10c4804a9210dfc994209e143287fc97339b6bf086315692 v5.30.1.tar.gz
diff --git a/core/perl/depends b/core/perl/depends
new file mode 100644
index 00000000..4565337a
--- /dev/null
+++ b/core/perl/depends
@@ -0,0 +1,2 @@
+bzip2
+zlib
diff --git a/core/perl/sources b/core/perl/sources
new file mode 100644
index 00000000..29d148ed
--- /dev/null
+++ b/core/perl/sources
@@ -0,0 +1 @@
+https://github.com/Perl/perl5/archive/v5.30.1.tar.gz
diff --git a/core/perl/version b/core/perl/version
new file mode 100644
index 00000000..fd591563
--- /dev/null
+++ b/core/perl/version
@@ -0,0 +1 @@
+5.30.1 1
diff --git a/core/pkgconf/build b/core/pkgconf/build
new file mode 100755
index 00000000..503d3a77
--- /dev/null
+++ b/core/pkgconf/build
@@ -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
index 00000000..35720784
--- /dev/null
+++ b/core/pkgconf/checksums
@@ -0,0 +1 @@
+61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210 pkgconf-1.6.3.tar.xz
diff --git a/core/pkgconf/sources b/core/pkgconf/sources
new file mode 100644
index 00000000..201af1ec
--- /dev/null
+++ b/core/pkgconf/sources
@@ -0,0 +1 @@
+https://distfiles.dereferenced.org/pkgconf/pkgconf-1.6.3.tar.xz
diff --git a/core/pkgconf/version b/core/pkgconf/version
new file mode 100644
index 00000000..08dc2884
--- /dev/null
+++ b/core/pkgconf/version
@@ -0,0 +1 @@
+1.6.3 2
diff --git a/core/rsync/build b/core/rsync/build
new file mode 100755
index 00000000..6a0ede69
--- /dev/null
+++ b/core/rsync/build
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+export CFLAGS="-static $CFLAGS"
+
+./configure \
+ --prefix=/usr \
+ --with-included-popt
+
+make
+make DESTDIR="$1" install
diff --git a/core/rsync/checksums b/core/rsync/checksums
new file mode 100644
index 00000000..fb1e3676
--- /dev/null
+++ b/core/rsync/checksums
@@ -0,0 +1 @@
+55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0 rsync-3.1.3.tar.gz
diff --git a/core/rsync/depends b/core/rsync/depends
new file mode 100644
index 00000000..17a6d43d
--- /dev/null
+++ b/core/rsync/depends
@@ -0,0 +1 @@
+zlib make
diff --git a/core/rsync/sources b/core/rsync/sources
new file mode 100644
index 00000000..61a21f38
--- /dev/null
+++ b/core/rsync/sources
@@ -0,0 +1 @@
+https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
diff --git a/core/rsync/version b/core/rsync/version
new file mode 100644
index 00000000..b803f4d1
--- /dev/null
+++ b/core/rsync/version
@@ -0,0 +1 @@
+3.1.3 2
diff --git a/core/wpa_supplicant/build b/core/wpa_supplicant/build
new file mode 100755
index 00000000..35e9878c
--- /dev/null
+++ b/core/wpa_supplicant/build
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+cd wpa_supplicant
+
+make LIBDIR=/usr/lib BINDIR=/usr/bin
+make LIBDIR=/usr/lib BINDIR=/usr/bin DESTDIR="$1" install
diff --git a/core/wpa_supplicant/checksums b/core/wpa_supplicant/checksums
new file mode 100644
index 00000000..8be19a91
--- /dev/null
+++ b/core/wpa_supplicant/checksums
@@ -0,0 +1,2 @@
+fcbdee7b4a64bea8177973299c8c824419c413ec2e3a95db63dd6a5dc3541f17 wpa_supplicant-2.9.tar.gz
+6a753cde8110f38580ed8e73a50b344c9249aabcef9f1fc689900e9f0c424640 .config
diff --git a/core/wpa_supplicant/depends b/core/wpa_supplicant/depends
new file mode 100644
index 00000000..2e0bc712
--- /dev/null
+++ b/core/wpa_supplicant/depends
@@ -0,0 +1,3 @@
+libnl
+libressl
+pkgconf make
diff --git a/core/wpa_supplicant/files/.config b/core/wpa_supplicant/files/.config
new file mode 100644
index 00000000..5851a44f
--- /dev/null
+++ b/core/wpa_supplicant/files/.config
@@ -0,0 +1,550 @@
+# Example wpa_supplicant build time configuration
+#
+# This file lists the configuration options that are used when building the
+# hostapd binary. All lines starting with # are ignored. Configuration option
+# lines must be commented out complete, if they are not to be included, i.e.,
+# just setting VARIABLE=n is not disabling that variable.
+#
+# This file is included in Makefile, so variables like CFLAGS and LIBS can also
+# be modified from here. In most cases, these lines should use += in order not
+# to override previous values of the variables.
+
+
+# Uncomment following two lines and fix the paths if you have installed OpenSSL
+# or GnuTLS in non-default location
+#CFLAGS += -I/usr/local/openssl/include
+#LIBS += -L/usr/local/openssl/lib
+
+# Some Red Hat versions seem to include kerberos header files from OpenSSL, but
+# the kerberos files are not in the default include path. Following line can be
+# used to fix build issues on such systems (krb5.h not found).
+#CFLAGS += -I/usr/include/kerberos
+
+# Driver interface for generic Linux wireless extensions
+# Note: WEXT is deprecated in the current Linux kernel version and no new
+# functionality is added to it. nl80211-based interface is the new
+# replacement for WEXT and its use allows wpa_supplicant to properly control
+# the driver to improve existing functionality like roaming and to support new
+# functionality.
+CONFIG_DRIVER_WEXT=y
+
+# Driver interface for Linux drivers using the nl80211 kernel interface
+CONFIG_DRIVER_NL80211=y
+
+# QCA vendor extensions to nl80211
+#CONFIG_DRIVER_NL80211_QCA=y
+
+# driver_nl80211.c requires libnl. If you are compiling it yourself
+# you may need to point hostapd to your version of libnl.
+#
+#CFLAGS += -I$<path to libnl include files>
+#LIBS += -L$<path to libnl library files>
+
+# Use libnl v2.0 (or 3.0) libraries.
+#CONFIG_LIBNL20=y
+
+# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
+CONFIG_LIBNL32=y
+
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+#LIBS_p += -L/usr/local/lib
+#LIBS_c += -L/usr/local/lib
+
+# Driver interface for Windows NDIS
+#CONFIG_DRIVER_NDIS=y
+#CFLAGS += -I/usr/include/w32api/ddk
+#LIBS += -L/usr/local/lib
+# For native build using mingw
+#CONFIG_NATIVE_WINDOWS=y
+# Additional directories for cross-compilation on Linux host for mingw target
+#CFLAGS += -I/opt/mingw/mingw32/include/ddk
+#LIBS += -L/opt/mingw/mingw32/lib
+#CC=mingw32-gcc
+# By default, driver_ndis uses WinPcap for low-level operations. This can be
+# replaced with the following option which replaces WinPcap calls with NDISUIO.
+# However, this requires that WZC is disabled (net stop wzcsvc) before starting
+# wpa_supplicant.
+# CONFIG_USE_NDISUIO=y
+
+# Driver interface for wired Ethernet drivers
+CONFIG_DRIVER_WIRED=y
+
+# Driver interface for the Broadcom RoboSwitch family
+#CONFIG_DRIVER_ROBOSWITCH=y
+
+# Driver interface for no driver (e.g., WPS ER only)
+#CONFIG_DRIVER_NONE=y
+
+# Solaris libraries
+#LIBS += -lsocket -ldlpi -lnsl
+#LIBS_c += -lsocket
+
+# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
+# included)
+CONFIG_IEEE8021X_EAPOL=y
+
+# EAP-MD5
+CONFIG_EAP_MD5=y
+
+# EAP-MSCHAPv2
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-TLS
+CONFIG_EAP_TLS=y
+
+# EAL-PEAP
+CONFIG_EAP_PEAP=y
+
+# EAP-TTLS
+CONFIG_EAP_TTLS=y
+
+# EAP-FAST
+# Note: If OpenSSL is used as the TLS library, OpenSSL 1.0 or newer is needed
+# for EAP-FAST support. Older OpenSSL releases would need to be patched, e.g.,
+# with openssl-0.9.8x-tls-extensions.patch, to add the needed functions.
+#CONFIG_EAP_FAST=y
+
+# EAP-GTC
+CONFIG_EAP_GTC=y
+
+# EAP-OTP
+CONFIG_EAP_OTP=y
+
+# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used)
+#CONFIG_EAP_SIM=y
+
+# EAP-PSK (experimental; this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-pwd (secure authentication using only a password)
+CONFIG_EAP_PWD=y
+
+# EAP-PAX
+#CONFIG_EAP_PAX=y
+
+# LEAP
+CONFIG_EAP_LEAP=y
+
+# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used)
+#CONFIG_EAP_AKA=y
+
+# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used).
+# This requires CONFIG_EAP_AKA to be enabled, too.
+#CONFIG_EAP_AKA_PRIME=y
+
+# Enable USIM simulator (Milenage) for EAP-AKA
+#CONFIG_USIM_SIMULATOR=y
+
+# EAP-SAKE
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-TNC and related Trusted Network Connect support (experimental)
+#CONFIG_EAP_TNC=y
+
+# Wi-Fi Protected Setup (WPS)
+CONFIG_WPS=y
+# Enable WPS external registrar functionality
+#CONFIG_WPS_ER=y
+# Disable credentials for an open network by default when acting as a WPS
+# registrar.
+#CONFIG_WPS_REG_DISABLE_OPEN=y
+# Enable WPS support with NFC config method
+#CONFIG_WPS_NFC=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# EAP-EKE
+#CONFIG_EAP_EKE=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# Smartcard support (i.e., private key on a smartcard), e.g., with openssl
+# engine.
+CONFIG_SMARTCARD=y
+
+# PC/SC interface for smartcards (USIM, GSM SIM)
+# Enable this if EAP-SIM or EAP-AKA is included
+#CONFIG_PCSC=y
+
+# Support HT overrides (disable HT/HT40, mask MCS rates, etc.)
+#CONFIG_HT_OVERRIDES=y
+
+# Support VHT overrides (disable VHT, mask MCS rates, etc.)
+#CONFIG_VHT_OVERRIDES=y
+
+# Development testing
+#CONFIG_EAPOL_TEST=y
+
+# Select control interface backend for external programs, e.g, wpa_cli:
+# unix = UNIX domain sockets (default for Linux/*BSD)
+# udp = UDP sockets using localhost (127.0.0.1)
+# udp6 = UDP IPv6 sockets using localhost (::1)
+# named_pipe = Windows Named Pipe (default for Windows)
+# udp-remote = UDP sockets with remote access (only for tests systems/purpose)
+# udp6-remote = UDP IPv6 sockets with remote access (only for tests purpose)
+# y = use default (backwards compatibility)
+# If this option is commented out, control interface is not included in the
+# build.
+CONFIG_CTRL_IFACE=y
+
+# Include support for GNU Readline and History Libraries in wpa_cli.
+# When building a wpa_cli binary for distribution, please note that these
+# libraries are licensed under GPL and as such, BSD license may not apply for
+# the resulting binary.
+#CONFIG_READLINE=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/core/wpa_supplicant/sources b/core/wpa_supplicant/sources
new file mode 100644
index 00000000..f106958d
--- /dev/null
+++ b/core/wpa_supplicant/sources
@@ -0,0 +1,2 @@
+https://w1.fi/releases/wpa_supplicant-2.9.tar.gz
+files/.config wpa_supplicant/
diff --git a/core/wpa_supplicant/version b/core/wpa_supplicant/version
new file mode 100644
index 00000000..6c795bbb
--- /dev/null
+++ b/core/wpa_supplicant/version
@@ -0,0 +1 @@
+2.9 2
diff --git a/core/xz/build b/core/xz/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/core/xz/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/core/xz/checksums b/core/xz/checksums
new file mode 100644
index 00000000..d04b13dc
--- /dev/null
+++ b/core/xz/checksums
@@ -0,0 +1 @@
+3313fd2a95f43d88e44264e6b015e7d03053e681860b0d5d3f9baca79c57b7bf xz-5.2.4.tar.bz2
diff --git a/core/xz/sources b/core/xz/sources
new file mode 100644
index 00000000..a6561896
--- /dev/null
+++ b/core/xz/sources
@@ -0,0 +1 @@
+https://tukaani.org/xz/xz-5.2.4.tar.bz2
diff --git a/core/xz/version b/core/xz/version
new file mode 100644
index 00000000..9934192b
--- /dev/null
+++ b/core/xz/version
@@ -0,0 +1 @@
+5.2.4 3
diff --git a/core/zlib/build b/core/zlib/build
new file mode 100755
index 00000000..01090e82
--- /dev/null
+++ b/core/zlib/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./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
index 00000000..5051c98a
--- /dev/null
+++ b/core/zlib/checksums
@@ -0,0 +1 @@
+c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 zlib-1.2.11.tar.gz
diff --git a/core/zlib/sources b/core/zlib/sources
new file mode 100644
index 00000000..17f901f4
--- /dev/null
+++ b/core/zlib/sources
@@ -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
index 00000000..90288038
--- /dev/null
+++ b/core/zlib/version
@@ -0,0 +1 @@
+1.2.11 1
diff --git a/extra/alsa-lib/build b/extra/alsa-lib/build
new file mode 100755
index 00000000..d6f70b3d
--- /dev/null
+++ b/extra/alsa-lib/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./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
index 00000000..32fadbe8
--- /dev/null
+++ b/extra/alsa-lib/checksums
@@ -0,0 +1 @@
+c95ac63c0aad43a6ac457d960569096b0b2ef72dc4e3737e77e3e2de87022cec alsa-lib-1.2.1.1.tar.bz2
diff --git a/extra/alsa-lib/sources b/extra/alsa-lib/sources
new file mode 100644
index 00000000..766d1395
--- /dev/null
+++ b/extra/alsa-lib/sources
@@ -0,0 +1 @@
+https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.1.1.tar.bz2
diff --git a/extra/alsa-lib/version b/extra/alsa-lib/version
new file mode 100644
index 00000000..9a598df0
--- /dev/null
+++ b/extra/alsa-lib/version
@@ -0,0 +1 @@
+1.2.1.1 1
diff --git a/extra/alsa-utils/build b/extra/alsa-utils/build
new file mode 100755
index 00000000..9c4602c8
--- /dev/null
+++ b/extra/alsa-utils/build
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+
+./configure \
+ --disable-alsaconf \
+ --disable-bat \
+ --with-curses=ncursesw \
+ --disable-xmlto \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/alsa-utils/checksums b/extra/alsa-utils/checksums
new file mode 100644
index 00000000..4c3e9d37
--- /dev/null
+++ b/extra/alsa-utils/checksums
@@ -0,0 +1 @@
+0b110ba71ef41d3009db1bc4dcae0cf79efb99cb5426fa19d0312470560a2c0d alsa-utils-1.2.1.tar.bz2
diff --git a/extra/alsa-utils/depends b/extra/alsa-utils/depends
new file mode 100644
index 00000000..167d2c94
--- /dev/null
+++ b/extra/alsa-utils/depends
@@ -0,0 +1,2 @@
+alsa-lib
+ncurses
diff --git a/extra/alsa-utils/sources b/extra/alsa-utils/sources
new file mode 100644
index 00000000..4fd80f0b
--- /dev/null
+++ b/extra/alsa-utils/sources
@@ -0,0 +1 @@
+https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.1.tar.bz2
diff --git a/extra/alsa-utils/version b/extra/alsa-utils/version
new file mode 100644
index 00000000..cd3d02bc
--- /dev/null
+++ b/extra/alsa-utils/version
@@ -0,0 +1 @@
+1.2.1 1
diff --git a/extra/atk/build b/extra/atk/build
new file mode 100755
index 00000000..58e9cf84
--- /dev/null
+++ b/extra/atk/build
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+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
index 00000000..a4d52dc5
--- /dev/null
+++ b/extra/atk/checksums
@@ -0,0 +1 @@
+d4f0e3b3d21265fcf2bc371e117da51c42ede1a71f6db1c834e6976bb20997cb atk-2.34.1.tar.xz
diff --git a/extra/atk/depends b/extra/atk/depends
new file mode 100644
index 00000000..9e46ce22
--- /dev/null
+++ b/extra/atk/depends
@@ -0,0 +1,3 @@
+glib
+libffi
+meson make
diff --git a/extra/atk/sources b/extra/atk/sources
new file mode 100644
index 00000000..8d57b646
--- /dev/null
+++ b/extra/atk/sources
@@ -0,0 +1 @@
+https://ftp.gnome.org/pub/gnome/sources/atk/2.34/atk-2.34.1.tar.xz
diff --git a/extra/atk/version b/extra/atk/version
new file mode 100644
index 00000000..8f2581bf
--- /dev/null
+++ b/extra/atk/version
@@ -0,0 +1 @@
+2.34.1 1
diff --git a/extra/autoconf/build b/extra/autoconf/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/autoconf/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/autoconf/checksums b/extra/autoconf/checksums
new file mode 100644
index 00000000..821d9707
--- /dev/null
+++ b/extra/autoconf/checksums
@@ -0,0 +1 @@
+954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969 autoconf-2.69.tar.gz
diff --git a/extra/autoconf/depends b/extra/autoconf/depends
new file mode 100644
index 00000000..8fd1a89e
--- /dev/null
+++ b/extra/autoconf/depends
@@ -0,0 +1,2 @@
+m4
+perl
diff --git a/extra/autoconf/sources b/extra/autoconf/sources
new file mode 100644
index 00000000..399ad44a
--- /dev/null
+++ b/extra/autoconf/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/pub/gnu/autoconf/autoconf-2.69.tar.gz
diff --git a/extra/autoconf/version b/extra/autoconf/version
new file mode 100644
index 00000000..9c78dec0
--- /dev/null
+++ b/extra/autoconf/version
@@ -0,0 +1 @@
+2.69 2
diff --git a/extra/automake/build b/extra/automake/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/automake/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/automake/checksums b/extra/automake/checksums
new file mode 100644
index 00000000..0369191e
--- /dev/null
+++ b/extra/automake/checksums
@@ -0,0 +1 @@
+608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8 automake-1.16.1.tar.gz
diff --git a/extra/automake/depends b/extra/automake/depends
new file mode 100644
index 00000000..ef9f132a
--- /dev/null
+++ b/extra/automake/depends
@@ -0,0 +1,2 @@
+autoconf
+perl
diff --git a/extra/automake/sources b/extra/automake/sources
new file mode 100644
index 00000000..9d75a485
--- /dev/null
+++ b/extra/automake/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.gz
diff --git a/extra/automake/version b/extra/automake/version
new file mode 100644
index 00000000..541e5c6e
--- /dev/null
+++ b/extra/automake/version
@@ -0,0 +1 @@
+1.16.1 1
diff --git a/extra/cbindgen/build b/extra/cbindgen/build
new file mode 100755
index 00000000..c9cd72cf
--- /dev/null
+++ b/extra/cbindgen/build
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+cargo fetch \
+ --locked
+
+cargo build \
+ --release \
+ --frozen
+
+install -Dm755 target/release/cbindgen "$1/usr/bin/cbindgen"
diff --git a/extra/cbindgen/checksums b/extra/cbindgen/checksums
new file mode 100644
index 00000000..6a06579f
--- /dev/null
+++ b/extra/cbindgen/checksums
@@ -0,0 +1 @@
+95c68020e5563440c8264c29d0db9a193c47476f83cfd848a13526a50ac7f55e v0.10.0.tar.gz
diff --git a/extra/cbindgen/depends b/extra/cbindgen/depends
new file mode 100644
index 00000000..64fe06e5
--- /dev/null
+++ b/extra/cbindgen/depends
@@ -0,0 +1 @@
+rust make
diff --git a/extra/cbindgen/sources b/extra/cbindgen/sources
new file mode 100644
index 00000000..71a4adf8
--- /dev/null
+++ b/extra/cbindgen/sources
@@ -0,0 +1 @@
+https://github.com/eqrion/cbindgen/archive/v0.10.0.tar.gz
diff --git a/extra/cbindgen/version b/extra/cbindgen/version
new file mode 100644
index 00000000..9336e4d1
--- /dev/null
+++ b/extra/cbindgen/version
@@ -0,0 +1 @@
+0.10.0 1
diff --git a/extra/ccache/build b/extra/ccache/build
new file mode 100755
index 00000000..1b063cc2
--- /dev/null
+++ b/extra/ccache/build
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+make
+
+install -Dm 755 ccache "$1/usr/bin/ccache"
+install -Dm 644 doc/ccache.1 "$1/usr/share/man/man1/ccache.1"
+
+mkdir -p "$1/usr/lib/ccache/bin"
+
+triplet=$(cc -dumpmachine)
+
+for link in cc gcc g++ cpp c++ "$triplet-cc" "$triplet-gcc" \
+ "$triplet-g++" "$triplet-cpp" "$triplet-c++"; do
+ ln -sf /usr/bin/ccache "$1/usr/lib/ccache/bin/$link"
+done
diff --git a/extra/ccache/checksums b/extra/ccache/checksums
new file mode 100644
index 00000000..37379cb0
--- /dev/null
+++ b/extra/ccache/checksums
@@ -0,0 +1 @@
+73e2633ac9bca387b5a39c72a8f85634670c4091dab639228c433898163c86c0 ccache-3.7.6.tar.xz
diff --git a/extra/ccache/depends b/extra/ccache/depends
new file mode 100644
index 00000000..f22003e8
--- /dev/null
+++ b/extra/ccache/depends
@@ -0,0 +1 @@
+zlib
diff --git a/extra/ccache/post-install b/extra/ccache/post-install
new file mode 100755
index 00000000..75fdb200
--- /dev/null
+++ b/extra/ccache/post-install
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+cat <<EOF
+
+NOTE: To enable 'ccache' add this to your
+ '.shellrc' or '.profile'.
+
+-> export PATH=/usr/lib/ccache/bin:\$PATH
+
+EOF
diff --git a/extra/ccache/sources b/extra/ccache/sources
new file mode 100644
index 00000000..4bb82721
--- /dev/null
+++ b/extra/ccache/sources
@@ -0,0 +1 @@
+https://github.com/ccache/ccache/releases/download/v3.7.6/ccache-3.7.6.tar.xz
diff --git a/extra/ccache/version b/extra/ccache/version
new file mode 100644
index 00000000..d8833805
--- /dev/null
+++ b/extra/ccache/version
@@ -0,0 +1 @@
+3.7.6 1
diff --git a/extra/clang/build b/extra/clang/build
new file mode 100755
index 00000000..e241c57c
--- /dev/null
+++ b/extra/clang/build
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLLVM_ENABLE_RTTI=ON \
+ -DLLVM_ENABLE_EH=ON \
+ -DCLANG_BUILD_EXAMPLES=OFF \
+ -DCLANG_INCLUDE_DOCS=OFF \
+ -DCLANG_INCLUDE_TESTS=OFF \
+ -DLIBCLANG_BUILD_STATIC=ON \
+ -Wno-dev
+
+cmake --build build
+cmake --install build
diff --git a/extra/clang/checksums b/extra/clang/checksums
new file mode 100644
index 00000000..53cd6a2f
--- /dev/null
+++ b/extra/clang/checksums
@@ -0,0 +1 @@
+7ba81eef7c22ca5da688fdf9d88c20934d2d6b40bfe150ffd338900890aa4610 cfe-9.0.0.src.tar.xz
diff --git a/extra/clang/depends b/extra/clang/depends
new file mode 100644
index 00000000..7a0f0b0e
--- /dev/null
+++ b/extra/clang/depends
@@ -0,0 +1,5 @@
+cmake make
+llvm
+python make
+xz
+zlib
diff --git a/extra/clang/sources b/extra/clang/sources
new file mode 100644
index 00000000..1c1883f3
--- /dev/null
+++ b/extra/clang/sources
@@ -0,0 +1 @@
+https://releases.llvm.org/9.0.0/cfe-9.0.0.src.tar.xz
diff --git a/extra/clang/version b/extra/clang/version
new file mode 100644
index 00000000..f8041b0a
--- /dev/null
+++ b/extra/clang/version
@@ -0,0 +1 @@
+9.0.0 1
diff --git a/extra/cmake/build b/extra/cmake/build
new file mode 100755
index 00000000..401a7c14
--- /dev/null
+++ b/extra/cmake/build
@@ -0,0 +1,38 @@
+#!/bin/sh -e
+
+# Use cmake to build cmake if installed.
+# This leads to a much faster build.
+if kiss l cmake; then
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DCMAKE_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_USE_SYSTEM_CURL=True \
+ -DCMAKE_USE_SYSTEM_EXPAT=True \
+ -DCMAKE_USE_SYSTEM_ZLIB=True \
+ -DCMAKE_USE_SYSTEM_BZIP2=True \
+ -DBUILD_TESTING=OFF
+
+ cmake --build build
+ DESTDIR="$1" cmake --install build
+
+else
+ ./configure \
+ --prefix=/usr \
+ --system-curl \
+ --system-expat \
+ --system-zlib \
+ --system-bzip2 \
+ --parallel="$(nproc)"
+
+ make
+ make DESTDIR="$1" install
+fi
+
+# Grab the package version.
+IFS=. read -r ver1 ver2 _ < "${0%/*}/version"
+
+# Remove docs.
+rm -rf "$1/usr/doc"
+rm -rf "$1/usr/share/cmake-$ver1.$ver2/Help"
diff --git a/extra/cmake/checksums b/extra/cmake/checksums
new file mode 100644
index 00000000..877837b6
--- /dev/null
+++ b/extra/cmake/checksums
@@ -0,0 +1 @@
+6da56556c63cab6e9a3e1656e8763ed4a841ac9859fefb63cbe79472e67e8c5f cmake-3.16.0.tar.gz
diff --git a/extra/cmake/depends b/extra/cmake/depends
new file mode 100644
index 00000000..ae18e004
--- /dev/null
+++ b/extra/cmake/depends
@@ -0,0 +1,5 @@
+bzip2
+curl
+expat
+libressl
+zlib
diff --git a/extra/cmake/sources b/extra/cmake/sources
new file mode 100644
index 00000000..2fc2b2cb
--- /dev/null
+++ b/extra/cmake/sources
@@ -0,0 +1 @@
+https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0.tar.gz
diff --git a/extra/cmake/version b/extra/cmake/version
new file mode 100644
index 00000000..48e61399
--- /dev/null
+++ b/extra/cmake/version
@@ -0,0 +1 @@
+3.16.0 1
diff --git a/extra/cryptsetup/build b/extra/cryptsetup/build
new file mode 100755
index 00000000..6e6631df
--- /dev/null
+++ b/extra/cryptsetup/build
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+machine=$(cc -dumpmachine)
+
+./configure \
+ --prefix=/usr \
+ --build="$machine" \
+ --host="$machine" \
+ --disable-blkid
+
+make
+make DESTDIR="$1" install
diff --git a/extra/cryptsetup/checksums b/extra/cryptsetup/checksums
new file mode 100644
index 00000000..c9227e47
--- /dev/null
+++ b/extra/cryptsetup/checksums
@@ -0,0 +1 @@
+2af0ec9551ab9c870074cae9d3f68d82cab004f4095fa89db0e4413713424a46 cryptsetup-2.2.2.tar.xz
diff --git a/extra/cryptsetup/depends b/extra/cryptsetup/depends
new file mode 100644
index 00000000..0590f3c2
--- /dev/null
+++ b/extra/cryptsetup/depends
@@ -0,0 +1,4 @@
+json-c
+lvm2
+popt
+util-linux
diff --git a/extra/cryptsetup/sources b/extra/cryptsetup/sources
new file mode 100644
index 00000000..653fa179
--- /dev/null
+++ b/extra/cryptsetup/sources
@@ -0,0 +1 @@
+https://www.kernel.org/pub/linux/utils/cryptsetup/v2.2/cryptsetup-2.2.2.tar.xz
diff --git a/extra/cryptsetup/version b/extra/cryptsetup/version
new file mode 100644
index 00000000..da648f8d
--- /dev/null
+++ b/extra/cryptsetup/version
@@ -0,0 +1 @@
+2.2.2 1
diff --git a/extra/efibootmgr/build b/extra/efibootmgr/build
new file mode 100755
index 00000000..e15840ed
--- /dev/null
+++ b/extra/efibootmgr/build
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+patch -p1 < efivar.patch
+
+make \
+ EXTRA_CFLAGS=-Os \
+ EFIDIR=/boot/EFI
+
+install -Dm0755 src/efibootmgr "$1/usr/bin/efibootmgr"
+install -Dm0644 src/efibootmgr.8 "$1/usr/share/man/man8/efibootmgr.8"
diff --git a/extra/efibootmgr/checksums b/extra/efibootmgr/checksums
new file mode 100644
index 00000000..cb79ce74
--- /dev/null
+++ b/extra/efibootmgr/checksums
@@ -0,0 +1,2 @@
+22a95ebe0d5c9fb2915b3a100450f8f37484d1dbb8b296f55b343cc84f10397d 17.tar.gz
+167ac36fb4bd59e90fede0422280117c0b50d0ac3c0c7d478fea427cb9a6944c efivar.patch
diff --git a/extra/efibootmgr/depends b/extra/efibootmgr/depends
new file mode 100644
index 00000000..a760e6c7
--- /dev/null
+++ b/extra/efibootmgr/depends
@@ -0,0 +1,2 @@
+efivar
+popt
diff --git a/extra/efibootmgr/patches/efivar.patch b/extra/efibootmgr/patches/efivar.patch
new file mode 100644
index 00000000..614195f3
--- /dev/null
+++ b/extra/efibootmgr/patches/efivar.patch
@@ -0,0 +1,14 @@
+diff --git a/src/efibootmgr.c b/src/efibootmgr.c
+index de38f01..4e1a680 100644
+--- a/src/efibootmgr.c
++++ b/src/efibootmgr.c
+@@ -1536,9 +1536,6 @@ parse_opts(int argc, char **argv)
+ "invalid numeric value %s\n",
+ optarg);
+ }
+- /* XXX efivar-36 accidentally doesn't have a public
+- * header for this */
+- extern int efi_set_verbose(int verbosity, FILE *errlog);
+ efi_set_verbose(opts.verbose - 2, stderr);
+ break;
+ case 'V':
diff --git a/extra/efibootmgr/sources b/extra/efibootmgr/sources
new file mode 100644
index 00000000..4afc6a0a
--- /dev/null
+++ b/extra/efibootmgr/sources
@@ -0,0 +1,2 @@
+https://github.com/rhboot/efibootmgr/archive/17.tar.gz
+patches/efivar.patch
diff --git a/extra/efibootmgr/version b/extra/efibootmgr/version
new file mode 100644
index 00000000..5e661b99
--- /dev/null
+++ b/extra/efibootmgr/version
@@ -0,0 +1 @@
+17 1
diff --git a/extra/efivar/build b/extra/efivar/build
new file mode 100755
index 00000000..eb4038ac
--- /dev/null
+++ b/extra/efivar/build
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+
+patch -p1 < fix-gcc9-dp.h.patch
+patch -p1 < fix-gcc9.patch
+
+# Avoid repeating ourselves.
+mk() {
+ make \
+ libdir=/usr/lib/ \
+ bindir=/usr/bin/ \
+ mandir=/usr/share/man/ \
+ includedir=/usr/include/ \
+ "$@"
+}
+
+mk
+mk DESTDIR="$1" install
diff --git a/extra/efivar/checksums b/extra/efivar/checksums
new file mode 100644
index 00000000..119c5824
--- /dev/null
+++ b/extra/efivar/checksums
@@ -0,0 +1,3 @@
+3c67feb93f901b98fbb897d5ca82931a6698b5bcd6ac34f0815f670d77747b9f efivar-37.tar.bz2
+475ca086eecabeaaff6111c3e6766f7e31d88a4fb6e0d082e34201e2cfaf295a fix-gcc9-dp.h.patch
+7e72f92eb0d03558b9b14ede6a68e29c0051ffe745a8c7a84d06dce6af458351 fix-gcc9.patch
diff --git a/extra/efivar/patches/fix-gcc9-dp.h.patch b/extra/efivar/patches/fix-gcc9-dp.h.patch
new file mode 100644
index 00000000..f40942f4
--- /dev/null
+++ b/extra/efivar/patches/fix-gcc9-dp.h.patch
@@ -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/extra/efivar/patches/fix-gcc9.patch b/extra/efivar/patches/fix-gcc9.patch
new file mode 100644
index 00000000..bbb6a99a
--- /dev/null
+++ b/extra/efivar/patches/fix-gcc9.patch
@@ -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/extra/efivar/sources b/extra/efivar/sources
new file mode 100644
index 00000000..0f76dab3
--- /dev/null
+++ b/extra/efivar/sources
@@ -0,0 +1,3 @@
+https://github.com/rhboot/efivar/releases/download/37/efivar-37.tar.bz2
+patches/fix-gcc9-dp.h.patch
+patches/fix-gcc9.patch
diff --git a/extra/efivar/version b/extra/efivar/version
new file mode 100644
index 00000000..f1e16caf
--- /dev/null
+++ b/extra/efivar/version
@@ -0,0 +1 @@
+37 2
diff --git a/extra/expat/build b/extra/expat/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/expat/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/expat/checksums b/extra/expat/checksums
new file mode 100644
index 00000000..d6999e9e
--- /dev/null
+++ b/extra/expat/checksums
@@ -0,0 +1 @@
+f1063084dc4302a427dabcca499c8312b3a32a29b7d2506653ecc8f950a9a237 expat-2.2.9.tar.bz2
diff --git a/extra/expat/sources b/extra/expat/sources
new file mode 100644
index 00000000..f28df8e3
--- /dev/null
+++ b/extra/expat/sources
@@ -0,0 +1 @@
+https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.bz2
diff --git a/extra/expat/version b/extra/expat/version
new file mode 100644
index 00000000..d0111d82
--- /dev/null
+++ b/extra/expat/version
@@ -0,0 +1 @@
+2.2.9 1
diff --git a/extra/ffmpeg/build b/extra/ffmpeg/build
new file mode 100755
index 00000000..db997201
--- /dev/null
+++ b/extra/ffmpeg/build
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --enable-shared \
+ --enable-gpl \
+ --enable-version3 \
+ --enable-libass \
+ --enable-libmp3lame \
+ --enable-libopus \
+ --enable-libvorbis \
+ --enable-libtheora \
+ --enable-libvpx \
+ --enable-libx264 \
+ --enable-libx265 \
+ --enable-libxvid \
+ --enable-libwebp \
+ --enable-libdrm \
+ --disable-debug
+
+make CC="${CC:-gcc}"
+make DESTDIR="$1" install
+
+# Remove examples.
+rm -rf "$1/usr/share/ffmpeg/examples"
diff --git a/extra/ffmpeg/checksums b/extra/ffmpeg/checksums
new file mode 100644
index 00000000..4344f014
--- /dev/null
+++ b/extra/ffmpeg/checksums
@@ -0,0 +1 @@
+cec7c87e9b60d174509e263ac4011b522385fd0775292e1670ecc1180c9bb6d4 ffmpeg-4.2.1.tar.xz
diff --git a/extra/ffmpeg/depends b/extra/ffmpeg/depends
new file mode 100644
index 00000000..529204d8
--- /dev/null
+++ b/extra/ffmpeg/depends
@@ -0,0 +1,15 @@
+pkgconf make
+perl make
+yasm make
+alsa-lib
+lame
+libass
+libogg
+libtheora
+libvorbis
+libwebp
+libvpx
+opus
+x264
+x265
+xvidcore
diff --git a/extra/ffmpeg/sources b/extra/ffmpeg/sources
new file mode 100644
index 00000000..44e660ce
--- /dev/null
+++ b/extra/ffmpeg/sources
@@ -0,0 +1 @@
+https://www.ffmpeg.org/releases/ffmpeg-4.2.1.tar.xz
diff --git a/extra/ffmpeg/version b/extra/ffmpeg/version
new file mode 100644
index 00000000..fa7b9c86
--- /dev/null
+++ b/extra/ffmpeg/version
@@ -0,0 +1 @@
+4.2.1 2
diff --git a/extra/firefox/build b/extra/firefox/build
new file mode 100755
index 00000000..fb862887
--- /dev/null
+++ b/extra/firefox/build
@@ -0,0 +1,42 @@
+#!/bin/sh -e
+
+# Build autoconf 2.13 for Firefox's sole use.
+# See: https://bugzilla.mozilla.org/show_bug.cgi?id=104642
+(
+ cd autoconf2.13
+
+ ./configure \
+ --prefix="$PWD/../autoconf" \
+ --program-suffix=-2.13
+
+ make
+ make install
+)
+
+export PATH=$PWD/autoconf/bin:$PATH
+export LDFLAGS="$LDFLAGS -Wl,-rpath=/usr/lib/firefox"
+export CC=${CC:-gcc}
+export CXX=${CXX:-g++}
+
+for patch in *.patch; do
+ patch -p1 < "$patch"
+done
+
+# Fix OOM errors.
+cores=$(nproc)
+printf '%s\n' "mk_add_options MOZ_MAKE_FLAGS=\"-j$cores -l$cores\"" >> mozconfig
+
+./mach build
+DESTDIR="$1" ./mach install
+
+rm -rf "$1/usr/include"
+rm -rf "$1/usr/lib/firefox-devel"
+rm -rf "$1/usr/share/idl"
+rm -rf "$1/usr/lib/firefox/gtk2"
+rm -f "$1/usr/lib/firefox/browser/features/fxmonitor@mozilla.org.xpi"
+rm -f "$1/usr/lib/firefox/browser/features/screenshots@mozilla.org.xpi"
+rm -f "$1/usr/lib/firefox/browser/features/webcompat-reporter@mozilla.org.xpi"
+rm -f "$1/usr/lib/firefox/browser/features/webcompat@mozilla.org.xpi"
+
+install -D vendor.js "$1/usr/lib/firefox/browser/defaults/preferences/vendor.js"
+install -D policies.json "$1/usr/lib/firefox/distribution/policies.json"
diff --git a/extra/firefox/checksums b/extra/firefox/checksums
new file mode 100644
index 00000000..30128dc0
--- /dev/null
+++ b/extra/firefox/checksums
@@ -0,0 +1,15 @@
+e67c448f9e82a19c737a72f9af1ccd325ba9e86fcbb1cd6839e6eda37d0f5410 firefox-71.0.source.tar.xz
+f0611136bee505811e9ca11ca7ac188ef5323a8e2ef19cffd3edb3cf08fd791e autoconf-2.13.tar.gz
+b5e70b12cc9dd18fffd7924a7d3a2e11574136fe0764359d08eba0755f1c5d4c mozconfig
+960d82bbfdc88c95f5cb4f2e1c1bf23dae7519b3b7203914d7b3ddbff1ba4c28 stab.h
+cfc7d5006a3381e1b04f642b518317e19790ee31d23757274fdfeaba65c98b0c vendor.js
+f4ce7ee2485256b3f8c2bc467445f14b4730a7b895b17de7a21711d78bcfedea policies.json
+315880530f09175788dfa48a1915bfa1e190bfd3e267988b9100cb93006c808c fix-fortify-system-wrappers.patch
+418a2a9f80c41ee004cb640968617cab283b99f3d109aaf6180b0088d60c84b0 fix-sandbox-membarrier.patch
+14f281ee323aa682e04479019171bde243ac6227820856aa03b162179b14bfd9 fix-seccomp-bpf.patch
+b19aaae7fc45db643f8d2540d96919c745ea341e36d9aea2df40e3e90eb951f0 fix-toolkit.patch
+e24f71a6a0d8d4637b2081780c66b01be4eeb4dd496031270d0ae0b898be94d2 fix-tools.patch
+5e0fcfde375837074baad21a8ab26aa442a7940617ebd074a6b238a48f2ceb63 fix-webrtc-glibcisms.patch
+1d4a8f110d34da478f5597727eda9acacebd443dd86cce5bb64f898c01feabce mallinfo.patch
+49b1c589bc3248fa6389c8b9ff9316c5c5f10cb7868436c9c47cab888bdc8df6 firefox-71-no-dbus.patch
+b050ee807c000f26d09ff0c3e79f0149f195d802efa92b8740a75e7f07267064 firefox-71-no-accessibility.patch
diff --git a/extra/firefox/depends b/extra/firefox/depends
new file mode 100644
index 00000000..7b3a39b9
--- /dev/null
+++ b/extra/firefox/depends
@@ -0,0 +1,53 @@
+alsa-lib
+atk
+bzip2
+cairo
+cbindgen make
+clang make
+expat
+ffmpeg
+fontconfig
+freetype-harfbuzz
+fribidi
+gdk-pixbuf
+glib
+gtk+2 make
+gtk+3
+hicolor-icon-theme
+libICE
+libSM
+libX11
+libXau
+libXcomposite
+libXcursor
+libXdamage
+libXext
+libXfixes
+libXi
+libXinerama
+libXrandr
+libXrender
+libXt
+libXxf86vm
+libdrm
+libepoxy
+libffi
+libjpeg-turbo
+libpng
+libvpx
+libxcb
+libxshmfence
+llvm make
+mesa
+nasm make
+nodejs make
+pango
+perl make
+pixman
+python make
+python2 make
+rust make
+util-linux
+yasm make
+zip make
+zlib
diff --git a/extra/firefox/files/mozconfig b/extra/firefox/files/mozconfig
new file mode 100644
index 00000000..fbfc81f5
--- /dev/null
+++ b/extra/firefox/files/mozconfig
@@ -0,0 +1,59 @@
+ac_add_options --prefix=/usr
+ac_add_options --libdir=/usr/lib
+
+ac_add_options --enable-official-branding
+ac_add_options --enable-optimize="$CFLAGS"
+ac_add_options --enable-install-strip
+ac_add_options --enable-strip
+
+ac_add_options --without-system-nspr
+ac_add_options --without-system-nss
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --with-system-png
+
+# System 'libvpx' is too new.
+ac_add_options --without-system-libvpx
+
+ac_add_options --with-system-pixman
+ac_add_options --with-system-ffi
+
+ac_add_options --disable-gconf
+ac_add_options --disable-profiling
+ac_add_options --disable-accessibility
+ac_add_options --disable-tests
+ac_add_options --disable-system-extension-dirs
+ac_add_options --disable-parental-controls
+ac_add_options --disable-debug-symbols
+ac_add_options --disable-callgrind
+ac_add_options --disable-vtune
+
+# Settings for musl.
+ac_add_options --disable-elf-hack
+ac_add_options --disable-gold
+ac_add_options --disable-jemalloc
+ac_add_options --enable-release
+
+# ALSA/PulseAudio (removed in 70 (still present in 71b4(?!))
+ac_add_options --disable-pulseaudio
+ac_add_options --enable-alsa
+
+ac_add_options --disable-startup-notification
+
+# Respect the user.
+ac_add_options MOZ_SERVICES_METRICS=
+ac_add_options MOZ_PAY=
+ac_add_options MOZ_SERVICES_HEALTHREPORTER=
+ac_add_options MOZ_SERVICES_FXACCOUNTS=
+ac_add_options MOZ_SERVICES_METRICS=
+ac_add_options MOZ_DATA_REPORTING=
+ac_add_options MOZ_DEVICES=
+ac_add_options MOZ_REQUIRE_SIGNING=
+ac_add_options MOZ_TELEMETRY_REPORTING=
+ac_add_options --disable-crashreporter
+ac_add_options --disable-updater
+ac_add_options --disable-dbus
+ac_add_options --disable-eme
+ac_add_options --disable-necko-wifi
+ac_add_options --disable-webrtc
diff --git a/extra/firefox/files/policies.json b/extra/firefox/files/policies.json
new file mode 100644
index 00000000..f918c5b5
--- /dev/null
+++ b/extra/firefox/files/policies.json
@@ -0,0 +1,21 @@
+{
+ "policies": {
+ "DisableAppUpdate": true,
+ "DisableFirefoxStudies": true,
+ "DisablePocket": true,
+ "DisableTelemetry": true,
+ "DontCheckDefaultBrowser": true,
+ "DisableFeedbackCommands": true,
+ "DisableFirefoxAccounts": true,
+ "DisableFirefoxScreenshots": true,
+ "DisableFirefoxStudies": true,
+ "DisableMasterPasswordCreation": true,
+ "DisableSetDesktopBackground": true,
+ "DisableSystemAddonUpdate": true,
+ "DontCheckDefaultBrowser": true,
+ "ExtensionUpdate": false,
+ "NetworkPrediction": false,
+ "OverridePostUpdatePage": "",
+ "CaptivePortal": false
+ }
+}
diff --git a/extra/firefox/files/stab.h b/extra/firefox/files/stab.h
new file mode 100644
index 00000000..6f70af39
--- /dev/null
+++ b/extra/firefox/files/stab.h
@@ -0,0 +1,71 @@
+/* $OpenBSD: stab.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */
+/* $NetBSD: stab.h,v 1.4 1994/10/26 00:56:25 cgd Exp $ */
+
+/*-
+ * Copyright (c) 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)stab.h 5.2 (Berkeley) 4/4/91
+ */
+
+#ifndef _STAB_H_
+#define _STAB_H_
+
+/*
+ * The following are symbols used by various debuggers and by the Pascal
+ * compiler. Each of them must have one (or more) of the bits defined by
+ * the N_STAB mask set.
+ */
+
+#define N_GSYM 0x20 /* global symbol */
+#define N_FNAME 0x22 /* F77 function name */
+#define N_FUN 0x24 /* procedure name */
+#define N_STSYM 0x26 /* data segment variable */
+#define N_LCSYM 0x28 /* bss segment variable */
+#define N_MAIN 0x2a /* main function name */
+#define N_PC 0x30 /* global Pascal symbol */
+#define N_RSYM 0x40 /* register variable */
+#define N_SLINE 0x44 /* text segment line number */
+#define N_DSLINE 0x46 /* data segment line number */
+#define N_BSLINE 0x48 /* bss segment line number */
+#define N_SSYM 0x60 /* structure/union element */
+#define N_SO 0x64 /* main source file name */
+#define N_LSYM 0x80 /* stack variable */
+#define N_BINCL 0x82 /* include file beginning */
+#define N_SOL 0x84 /* included source file name */
+#define N_PSYM 0xa0 /* parameter variable */
+#define N_EINCL 0xa2 /* include file end */
+#define N_ENTRY 0xa4 /* alternate entry point */
+#define N_LBRAC 0xc0 /* left bracket */
+#define N_EXCL 0xc2 /* deleted include file */
+#define N_RBRAC 0xe0 /* right bracket */
+#define N_BCOMM 0xe2 /* begin common */
+#define N_ECOMM 0xe4 /* end common */
+#define N_ECOML 0xe8 /* end common (local name) */
+#define N_LENG 0xfe /* length of preceding entry */
+
+#endif /* !_STAB_H_ */
diff --git a/extra/firefox/files/vendor.js b/extra/firefox/files/vendor.js
new file mode 100644
index 00000000..65bc0d95
--- /dev/null
+++ b/extra/firefox/files/vendor.js
@@ -0,0 +1,619 @@
+// KISS' vendor.js.
+//
+// Sources:
+// - GNU IceCat,
+// - OpenBSD,
+// - GHacks user.js
+// - pyllyukko/user.js
+// - anarcat/firefox-tmp
+// - Debian
+
+//
+// STARTUP
+//
+
+pref("browser.newtab.preload", false);
+pref("browser.newtabpage.directory.ping", "");
+pref("browser.newtabpage.directory.source", "data:application/json,{}");
+pref("browser.newtabpage.enabled", false);
+pref("browser.newtabpage.enhanced", false);
+pref("browser.newtabpage.introShown", false);
+pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+pref("browser.newtabpage.activity-stream.telemetry", false);
+pref("browser.newtabpage.activity-stream.telemetry.ping.endpoint", "");
+pref("browser.newtabpage.activity-stream.telemetry.ut.events", false);
+pref("browser.newtabpage.activity-stream.telemetry.structuredIngestion", false);
+pref("browser.newtabpage.activity-stream.feeds.snippets", false);
+pref("browser.newtabpage.activity-stream.asrouter.providers.snippets", "");
+pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
+pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false);
+pref("browser.newtabpage.activity-stream.showSponsored", false);
+pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false);
+
+//
+// GEO
+//
+
+pref("geo.enabled", false);
+pref("geo.provider.use_gpsd", false);
+pref("geo.wifi.uri", "");
+pref("browser.search.geoip.url", "");
+pref("browser.search.geoSpecificDefaults", false);
+pref("browser.search.geoSpecificDefaults.url", "");
+
+//
+// LANGUAGE
+//
+
+pref("intl.accept_languages", "en-US, en");
+pref("javascript.use_us_english_locale", true);
+pref("intl.charset.fallback.override", "windows-1252");
+
+//
+// SILENT FIREFOX
+//
+
+pref("app.update.auto", false);
+pref("app.update.enabled", false);
+pref("browser.newtabbage.enabled", false);
+pref("browser.search.update", false);
+pref("extensions.getAddons.showPane", false);
+pref("extensions.htmlaboutaddons.recommendations.enabled", false);
+pref("toolkit.telemetry.unified", false);
+pref("toolkit.telemetry.server", "data:,");
+pref("toolkit.telemetry.archive.enabled", false);
+pref("toolkit.telemetry.newProfilePing.enabled", false);
+pref("toolkit.telemetry.shutdownPingSender.enabled", false);
+pref("toolkit.telemetry.updatePing.enabled", false);
+pref("toolkit.telemetry.bhrPing.enabled", false);
+pref("toolkit.telemetry.firstShutdownPing.enabled", false);
+pref("toolkit.telemetry.hybridContent.enabled", false);
+pref("toolkit.telemetry.coverage.opt-out", true);
+pref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false);
+pref("toolkit.telemetry.server_owner", "");
+pref("toolkit.telemetry.geckoview.streaming", false);
+pref("toolkit.telemetry.ecosystemtelemetry.enabled", false);
+pref("toolkit.telemetry.cachedClientID", "");
+pref("toolkit.telemetry.enabled", false);
+pref("toolkit.telemetry.rejected", true);
+pref("toolkit.telemetry.server", "");
+pref("toolkit.telemetry.unifiedIsOptIn", false);
+pref("toolkit.telemetry.prompted", 2);
+pref("security.protectionspopup.recordEventTelemetry", false);
+pref("security.identitypopup.recordEventTelemetry", false);
+pref("privacy.trackingprotection.origin_telemetry.enabled", false);
+pref("privacy.trackingprotection.pbmode.enabled", false);
+pref("permissions.eventTelemetry.enabled", false);
+pref("browser.urlbar.eventTelemetry.enabled", false);
+pref("toolkit.coverage.opt-out", true);
+pref("toolkit.coverage.endpoint.base", "");
+pref("datareporting.healthreport.uploadEnabled", false);
+pref("datareporting.policy.dataSubmissionEnabled", false);
+pref("datareporting.healthreport.about.reportUrl", "127.0.0.1");
+pref("datareporting.healthreport.documentServerURI", "127.0.0.1");
+pref("datareporting.policy.dataSubmissionPolicyBypassNotification", true);
+pref("datareporting.policy.firstRunURL", "");
+pref("startup.homepage_welcome_url.additional", "");
+pref("browser.startup.firstrunSkipsHomepage", true);
+pref("healthreport.uploadEnabled", false);
+pref("social.toast-notifications.enabled", false);
+pref("datareporting.healthreport.service.enabled", false);
+pref("browser.slowStartup.notificationDisabled", true);
+pref("network.http.sendRefererHeader", 2);
+pref("network.http.referer.spoofSource", false);
+pref("app.shield.optoutstudies.enabled", false);
+pref("extensions.shield-recipe-client.enabled", false);
+pref("browser.discovery.enabled", false);
+pref("breakpad.reportURL", "");
+pref("browser.tabs.crashReporting.sendReport", false);
+pref("browser.crashReports.unsubmittedCheck.enabled", false);
+pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
+pref("captivedetect.canonicalURL", "");
+pref("network.captive-portal-service.enabled", false);
+pref("network.connectivity-service.enabled", false);
+pref("extensions.blocklist.enabled", false);
+pref("privacy.announcements.enabled", false);
+pref("browser.snippets.enabled", false);
+pref("browser.snippets.syncPromo.enabled", false);
+pref("browser.snippets.geoUrl", "http://127.0.0.1/");
+pref("browser.snippets.updateUrl", "http://127.0.0.1/");
+pref("browser.snippets.statsUrl", "http://127.0.0.1/");
+pref("datareporting.policy.firstRunTime", 0);
+pref("datareporting.policy.dataSubmissionPolicyVersion", 2);
+pref("browser.webapps.checkForUpdates", 0);
+pref("browser.webapps.updateCheckUrl", "http://127.0.0.1/");
+pref("dom.flyweb.enabled", false);
+pref("services.sync.autoconnect", false);
+pref("services.sync.engine.addons", false);
+pref("services.sync.engine.bookmarks", false);
+pref("services.sync.engine.history", false);
+pref("services.sync.engine.passwords", false);
+pref("services.sync.engine.prefs", false);
+pref("services.sync.engine.tabs", false);
+pref("extensions.webservice.discoverURL", "");
+pref("browser.shell.checkDefaultBrowser", false);
+pref("shell.checkDefaultClient", false);
+pref("browser.newtabpage.directory.source", 'data:application/json,{}');
+pref("browser.urlbar.suggest.searches", false);
+pref("geo.wifi.scan", false);
+pref("dom.push.connection.enabled", false);
+pref("extensions.update.url", "");
+pref("extensions.update.background.url", "");
+pref("extensions.blocklist.detailsURL", "");
+pref("extensions.blocklist.itemURL", "");
+pref("extensions.blocklist.url", "");
+pref("extensions.hotfix.url", "");
+pref("extensions.getAddons.get.url", "");
+pref("extensions.getAddons.getWithPerformance.url", "");
+pref("extensions.getAddons.search.browseURL", "");
+pref("services.settings.server", "");
+pref("datareporting.healthreport.documentServerURI", "");
+pref("general.useragent.updates.enabled", false);
+pref("general.useragent.updates.url", "");
+pref("identity.fxaccounts.auth.uri", "");
+pref("identity.fxaccounts.remote.root", "");
+pref("identity.fxaccounts.skipDeviceRegistration", true);
+pref("browser.translation.bing.authURL", "");
+pref("browser.translation.bing.translateArrayURL", "");
+pref("browser.translation.yandex.translateURLOverride", "");
+pref("browser.translation.engine", "bing");
+pref("browser.aboutHomeSnippets.updateUrl", "nonexistent://test");
+pref("browser.newtabpage.activity-stream.default.sites", "");
+pref("browser.newtabpage.activity-stream.tippyTop.service.endpoint", "");
+pref("browser.uitour.pinnedTabUrl", "");
+pref("browser.uitour.url", "");
+pref("browser.search.isUS", true);
+pref("browser.search.countryCode", "US");
+pref("browser.ping-centre.staging.endpoint", "");
+pref("browser.ping-centre.production.endpoint", "");
+pref("browser.contentblocking.report.monitor.sign_in_url", "");
+pref("browser.contentblocking.report.monitor.url", "");
+pref("identity.fxaccounts.service.monitorLoginUrl", "");
+pref("network.trr.resolvers", "");
+pref("network.trr.uri", "");
+pref("security.certerrors.mitm.priming.endpoint", "");
+pref("signon.management.page.breachAlertUrl", "");
+pref("network.connectivity-service.IPv4.url", "");
+pref("network.connectivity-service.IPv6.url", "");
+pref("accessibility.support.url", "");
+pref("app.feedback.baseURL", "");
+pref("app.normandy.shieldLearnMoreUrl", "");
+pref("app.update.url", "");
+pref("browser.chrome.errorReporter.infoURL", "");
+pref("browser.contentblocking.report.cookie.url", "");
+pref("browser.dictionaries.download.url", "");
+pref("browser.safebrowsing.provider.google.reportMalwareMistakeURL", "");
+pref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "");
+pref("browser.safebrowsing.provider.google.reportURL", "");
+pref("browser.safebrowsing.provider.google4.dataSharingURL", "");
+pref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "");
+pref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "");
+pref("browser.safebrowsing.provider.google4.reportURL", "");
+pref("browser.safebrowsing.reportPhishURL", "");
+pref("devtools.devices.url", "");
+pref("devtools.performance.recording.ui-base-url", "");
+pref("devtools.webide.templatesURL", "");
+pref("extensions.getAddons.compatOverides.url", "");
+pref("extensions.getAddons.discovery.api_url", "");
+pref("extensions.getAddons.langpacks.url", "");
+pref("extensions.recommendations.themeRecommendationUrl", "");
+pref("gecko.handlerService.schemes.webcal.0.name", "");
+pref("gecko.handlerService.schemes.webcal.0.uriTemplate", "");
+pref("gecko.handlerService.schemes.irc.0.name", "");
+pref("gecko.handlerService.schemes.irc.0.uriTemplate", "");
+pref("media.gmp-manager.url", "");
+
+// Firefox connects to cloudfront on startup unless
+// these are false/blank.
+pref("browser.selfsupport.url", "");
+
+//
+// "SAFE" BROWSING
+//
+
+pref("browser.safebrowsing.malware.enabled", false);
+pref("browser.safebrowsing.phishing.enabled", false);
+pref("browser.safebrowsing.downloads.enabled", false);
+pref("browser.safebrowsing.downloads.remote.enabled", false);
+pref("browser.safebrowsing.downloads.remote.url", "");
+pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
+pref("browser.safebrowsing.downloads.remote.block_uncommon", false);
+pref("browser.safebrowsing.provider.mozilla.updateURL", "");
+pref("browser.safebrowsing.provider.mozilla.gethashURL", "");
+pref("browser.safebrowsing.provider.google.gethashURL", "");
+pref("browser.safebrowsing.provider.google.updateURL", "");
+pref("browser.safebrowsing.provider.google4.gethashURL", "");
+pref("browser.safebrowsing.provider.google4.updateURL", "");
+pref("privacy.trackingprotection.introURL", "");
+
+//
+// EXPERIMENTS
+//
+
+pref("app.normandy.enabled", false);
+pref("app.normandy.api_url", "");
+pref("app.normandy.user_id", "");
+pref("extensions.systemAddon.update.url", "");
+pref("browser.ping-centre.telemetry", false);
+pref("extensions.screenshots.disabled", true);
+pref("extensions.screenshots.upload-disabled", true);
+pref("extensions.formautofill.addresses.enabled", false);
+pref("extensions.formautofill.available", "off");
+pref("extensions.formautofill.creditCards.enabled", false);
+pref("extensions.formautofill.heuristics.enabled", false);
+pref("extensions.webcompat-reporter.enabled", false);
+pref("experiments.supported", false);
+pref("experiments.enabled", false);
+pref("experiments.manifest.uri", "");
+pref("network.allow-experiments", false);
+pref("privacy.trackingprotection.enabled", false);
+
+//
+// IMPLICIT OUTBOUND CONNECTIONS
+//
+
+pref("network.prefetch-next", false);
+pref("network.dns.disablePrefetch", true);
+pref("network.dns.disablePrefetchFromHTTPS", true);
+pref("network.http.keep-alive.timeout", 15);
+pref("network.predictor.enabled", false);
+pref("network.predictor.enable-prefetch", false);
+pref("network.http.speculative-parallel-limit", 0);
+pref("browser.startup.page", 0);
+pref("browser.send_pings", false);
+pref("browser.send_pings.require_same_host", true);
+pref("network.dns.blockDotOnion", true);
+pref("browser.casting.enabled", false);
+
+//
+// PROTOCOLS
+//
+
+pref("network.dns.disableIPv6", true);
+pref("network.http.altsvc.enabled", false);
+pref("network.http.altsvc.oe", false);
+pref("network.proxy.socks_remote_dns", true);
+pref("network.trr.mode", 5);
+pref("network.file.disable_unc_paths", true);
+pref("network.gio.supported-protocols", "");
+pref("network.http.pipelining", true);
+pref("network.http.proxy.pipelining", true);
+pref("network.http.pipelining.maxrequests", 10);
+pref("nglayout.initialpaint.delay", 0);
+pref("network.protocol-handler.warn-external-default", true);
+pref("network.protocol-handler.external.http", false);
+pref("network.protocol-handler.external.https", false);
+pref("network.protocol-handler.external.javascript",false);
+pref("network.protocol-handler.external.moz-extension", false);
+pref("network.protocol-handler.external.ftp", false);
+pref("network.protocol-handler.external.file", false);
+pref("network.protocol-handler.external.about", false);
+pref("network.protocol-handler.external.chrome", false);
+pref("network.protocol-handler.external.blob", false);
+pref("network.protocol-handler.external.data", false);
+pref("network.protocol-handler.expose-all", false);
+pref("network.protocol-handler.expose.http", true);
+pref("network.protocol-handler.expose.https", true);
+pref("network.protocol-handler.expose.javascript", true);
+pref("network.protocol-handler.expose.moz-extension", true);
+pref("network.protocol-handler.expose.ftp", true);
+pref("network.protocol-handler.expose.file", true);
+pref("network.protocol-handler.expose.about", true);
+pref("network.protocol-handler.expose.chrome", true);
+pref("network.protocol-handler.expose.blob", true);
+pref("network.protocol-handler.expose.data", true);
+
+//
+// SEARCH / AUTOFILL / FORMS
+//
+
+pref("browser.fixup.alternate.enabled", false);
+pref("browser.urlbar.trimURLs", false);
+pref("browser.sessionhistory.max_entries", 10);
+pref("layout.css.visited_links_enabled", false);
+pref("browser.search.suggest.enabled", false);
+pref("browser.urlbar.usepreloadedtopurls.enabled", false);
+pref("browser.urlbar.speculativeConnect.enabled", false);
+pref("browser.formfill.enable", false);
+pref("browser.taskbar.lists.enabled", false);
+pref("browser.taskbar.lists.frequent.enabled", false);
+pref("browser.taskbar.lists.recent.enabled", false);
+pref("browser.taskbar.lists.tasks.enabled", false);
+pref("browser.taskbar.previews.enable", false);
+
+//
+// PASSWORDS
+//
+
+pref("signon.autofillForms", false);
+pref("signon.formlessCapture.enabled", false);
+pref("network.auth.subresource-http-auth-allow", 1);
+
+//
+// CACHE
+//
+
+pref("browser.cache.disk.enable", false);
+pref("browser.sessionstore.privacy_level", 2);
+pref("browser.sessionstore.interval", 30000);
+pref("toolkit.winRegisterApplicationRestart", false);
+pref("browser.shell.shortcutFavicons", false);
+pref("alerts.showFavicons", false);
+
+//
+// CIPHERS
+//
+
+pref("security.ssl.require_safe_negotiation", true);
+pref("security.ssl.disable_session_identifiers", true);
+pref("security.ssl.errorReporting.automatic", false);
+pref("security.tls.enable_0rtt_data", false);
+pref("security.ssl.enable_ocsp_stapling", true);
+pref("security.OCSP.enabled", 1);
+pref("security.OCSP.require", true);
+pref("security.pki.sha1_enforcement_level", 1);
+pref("security.family_safety.mode", 0);
+pref("security.cert_pinning.enforcement_level", 2);
+pref("security.ssl.errorReporting.enabled", false);
+pref("security.ssl.errorReporting.url", "");
+pref("security.mixed_content.block_active_content", true);
+pref("security.mixed_content.block_display_content", true);
+pref("security.mixed_content.block_object_subrequest", true);
+pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
+pref("browser.ssl_override_behavior", 1);
+pref("browser.xul.error_pages.expert_bad_cert", true);
+pref("security.insecure_connection_icon.enabled", true);
+pref("security.insecure_connection_text.enabled", true);
+pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false);
+pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false);
+pref("security.ssl3.rsa_rc4_128_md5", false);
+pref("security.ssl3.rsa_rc4_128_sha", false);
+pref("security.tls.version.min", 1);
+pref("security.ssl3.dhe_rsa_aes_128_sha", false);
+pref("security.ssl3.dhe_rsa_aes_256_sha", false);
+
+//
+// FONTS
+//
+
+pref("gfx.font_rendering.opentype_svg.enabled", false);
+pref("gfx.font_rendering.graphite.enabled", false);
+
+//
+// HEADERS / REFERERS
+//
+
+pref("network.http.referer.XOriginPolicy", 2);
+pref("network.http.referer.XOriginTrimmingPolicy", 0);
+pref("network.http.referer.hideOnionSource", true);
+pref("privacy.donottrackheader.enabled", true);
+
+//
+// CONTAINERS
+//
+
+pref("privacy.userContext.ui.enabled", true);
+pref("privacy.userContext.enabled", true);
+pref("privacy.usercontext.about_newtab_segregation.enabled", true);
+pref("privacy.userContext.longPressBehavior", 2);
+
+//
+// PLUGINS
+//
+
+pref("plugin.state.flash", 0);
+pref("plugin.state.java", 0);
+pref("media.gmp-widevinecdm.visible", false);
+pref("media.gmp-widevinecdm.enabled", false);
+pref("media.eme.enabled", false);
+pref("media.gmp-manager.url.override", "data:text/plain,");
+pref("browser.eme.ui.enabled", false);
+pref("media.eme.apiVisible", false);
+pref("media.gmp-provider.enabled", false);
+pref("media.gmp-gmpopenh264.enabled", false);
+pref("media.gmp-gmpopenh264.provider.enabled", false);
+pref("plugins.hide_infobar_for_missing_plugin", true);
+pref("plugins.hide_infobar_for_outdated_plugin", true);
+pref("plugins.notifyMissingFlash", false);
+pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false);
+pref("dom.ipc.plugins.reportCrashURL", false);
+pref("plugins.click_to_play", true);
+
+//
+// CAMERA / MIC
+//
+
+pref("media.peerconnection.enabled", false);
+pref("media.peerconnection.ice.default_address_only", true);
+pref("media.peerconnection.ice.no_host", true);
+pref("webgl.disabled", true);
+pref("webgl.dxgl.enabled", false);
+pref("webgl.enable-webgl2", false);
+pref("webgl.min_capability_mode", true);
+pref("webgl.disable-extensions", true);
+pref("webgl.disable-fail-if-major-performance-caveat", true);
+pref("media.getusermedia.screensharing.enabled", false);
+pref("media.getusermedia.browser.enabled", false);
+pref("media.getusermedia.audiocapture.enabled", false);
+pref("media.autoplay.enabled.user-gestures-needed", false);
+pref("media.block-autoplay-until-in-foreground", true);
+
+//
+// WINDOW MEDDLING / POPUPS
+//
+
+pref("dom.disable_window_open_feature.close", true);
+pref("dom.disable_window_open_feature.location", true);
+pref("dom.disable_window_open_feature.menubar", true);
+pref("dom.disable_window_open_feature.minimizable", true);
+pref("dom.disable_window_open_feature.personalbar", true);
+pref("dom.disable_window_open_feature.resizable", true);
+pref("dom.disable_window_open_feature.status", true);
+pref("dom.disable_window_open_feature.titlebar", true);
+pref("dom.disable_window_open_feature.toolbar", true);
+pref("dom.disable_window_move_resize", true);
+pref("browser.link.open_newwindow", 3);
+pref("browser.link.open_newwindow.restriction", 0);
+pref("dom.disable_open_during_load", true);
+pref("dom.popup_allowed_events", "click dblclick");
+
+//
+// WEB WORKERS
+//
+
+pref("dom.serviceWorkers.enabled", false);
+pref("dom.push.enabled", false);
+pref("dom.webnotifications.enabled", false);
+pref("dom.webnotifications.serviceworker.enabled", false);
+pref("permissions.default.desktop-notification", 2);
+
+//
+// DOM / JAVASCRIPT
+//
+
+pref("dom.event.clipboardevents.enabled", false);
+pref("middlemouse.paste", false);
+pref("dom.allow_cut_copy", false);
+pref("dom.disable_beforeunload", true);
+pref("dom.vibrator.enabled", false);
+pref("javascript.options.asmjs", false);
+pref("javascript.options.wasm", false);
+pref("dom.targetBlankNoOpener.enabled", true);
+
+//
+// HARDWARE FINGERPRINTING
+//
+
+pref("dom.battery.enabled", false);
+pref("dom.vr.enabled", false);
+pref("media.navigator.enabled", false);
+pref("dom.webaudio.enabled", false);
+
+//
+// MISC
+//
+
+pref("accessibility.force_disabled", 1);
+pref("beacon.enabled", false);
+pref("browser.helperApps.deleteTempFileOnExit", true);
+pref("browser.pagethumbnails.capturing_disabled", true);
+pref("browser.tabs.remote.allowLinkedWebInFileUriProcess", false);
+pref("browser.uitour.enabled", false);
+pref("devtools.chrome.enabled", false);
+pref("devtools.debugger.remote-enabled", false);
+pref("devtools.webide.enabled", false);
+pref("devtools.webide.autoinstallADBExtension", false);
+pref("middlemouse.contentLoadURL", false);
+pref("network.http.redirection-limit", 10);
+pref("permissions.manager.defaultsUrl", "");
+pref("webchannel.allowObject.urlWhitelist", "");
+pref("network.IDN_show_punycode", true);
+pref("social.whitelist", "");
+pref("social.directories", "");
+pref("social.shareDirectory", "");
+pref("browser.apps.URL", "");
+pref("dom.enable_user_timing", false);
+pref("dom.mozTCPSocket.enabled", false);
+pref("dom.netinfo.enabled", false);
+pref("dom.telephony.enabled", false);
+pref("media.webspeech.recognition.enable", false);
+pref("device.sensors.enabled", false);
+pref("media.webspeech.synth.enabled", false);
+pref("dom.gamepad.enabled", false);
+pref("dom.enable_resource_timing", false);
+pref("dom.archivereader.enabled", false);
+pref("camera.control.face_detection.enabled", false);
+pref("browser.search.region", "US");
+pref("intl.locale.matchOS", false);
+pref("clipboard.autocopy", false);
+pref("browser.fixup.alternate.enabled", false);
+pref("media.video_stats.enabled", false);
+pref("devtools.chrome.enabled", false);
+pref("devtools.debugger.force-local", true);
+pref("browser.startup.homepage_override.mstone", "ignore");
+
+// Taken from TOR browser.
+pref("general.buildID.override", "20100101");
+pref("browser.startup.homepage_override.buildID", "20100101");
+pref("toolkit.telemetry.previousBuildID", "20100101");
+
+//
+// DOWNLOADS
+//
+
+pref("browser.download.useDownloadDir", false);
+pref("browser.download.manager.addToRecentDocs", false);
+pref("browser.download.hide_plugins_without_extensions", false);
+
+//
+// EXTENSIONS
+//
+
+pref("extensions.enabledScopes", 5);
+pref("extensions.autoDisableScopes", 15);
+pref("extensions.update.enabled", false);
+pref("xpinstall.signatures.required", true);
+pref("extensions.getAddons.cache.enabled", false);
+pref("lightweightThemes.update.enabled", false);
+pref("extensions.systemAddon.update.enabled", false);
+pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr", false);
+pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+
+//
+// STORAGE
+//
+
+pref("browser.cache.offline.enable", false);
+pref("offline-apps.allow_by_default", false);
+
+//
+// SHUTDOWN
+//
+
+pref("privacy.sanitize.sanitizeOnShutdown", true);
+pref("privacy.clearOnShutdown.formdata", true);
+pref("privacy.clearOnShutdown.offlineApps", true);
+pref("privacy.clearOnShutdown.sessions", true);
+pref("privacy.clearOnShutdown.siteSettings", false);
+pref("privacy.cpd.cache", true);
+pref("privacy.cpd.cookies", true);
+pref("privacy.cpd.formdata", true);
+pref("privacy.cpd.history", true);
+pref("privacy.cpd.offlineApps", true);
+pref("privacy.cpd.passwords", false);
+pref("privacy.cpd.sessions", true);
+pref("privacy.cpd.siteSettings", false);
+pref("privacy.sanitize.timeSpan", 0);
+
+//
+// ISOLATION
+//
+
+pref("privacy.firstparty.isolate", true);
+pref("privacy.firstparty.isolate.restrict_opener_access", true);
+pref("browser.startup.blankWindow", false);
+
+//
+// POCKET / HELLO
+//
+
+pref("loop.enabled", false);
+pref("loop.feedback.baseUrl", "");
+pref("loop.gettingStarted.url", "");
+pref("loop.learnMoreUrl", "");
+pref("loop.legal.ToS_url", "");
+pref("loop.legal.privacy_url", "");
+pref("loop.oauth.google.redirect_uri", "");
+pref("loop.oauth.google.scope", "");
+pref("loop.server", "");
+pref("loop.soft_start_hostname", "");
+pref("loop.support_url", "");
+pref("loop.throttled2", false);
+pref("loop.logDomains", false);
+pref("browser.pocket.enabled", false);
+pref("browser.pocket.api", "");
+pref("browser.pocket.site", "");
+pref("browser.pocket.oAuthConsumerKey", "");
+pref("browser.pocket.useLocaleList", false);
+pref("browser.pocket.enabledLocales", "");
diff --git a/extra/firefox/patches/firefox-71-no-accessibility.patch b/extra/firefox/patches/firefox-71-no-accessibility.patch
new file mode 100644
index 00000000..b744c577
--- /dev/null
+++ b/extra/firefox/patches/firefox-71-no-accessibility.patch
@@ -0,0 +1,13 @@
+diff -r 22ced1a079e0 accessible/ipc/extension/other/moz.build
+--- a/accessible/ipc/extension/other/moz.build Mon Sep 16 22:30:52 2019 +0300
++++ b/accessible/ipc/extension/other/moz.build Tue Sep 17 23:17:02 2019 +0200
+@@ -9,7 +9,8 @@
+
+ IPDL_SOURCES += ['PDocAccessiblePlatformExt.ipdl']
+
+-if CONFIG['ACCESSIBILITY']:
++#if CONFIG['ACCESSIBILITY']:
++if 1:
+ EXPORTS.mozilla.a11y += [
+ 'DocAccessiblePlatformExtChild.h',
+ 'DocAccessiblePlatformExtParent.h',
diff --git a/extra/firefox/patches/firefox-71-no-dbus.patch b/extra/firefox/patches/firefox-71-no-dbus.patch
new file mode 100644
index 00000000..0dba95a9
--- /dev/null
+++ b/extra/firefox/patches/firefox-71-no-dbus.patch
@@ -0,0 +1,425 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index e0fd54008d..c8a3033238 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -72,24 +72,10 @@ dependencies = [
+ "winapi 0.3.6 (git+https://github.com/froydnj/winapi-rs?branch=aarch64)",
+ ]
+
+-[[package]]
+-name = "audio_thread_priority"
+-version = "0.20.2"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-dependencies = [
+- "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "dbus 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.6 (git+https://github.com/froydnj/winapi-rs?branch=aarch64)",
+-]
+-
+ [[package]]
+ name = "audioipc"
+ version = "0.2.4"
+ dependencies = [
+- "audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cc 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
+@@ -117,7 +103,6 @@ dependencies = [
+ name = "audioipc-client"
+ version = "0.4.0"
+ dependencies = [
+- "audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "audioipc 0.2.4",
+ "cubeb-backend 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)",
+@@ -130,7 +115,6 @@ dependencies = [
+ name = "audioipc-server"
+ version = "0.2.3"
+ dependencies = [
+- "audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "audioipc 0.2.4",
+ "cubeb-core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
+@@ -837,15 +821,6 @@ dependencies = [
+ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ ]
+
+-[[package]]
+-name = "dbus"
+-version = "0.6.4"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-dependencies = [
+- "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libdbus-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+-]
+-
+ [[package]]
+ name = "deflate"
+ version = "0.7.19"
+@@ -1219,7 +1194,6 @@ name = "gkrust-shared"
+ version = "0.1.0"
+ dependencies = [
+ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "audioipc-client 0.4.0",
+ "audioipc-server 0.2.3",
+ "authenticator 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+@@ -1559,14 +1533,6 @@ name = "libc"
+ version = "0.2.60"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+
+-[[package]]
+-name = "libdbus-sys"
+-version = "0.1.5"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-dependencies = [
+- "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+-]
+-
+ [[package]]
+ name = "libloading"
+ version = "0.5.0"
+@@ -3811,7 +3777,6 @@ dependencies = [
+ "checksum atomic 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c210c1f4db048cda477b652d170572d84c9640695835f17663595d3bd543fc28"
+ "checksum atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2dcb6e6d35f20276943cc04bb98e538b348d525a04ac79c10021561d202f21"
+ "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
+-"checksum audio_thread_priority 0.20.2 (registry+https://github.com/rust-lang/crates.io-index)" = "197b2d259505d11c92d266e1784f01cc935eb764d2f54e16aedf4e5085197871"
+ "checksum authenticator 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ec149e5d5d4caa2c9ead53a8ce1ea9c4204c388c65bf3b96c2d1dc0fcf4aeb66"
+ "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875"
+ "checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a"
+@@ -3872,7 +3837,6 @@ dependencies = [
+ "checksum darling 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe629a532efad5526454efb0700f86d5ad7ff001acb37e431c8bf017a432a8e"
+ "checksum darling_core 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ee54512bec54b41cf2337a22ddfadb53c7d4c738494dc2a186d7b037ad683b85"
+ "checksum darling_macro 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cd3e432e52c0810b72898296a69d66b1d78d1517dff6cde7a130557a55a62c1"
+-"checksum dbus 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e1b39f3f6aa3d4a1522c4f0f9f1e9e9167bd93740a8690874caa7cf8ce47d7"
+ "checksum deflate 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8a6abb26e16e8d419b5c78662aa9f82857c2386a073da266840e474d5055ec86"
+ "checksum derive_more 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f57d78cf3bd45270dad4e70c21ec77a960b36c7a841ff9db76aaa775a8fb871"
+ "checksum devd-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d009f166c0d9e9f9909dc751630b3a6411ab7f85a153d32d01deb364ffe52a7"
+@@ -3931,7 +3895,6 @@ dependencies = [
+ "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
+ "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
+ "checksum libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d44e80633f007889c7eff624b709ab43c92d708caad982295768a7b13ca3b5eb"
+-"checksum libdbus-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "18cb88963258d00f4962205dbb5933d82780d9962c8c8a064b651d2ad7189210"
+ "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2"
+ "checksum libudev 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea626d3bdf40a1c5aee3bcd4f40826970cae8d80a8fec934c82a63840094dcfe"
+ "checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe"
+diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp
+index 393fb53c02..15ddd2cf70 100644
+--- a/dom/ipc/ContentChild.cpp
++++ b/dom/ipc/ContentChild.cpp
+@@ -107,9 +107,7 @@
+ #include "nsIStringBundle.h"
+ #include "nsIWorkerDebuggerManager.h"
+ #include "nsGeolocation.h"
+-#include "audio_thread_priority.h"
+ #include "nsIConsoleService.h"
+-#include "audio_thread_priority.h"
+
+ #if !defined(XP_WIN)
+ # include "mozilla/Omnijar.h"
+@@ -1782,9 +1780,6 @@ mozilla::ipc::IPCResult ContentChild::RecvSetProcessSandbox(
+ } else {
+ // Pre-start audio before sandboxing; see bug 1443612.
+ if (Preferences::GetBool("media.cubeb.sandbox")) {
+- if (atp_set_real_time_limit(0, 48000)) {
+- NS_WARNING("could not set real-time limit at process startup");
+- }
+ InstallSoftRealTimeLimitHandler();
+ } else {
+ Unused << CubebUtils::GetCubebContext();
+diff --git a/dom/media/GraphRunner.cpp b/dom/media/GraphRunner.cpp
+index 8ff3391f4e..7a97faae76 100644
+--- a/dom/media/GraphRunner.cpp
++++ b/dom/media/GraphRunner.cpp
+@@ -13,7 +13,6 @@
+ #include "nsISupportsImpl.h"
+ #include "prthread.h"
+ #include "Tracing.h"
+-#include "audio_thread_priority.h"
+
+ namespace mozilla {
+
+@@ -93,9 +92,6 @@ bool GraphRunner::OneIteration(GraphTime aStateEnd) {
+ void GraphRunner::Run() {
+ PR_SetCurrentThreadName("GraphRunner");
+
+- atp_handle* handle =
+- atp_promote_current_thread_to_real_time(0, mGraph->GraphRate());
+-
+ MonitorAutoLock lock(mMonitor);
+ while (true) {
+ while (mThreadState == ThreadState::Wait) {
+@@ -111,10 +107,6 @@ void GraphRunner::Run() {
+ mMonitor.Notify();
+ }
+
+- if (handle) {
+- atp_demote_current_thread_from_real_time(handle);
+- }
+-
+ dom::WorkletThread::DeleteCycleCollectedJSContext();
+ }
+
+diff --git a/dom/media/UnderrunHandlerLinux.cpp b/dom/media/UnderrunHandlerLinux.cpp
+index af5c84538e..23bf97a31f 100644
+--- a/dom/media/UnderrunHandlerLinux.cpp
++++ b/dom/media/UnderrunHandlerLinux.cpp
+@@ -9,7 +9,6 @@
+
+ #include <mozilla/Sprintf.h>
+ #include <mozilla/Atomics.h>
+-#include "audio_thread_priority.h"
+
+ namespace mozilla {
+
+@@ -57,20 +56,6 @@ void InstallSoftRealTimeLimitHandler() {
+ }
+
+ void DemoteThreadFromRealTime() {
+- atp_thread_info* info = atp_get_current_thread_info();
+- if (!info) {
+- NS_WARNING("Could not get current thread info when demoting thread.");
+- return;
+- }
+- int rv = atp_demote_thread_from_real_time(info);
+- if (rv) {
+- NS_WARNING("Could not demote thread from real-time.");
+- return;
+- }
+- rv = atp_free_thread_info(info);
+- if (rv) {
+- NS_WARNING("Could not free atp_thread_info struct");
+- }
+ gRealtimeLimitReached = false;
+ }
+
+diff --git a/dom/media/moz.build b/dom/media/moz.build
+index 716c6a2322..840465f04a 100644
+--- a/dom/media/moz.build
++++ b/dom/media/moz.build
+@@ -101,7 +101,6 @@ XPIDL_SOURCES += [
+ XPIDL_MODULE = 'dom_media'
+
+ EXPORTS += [
+- '../../third_party/rust/audio_thread_priority/audio_thread_priority.h',
+ 'ADTSDecoder.h',
+ 'ADTSDemuxer.h',
+ 'AsyncLogger.h',
+diff --git a/media/audioipc/audioipc/Cargo.toml b/media/audioipc/audioipc/Cargo.toml
+index 286e16789b..c34775cea1 100644
+--- a/media/audioipc/audioipc/Cargo.toml
++++ b/media/audioipc/audioipc/Cargo.toml
+@@ -19,7 +19,6 @@ serde = "1.*.*"
+ serde_derive = "1.*.*"
+ tokio = "0.1"
+ tokio-io = "0.1"
+-audio_thread_priority = "0.20.2"
+
+ [target.'cfg(unix)'.dependencies]
+ iovec = "0.1"
+diff --git a/media/audioipc/audioipc/src/messages.rs b/media/audioipc/audioipc/src/messages.rs
+index 9a2ca4d59e..612e8d5050 100644
+--- a/media/audioipc/audioipc/src/messages.rs
++++ b/media/audioipc/audioipc/src/messages.rs
+@@ -9,8 +9,6 @@ use cubeb::{self, ffi};
+ use std::ffi::{CStr, CString};
+ use std::os::raw::{c_char, c_int, c_uint};
+ use std::ptr;
+-#[cfg(target_os = "linux")]
+-use audio_thread_priority::RtPriorityThreadInfo;
+
+ #[derive(Debug, Serialize, Deserialize)]
+ pub struct Device {
+@@ -209,9 +207,6 @@ pub enum ServerMessage {
+ StreamSetVolume(usize, f32),
+ StreamGetCurrentDevice(usize),
+ StreamRegisterDeviceChangeCallback(usize, bool),
+-
+- #[cfg(target_os = "linux")]
+- PromoteThreadToRealTime([u8; std::mem::size_of::<RtPriorityThreadInfo>()]),
+ }
+
+ // Server -> Client messages.
+diff --git a/media/audioipc/client/Cargo.toml b/media/audioipc/client/Cargo.toml
+index 866cde7e98..eaf9a62cc7 100644
+--- a/media/audioipc/client/Cargo.toml
++++ b/media/audioipc/client/Cargo.toml
+@@ -9,7 +9,6 @@ description = "Cubeb Backend for talking to remote cubeb server."
+ edition = "2018"
+
+ [dependencies]
+-audio_thread_priority = "0.20.2"
+ audioipc = { path="../audioipc" }
+ cubeb-backend = "0.6.0"
+ futures = { version="0.1.18", default-features=false, features=["use_std"] }
+diff --git a/media/audioipc/client/src/context.rs b/media/audioipc/client/src/context.rs
+index c20e281248..e13dbc2d8d 100644
+--- a/media/audioipc/client/src/context.rs
++++ b/media/audioipc/client/src/context.rs
+@@ -6,10 +6,6 @@
+ use crate::{assert_not_in_callback, run_in_callback};
+ use crate::stream;
+ use crate::{ClientStream, G_SERVER_FD, CPUPOOL_INIT_PARAMS};
+-#[cfg(not(target_os = "linux"))]
+-use audio_thread_priority::promote_current_thread_to_real_time;
+-#[cfg(target_os = "linux")]
+-use audio_thread_priority::get_current_thread_info;
+ use audioipc::codec::LengthDelimitedCodec;
+ use audioipc::frame::{framed, Framed};
+ use audioipc::platformhandle_passing::{framed_with_platformhandles, FramedWithPlatformHandles};
+@@ -91,34 +87,6 @@ fn open_server_stream() -> io::Result<audioipc::MessageStream> {
+ }
+ }
+
+-#[cfg(target_os = "linux")]
+-fn promote_thread(rpc: &rpc::ClientProxy<ServerMessage, ClientMessage>)
+-{
+- match get_current_thread_info() {
+- Ok(info) => {
+- let bytes = info.serialize();
+- // Don't wait for the response, this is on the callback thread, which must not block.
+- rpc.call(ServerMessage::PromoteThreadToRealTime(bytes));
+- }
+- Err(_) => {
+- warn!("Could not remotely promote thread to RT.");
+- }
+- }
+-}
+-
+-#[cfg(not(target_os = "linux"))]
+-fn promote_thread(_rpc: &rpc::ClientProxy<ServerMessage, ClientMessage>)
+-{
+- match promote_current_thread_to_real_time(0, 48000) {
+- Ok(_) => {
+- info!("Audio thread promoted to real-time.");
+- }
+- Err(_) => {
+- warn!("Could not promote thread to real-time.");
+- }
+- }
+-}
+-
+ fn register_thread(callback: Option<extern "C" fn(*const ::std::os::raw::c_char)>) {
+ if let Some(func) = callback {
+ let thr = thread::current();
+@@ -127,12 +95,6 @@ fn register_thread(callback: Option<extern "C" fn(*const ::std::os::raw::c_char)
+ }
+ }
+
+-fn promote_and_register_thread(rpc: &rpc::ClientProxy<ServerMessage, ClientMessage>,
+- callback: Option<extern "C" fn(*const ::std::os::raw::c_char)>) {
+- promote_thread(rpc);
+- register_thread(callback);
+-}
+-
+ #[derive(Default)]
+ struct DeviceCollectionCallback {
+ cb: ffi::cubeb_device_collection_changed_callback,
+@@ -235,7 +197,6 @@ impl ContextOps for ClientContext {
+
+ let cpu_pool = futures_cpupool::Builder::new()
+ .name_prefix("AudioIPC")
+- .after_start(move || promote_and_register_thread(&rpc2, params.thread_create_callback))
+ .pool_size(params.pool_size)
+ .stack_size(params.stack_size)
+ .create();
+diff --git a/media/audioipc/server/Cargo.toml b/media/audioipc/server/Cargo.toml
+index 8a628e7090..31f23cbe78 100644
+--- a/media/audioipc/server/Cargo.toml
++++ b/media/audioipc/server/Cargo.toml
+@@ -9,7 +9,6 @@ description = "Remote cubeb server"
+ edition = "2018"
+
+ [dependencies]
+-audio_thread_priority = "0.20.2"
+ audioipc = { path = "../audioipc" }
+ cubeb-core = "0.6.0"
+ futures = "0.1.18"
+diff --git a/media/audioipc/server/src/lib.rs b/media/audioipc/server/src/lib.rs
+index 63b373fe8f..75f8b99123 100644
+--- a/media/audioipc/server/src/lib.rs
++++ b/media/audioipc/server/src/lib.rs
+@@ -11,7 +11,6 @@ extern crate log;
+ #[macro_use]
+ extern crate lazy_static;
+
+-use audio_thread_priority::promote_current_thread_to_real_time;
+ use audioipc::core;
+ use audioipc::platformhandle_passing::framed_with_platformhandles;
+ use audioipc::rpc;
+@@ -64,12 +63,6 @@ fn run() -> Result<ServerWrapper> {
+ trace!("Starting up cubeb audio server event loop thread...");
+
+ let callback_thread = core::spawn_thread("AudioIPC Callback RPC", || {
+- match promote_current_thread_to_real_time(0, 48000) {
+- Ok(_) => {}
+- Err(_) => {
+- debug!("Failed to promote audio callback thread to real-time.");
+- }
+- }
+ trace!("Starting up cubeb audio callback event loop thread...");
+ Ok(())
+ })
+diff --git a/media/audioipc/server/src/server.rs b/media/audioipc/server/src/server.rs
+index 3d98c8fed2..35fff91130 100644
+--- a/media/audioipc/server/src/server.rs
++++ b/media/audioipc/server/src/server.rs
+@@ -30,8 +30,6 @@ use std::rc::Rc;
+ use std::{panic, slice};
+ use tokio::reactor;
+ use tokio::runtime::current_thread;
+-#[cfg(target_os = "linux")]
+-use audio_thread_priority::{RtPriorityThreadInfo, promote_thread_to_real_time};
+
+ use crate::errors::*;
+
+@@ -521,21 +519,6 @@ impl CubebServer {
+ )
+ .unwrap_or_else(error)
+ },
+-
+- #[cfg(target_os = "linux")]
+- ServerMessage::PromoteThreadToRealTime(thread_info) => {
+- let info = RtPriorityThreadInfo::deserialize(thread_info);
+- match promote_thread_to_real_time(info, 0, 48000) {
+- Ok(_) => {
+- info!("Promotion of content process thread to real-time OK");
+- }
+- Err(_) => {
+- warn!("Promotion of content process thread to real-time error");
+- }
+- }
+- ClientMessage::ThreadPromoted
+- },
+-
+ };
+
+ trace!("process_msg: req={:?}, resp={:?}", msg, resp);
+diff --git a/toolkit/library/rust/shared/Cargo.toml b/toolkit/library/rust/shared/Cargo.toml
+index 190503e2ab..dd7f0a5234 100644
+--- a/toolkit/library/rust/shared/Cargo.toml
++++ b/toolkit/library/rust/shared/Cargo.toml
+@@ -40,7 +40,6 @@ bitsdownload = { path = "../../../components/bitsdownload", optional = true }
+ storage = { path = "../../../../storage/rust" }
+ bookmark_sync = { path = "../../../components/places/bookmark_sync", optional = true }
+ shift_or_euc_c = "0.1.0"
+-audio_thread_priority = "0.20.2"
+ mdns_service = { path="../../../../media/mtransport/mdns_service", optional = true }
+
+ [build-dependencies]
+diff --git a/toolkit/library/rust/shared/lib.rs b/toolkit/library/rust/shared/lib.rs
+index f76f53436d..318f904703 100644
+--- a/toolkit/library/rust/shared/lib.rs
++++ b/toolkit/library/rust/shared/lib.rs
+@@ -48,8 +48,6 @@ extern crate shift_or_euc_c;
+
+ extern crate arrayvec;
+
+-extern crate audio_thread_priority;
+-
+ #[cfg(feature = "webrtc")]
+ extern crate mdns_service;
+
diff --git a/extra/firefox/patches/fix-fortify-system-wrappers.patch b/extra/firefox/patches/fix-fortify-system-wrappers.patch
new file mode 100644
index 00000000..17cf7e30
--- /dev/null
+++ b/extra/firefox/patches/fix-fortify-system-wrappers.patch
@@ -0,0 +1,13 @@
+The wrapper features.h gets pulled in by system headers causing thigns to
+break. We work around it by simply not wrap features.h
+
+--- ./config/system-headers.mozbuild.orig
++++ ./config/system-headers.mozbuild
+@@ -229,7 +229,6 @@
+ 'execinfo.h',
+ 'extras.h',
+ 'fcntl.h',
+- 'features.h',
+ 'fenv.h',
+ 'ffi.h',
+ 'fibdef.h',
diff --git a/extra/firefox/patches/fix-sandbox-membarrier.patch b/extra/firefox/patches/fix-sandbox-membarrier.patch
new file mode 100644
index 00000000..4bd3b80d
--- /dev/null
+++ b/extra/firefox/patches/fix-sandbox-membarrier.patch
@@ -0,0 +1,54 @@
+allow usage of SYS_membarrier, needed since musl-1.1.22
+
+Taken from voidlinux: https://github.com/void-linux/void-packages/commit/4198411ac3b9e2620e171c662df82008da0faebb
+
+--- a/security/sandbox/linux/SandboxFilter.cpp
++++ b/security/sandbox/linux/SandboxFilter.cpp
+@@ -572,6 +572,8 @@
+ case __NR_set_tid_address:
+ return Allow();
+ #endif
++ case __NR_membarrier:
++ return Allow();
+
+ // prctl
+ case __NR_prctl: {
+
+--- a/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
++++ b/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
+@@ -1385,6 +1385,10 @@
+ #define __NR_memfd_create (__NR_SYSCALL_BASE+385)
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier (__NR_SYSCALL_BASE+389)
++#endif
++
+ // ARM private syscalls.
+ #if !defined(__ARM_NR_BASE)
+ #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
+
+--- a/security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
++++ b/security/sandbox/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h
+@@ -1290,5 +1290,9 @@
+ #define __NR_memfd_create 319
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier 324
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_
+
+--- a/security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
++++ b/security/sandbox/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
+@@ -1490,5 +1490,9 @@
+ #define __NR_shutdown 373
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier 375
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_
+
diff --git a/extra/firefox/patches/fix-seccomp-bpf.patch b/extra/firefox/patches/fix-seccomp-bpf.patch
new file mode 100644
index 00000000..da102b46
--- /dev/null
+++ b/extra/firefox/patches/fix-seccomp-bpf.patch
@@ -0,0 +1,14 @@
+--- a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
++++ b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
+@@ -25,6 +25,11 @@
+ #include "sandbox/linux/system_headers/linux_seccomp.h"
+ #include "sandbox/linux/system_headers/linux_signal.h"
+
++// musl libc defines siginfo_t __si_fields instead of _sifields
++#if defined(OS_LINUX) && !defined(__GLIBC__)
++#define _sifields __si_fields
++#endif
++
+ namespace {
+
+ struct arch_sigsys {
diff --git a/extra/firefox/patches/fix-toolkit.patch b/extra/firefox/patches/fix-toolkit.patch
new file mode 100644
index 00000000..414734df
--- /dev/null
+++ b/extra/firefox/patches/fix-toolkit.patch
@@ -0,0 +1,90 @@
+diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
+index 4222ce3..4d40c6a 100644
+--- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
++++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
+@@ -46,6 +46,7 @@
+ #include <sys/mman.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
++#include <libgen.h>
+
+ #include <iostream>
+ #include <set>
+diff --git a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
+index 6019fc7..5953e32 100644
+--- a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
++++ b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
+@@ -41,6 +41,10 @@
+
+ #include "common/using_std_string.h"
+
++#ifndef N_UNDF
++#define N_UNDF 0
++#endif
++
+ using std::vector;
+
+ namespace google_breakpad {
+diff --git a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
+index 98ee2dd..d57aa68 100644
+--- a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
++++ b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
+@@ -55,7 +55,7 @@
+
+ #ifdef HAVE_MACH_O_NLIST_H
+ #include <mach-o/nlist.h>
+-#elif defined(HAVE_A_OUT_H)
++#elif 0
+ #include <a.out.h>
+ #endif
+
+diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
+index 93fdad7..f34e5e0 100644
+--- a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
++++ b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
+@@ -1239,6 +1239,12 @@ struct kernel_statfs {
+ #ifndef __NR_fallocate
+ #define __NR_fallocate 285
+ #endif
++
++#undef __NR_pread
++#define __NR_pread __NR_pread64
++#undef __NR_pwrite
++#define __NR_pwrite __NR_pwrite64
++
+ /* End of x86-64 definitions */
+ #elif defined(__mips__)
+ #if _MIPS_SIM == _MIPS_SIM_ABI32
+diff --git a/toolkit/mozapps/update/common/updatedefines.h b/toolkit/mozapps/update/common/updatedefines.h
+index 79276f7..4c67976 100644
+--- a/toolkit/mozapps/update/common/updatedefines.h
++++ b/toolkit/mozapps/update/common/updatedefines.h
+@@ -87,7 +87,7 @@ static inline int mywcsprintf(WCHAR* dest, size_t count, const WCHAR* fmt,
+
+ # ifdef SOLARIS
+ # include <sys/stat.h>
+-# else
++# elif !defined(__linux__) || defined(__GLIBC__)
+ # include <fts.h>
+ # endif
+ # include <dirent.h>
+diff --git a/toolkit/mozapps/update/updater/updater.cpp b/toolkit/mozapps/update/updater/updater.cpp
+index 257ccb4..01314e4 100644
+--- a/toolkit/mozapps/update/updater/updater.cpp
++++ b/toolkit/mozapps/update/updater/updater.cpp
+@@ -3978,6 +3978,7 @@
+
+ int add_dir_entries(const NS_tchar* dirpath, ActionList* list) {
+ int rv = OK;
++#if !defined(__linux__) || defined(__GLIBC__)
+ FTS* ftsdir;
+ FTSENT* ftsdirEntry;
+ mozilla::UniquePtr<NS_tchar[]> searchpath(get_full_path(dirpath));
+@@ -4085,6 +4086,7 @@
+ }
+
+ fts_close(ftsdir);
++#endif
+
+ return rv;
+ }
diff --git a/extra/firefox/patches/fix-tools.patch b/extra/firefox/patches/fix-tools.patch
new file mode 100644
index 00000000..93b9d19c
--- /dev/null
+++ b/extra/firefox/patches/fix-tools.patch
@@ -0,0 +1,37 @@
+diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/core/platform-linux-android.cpp
+index 19d0a5c56d..b64b543066 100644
+--- a/tools/profiler/core/platform-linux-android.cpp
++++ b/tools/profiler/core/platform-linux-android.cpp
+@@ -506,8 +506,10 @@ static void PlatformInit(PSLockRef aLock) {}
+ ucontext_t sSyncUContext;
+
+ void Registers::SyncPopulate() {
+- if (!getcontext(&sSyncUContext)) {
+- PopulateRegsFromContext(*this, &sSyncUContext);
+- }
++ #if defined(__GLIBC__)
++ if (!getcontext(&sSyncUContext)) {
++ PopulateRegsFromContext(*this, &sSyncUContext);
++ }
++ #endif
+ }
+ #endif
+diff --git a/tools/profiler/lul/LulElf.cpp b/tools/profiler/lul/LulElf.cpp
+index 9998d04d0d..348a7086fc 100644
+--- a/tools/profiler/lul/LulElf.cpp
++++ b/tools/profiler/lul/LulElf.cpp
+@@ -469,10 +469,10 @@ string FormatIdentifier(unsigned char identifier[16]) {
+ // Return the non-directory portion of FILENAME: the portion after the
+ // last slash, or the whole filename if there are no slashes.
+ string BaseFileName(const string& filename) {
+- // Lots of copies! basename's behavior is less than ideal.
+- char* c_filename = strdup(filename.c_str());
+- string base = basename(c_filename);
+- free(c_filename);
++ // basename's behavior is less than ideal so avoid it
++ const char *c_filename = filename.c_str();
++ const char *p = strrchr(c_filename, '/');
++ string base = p ? p+1 : c_filename;
+ return base;
+ }
+
diff --git a/extra/firefox/patches/fix-webrtc-glibcisms.patch b/extra/firefox/patches/fix-webrtc-glibcisms.patch
new file mode 100644
index 00000000..658b076d
--- /dev/null
+++ b/extra/firefox/patches/fix-webrtc-glibcisms.patch
@@ -0,0 +1,20 @@
+--- ./media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c.orig 2018-05-09 23:48:44.677389171 +0200
++++ ./media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c 2018-05-09 23:48:56.254373557 +0200
+@@ -14,7 +14,7 @@
+ #ifndef __GLIBC_PREREQ
+ #define __GLIBC_PREREQ(a, b) 0
+ #endif
+-#if __GLIBC_PREREQ(2, 16)
++#if !__GLIBC__ || __GLIBC_PREREQ(2, 16)
+ #include <sys/auxv.h>
+ #else
+ #include <fcntl.h>
+@@ -32,7 +32,7 @@
+ int architecture = 0;
+ unsigned long hwcap = 0;
+ const char* platform = NULL;
+-#if __GLIBC_PREREQ(2, 16)
++#if !__GLIBC__ || __GLIBC_PREREQ(2, 16)
+ hwcap = getauxval(AT_HWCAP);
+ platform = (const char*)getauxval(AT_PLATFORM);
+ #else
diff --git a/extra/firefox/patches/mallinfo.patch b/extra/firefox/patches/mallinfo.patch
new file mode 100644
index 00000000..0649413c
--- /dev/null
+++ b/extra/firefox/patches/mallinfo.patch
@@ -0,0 +1,34 @@
+--- a/xpcom/base/nsMemoryReporterManager.cpp.orig 2019-03-19 17:12:20.844810044 +0100
++++ b/xpcom/base/nsMemoryReporterManager.cpp 2019-03-19 17:13:32.505133615 +0100
+@@ -123,6 +123,7 @@
+ return GetProcSelfSmapsPrivate(aN);
+ }
+
++#ifdef __GLIBC__
+ # ifdef HAVE_MALLINFO
+ # define HAVE_SYSTEM_HEAP_REPORTER 1
+ static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) {
+@@ -142,6 +143,7 @@
+ return NS_OK;
+ }
+ # endif
++#endif // __GLIBC__
+
+ #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
+ defined(__OpenBSD__) || defined(__FreeBSD_kernel__)
+@@ -642,6 +644,7 @@
+ return NS_OK;
+ }
+
++#ifdef __GLIBC__
+ # define HAVE_SYSTEM_HEAP_REPORTER 1
+ // Windows can have multiple separate heaps. During testing there were multiple
+ // heaps present but the non-default ones had sizes no more than a few 10s of
+@@ -698,6 +701,7 @@
+ *aSizeOut = heapsSize;
+ return NS_OK;
+ }
++#endif // __GLIBC__
+
+ struct SegmentKind {
+ DWORD mState;
diff --git a/extra/firefox/sources b/extra/firefox/sources
new file mode 100644
index 00000000..99c2a787
--- /dev/null
+++ b/extra/firefox/sources
@@ -0,0 +1,15 @@
+https://archive.mozilla.org/pub/firefox/candidates/71.0-candidates/build2/source/firefox-71.0.source.tar.xz
+https://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz autoconf2.13/
+files/mozconfig
+files/stab.h toolkit/crashreporter/google-breakpad/src/
+files/vendor.js
+files/policies.json
+patches/fix-fortify-system-wrappers.patch
+patches/fix-sandbox-membarrier.patch
+patches/fix-seccomp-bpf.patch
+patches/fix-toolkit.patch
+patches/fix-tools.patch
+patches/fix-webrtc-glibcisms.patch
+patches/mallinfo.patch
+patches/firefox-71-no-dbus.patch
+patches/firefox-71-no-accessibility.patch
diff --git a/extra/firefox/version b/extra/firefox/version
new file mode 100644
index 00000000..4f95e8e6
--- /dev/null
+++ b/extra/firefox/version
@@ -0,0 +1 @@
+71.0 1
diff --git a/extra/fribidi/build b/extra/fribidi/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/fribidi/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/fribidi/checksums b/extra/fribidi/checksums
new file mode 100644
index 00000000..30209904
--- /dev/null
+++ b/extra/fribidi/checksums
@@ -0,0 +1 @@
+5ab5f21e9f2fc57b4b40f8ea8f14dba78a5cc46d9cf94bc5e00a58e6886a935d fribidi-1.0.7.tar.bz2
diff --git a/extra/fribidi/sources b/extra/fribidi/sources
new file mode 100644
index 00000000..44e55b13
--- /dev/null
+++ b/extra/fribidi/sources
@@ -0,0 +1 @@
+https://github.com/fribidi/fribidi/releases/download/v1.0.7/fribidi-1.0.7.tar.bz2
diff --git a/extra/fribidi/version b/extra/fribidi/version
new file mode 100644
index 00000000..5c9722cd
--- /dev/null
+++ b/extra/fribidi/version
@@ -0,0 +1 @@
+1.0.7 1
diff --git a/extra/giflib/build b/extra/giflib/build
new file mode 100755
index 00000000..431cc725
--- /dev/null
+++ b/extra/giflib/build
@@ -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
index 00000000..023118b3
--- /dev/null
+++ b/extra/giflib/checksums
@@ -0,0 +1 @@
+31da5562f44c5f15d63340a09a4fd62b48c45620cd302f77a6d9acf0077879bd giflib-5.2.1.tar.gz
diff --git a/extra/giflib/sources b/extra/giflib/sources
new file mode 100644
index 00000000..dc1326bc
--- /dev/null
+++ b/extra/giflib/sources
@@ -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
index 00000000..a06ff620
--- /dev/null
+++ b/extra/giflib/version
@@ -0,0 +1 @@
+5.2.1 1
diff --git a/extra/glib/build b/extra/glib/build
new file mode 100755
index 00000000..60f19b1f
--- /dev/null
+++ b/extra/glib/build
@@ -0,0 +1,18 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+# Remove 'libelf' dependency.
+sed -i 's/if have_libelf/if not have_libelf/' gio/meson.build
+
+meson \
+ --prefix=/usr \
+ -Dman=false \
+ -Dfam=false \
+ . build
+
+ninja -C build
+ninja -C build install
+
+# Purge gdbus.
+rm -rf "$1/usr/bin/gdbus"
diff --git a/extra/glib/checksums b/extra/glib/checksums
new file mode 100644
index 00000000..05674c45
--- /dev/null
+++ b/extra/glib/checksums
@@ -0,0 +1 @@
+4400adc9f0d3ffcfe8e84225210370ce3f9853afb81812ddadb685325aa655c4 glib-2.62.3.tar.xz
diff --git a/extra/glib/depends b/extra/glib/depends
new file mode 100644
index 00000000..9612cfb2
--- /dev/null
+++ b/extra/glib/depends
@@ -0,0 +1,4 @@
+libffi
+meson make
+util-linux
+zlib
diff --git a/extra/glib/sources b/extra/glib/sources
new file mode 100644
index 00000000..2d4e0fde
--- /dev/null
+++ b/extra/glib/sources
@@ -0,0 +1 @@
+https://ftp.gnome.org/pub/gnome/sources/glib/2.62/glib-2.62.3.tar.xz
diff --git a/extra/glib/version b/extra/glib/version
new file mode 100644
index 00000000..9609cbd8
--- /dev/null
+++ b/extra/glib/version
@@ -0,0 +1 @@
+2.62.3 1
diff --git a/extra/gnupg1/build b/extra/gnupg1/build
new file mode 100755
index 00000000..2f29dbb8
--- /dev/null
+++ b/extra/gnupg1/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-noexecstack
+
+make
+make DESTDIR="$1" install
diff --git a/extra/gnupg1/checksums b/extra/gnupg1/checksums
new file mode 100644
index 00000000..e7ce497c
--- /dev/null
+++ b/extra/gnupg1/checksums
@@ -0,0 +1 @@
+c9462f17e651b6507848c08c430c791287cd75491f8b5a8b50c6ed46b12678ba gnupg-1.4.23.tar.bz2
diff --git a/extra/gnupg1/depends b/extra/gnupg1/depends
new file mode 100644
index 00000000..82362fae
--- /dev/null
+++ b/extra/gnupg1/depends
@@ -0,0 +1,4 @@
+bzip2
+curl
+libressl
+zlib
diff --git a/extra/gnupg1/sources b/extra/gnupg1/sources
new file mode 100644
index 00000000..40bad2e7
--- /dev/null
+++ b/extra/gnupg1/sources
@@ -0,0 +1 @@
+https://gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.23.tar.bz2
diff --git a/extra/gnupg1/version b/extra/gnupg1/version
new file mode 100644
index 00000000..53ea88f3
--- /dev/null
+++ b/extra/gnupg1/version
@@ -0,0 +1 @@
+1.4.23 1
diff --git a/extra/gperf/build b/extra/gperf/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/gperf/build
@@ -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
index 00000000..96f73ecf
--- /dev/null
+++ b/extra/gperf/checksums
@@ -0,0 +1 @@
+588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2 gperf-3.1.tar.gz
diff --git a/extra/gperf/sources b/extra/gperf/sources
new file mode 100644
index 00000000..2ead637b
--- /dev/null
+++ b/extra/gperf/sources
@@ -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
index 00000000..122d3a0a
--- /dev/null
+++ b/extra/gperf/version
@@ -0,0 +1 @@
+3.1 3
diff --git a/extra/json-c/build b/extra/json-c/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/json-c/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/json-c/checksums b/extra/json-c/checksums
new file mode 100644
index 00000000..19095f80
--- /dev/null
+++ b/extra/json-c/checksums
@@ -0,0 +1 @@
+b87e608d4d3f7bfdd36ef78d56d53c74e66ab278d318b71e6002a369d36f4873 json-c-0.13.1.tar.gz
diff --git a/extra/json-c/depends b/extra/json-c/depends
new file mode 100644
index 00000000..cf0a2427
--- /dev/null
+++ b/extra/json-c/depends
@@ -0,0 +1 @@
+automake
diff --git a/extra/json-c/sources b/extra/json-c/sources
new file mode 100644
index 00000000..1e88a0fd
--- /dev/null
+++ b/extra/json-c/sources
@@ -0,0 +1 @@
+https://s3.amazonaws.com/json-c_releases/releases/json-c-0.13.1.tar.gz
diff --git a/extra/json-c/version b/extra/json-c/version
new file mode 100644
index 00000000..95070198
--- /dev/null
+++ b/extra/json-c/version
@@ -0,0 +1 @@
+0.13.1 1
diff --git a/extra/lame/build b/extra/lame/build
new file mode 100755
index 00000000..10210baf
--- /dev/null
+++ b/extra/lame/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --enable-nasm \
+ --enable-shared
+
+make
+make DESTDIR="$1" install
diff --git a/extra/lame/checksums b/extra/lame/checksums
new file mode 100644
index 00000000..3b885b2e
--- /dev/null
+++ b/extra/lame/checksums
@@ -0,0 +1 @@
+ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e lame-3.100.tar.gz
diff --git a/extra/lame/depends b/extra/lame/depends
new file mode 100644
index 00000000..116f6b27
--- /dev/null
+++ b/extra/lame/depends
@@ -0,0 +1 @@
+nasm make
diff --git a/extra/lame/sources b/extra/lame/sources
new file mode 100644
index 00000000..8cc28356
--- /dev/null
+++ b/extra/lame/sources
@@ -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
index 00000000..a8af8af4
--- /dev/null
+++ b/extra/lame/version
@@ -0,0 +1 @@
+3.100 2
diff --git a/extra/libaio/build b/extra/libaio/build
new file mode 100755
index 00000000..133d511b
--- /dev/null
+++ b/extra/libaio/build
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make
+make prefix="$1/usr" install
diff --git a/extra/libaio/checksums b/extra/libaio/checksums
new file mode 100644
index 00000000..8494bb94
--- /dev/null
+++ b/extra/libaio/checksums
@@ -0,0 +1 @@
+ab0462f2c9d546683e5147b1ce9c195fe95d07fac5bf362f6c01637955c3b492 libaio-0.3.112.tar.gz
diff --git a/extra/libaio/sources b/extra/libaio/sources
new file mode 100644
index 00000000..08e538e1
--- /dev/null
+++ b/extra/libaio/sources
@@ -0,0 +1 @@
+https://releases.pagure.org/libaio/libaio-0.3.112.tar.gz
diff --git a/extra/libaio/version b/extra/libaio/version
new file mode 100644
index 00000000..267ccb33
--- /dev/null
+++ b/extra/libaio/version
@@ -0,0 +1 @@
+0.3.112 1
diff --git a/extra/libass/build b/extra/libass/build
new file mode 100755
index 00000000..11938895
--- /dev/null
+++ b/extra/libass/build
@@ -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
index 00000000..6a8bc2da
--- /dev/null
+++ b/extra/libass/checksums
@@ -0,0 +1 @@
+881f2382af48aead75b7a0e02e65d88c5ebd369fe46bc77d9270a94aa8fd38a2 libass-0.14.0.tar.xz
diff --git a/extra/libass/depends b/extra/libass/depends
new file mode 100644
index 00000000..3b0ec96c
--- /dev/null
+++ b/extra/libass/depends
@@ -0,0 +1,6 @@
+expat
+fontconfig
+freetype-harfbuzz
+fribidi
+pkgconf make
+yasm make
diff --git a/extra/libass/sources b/extra/libass/sources
new file mode 100644
index 00000000..12135230
--- /dev/null
+++ b/extra/libass/sources
@@ -0,0 +1 @@
+https://github.com/libass/libass/releases/download/0.14.0/libass-0.14.0.tar.xz
diff --git a/extra/libass/version b/extra/libass/version
new file mode 100644
index 00000000..0f78dbcf
--- /dev/null
+++ b/extra/libass/version
@@ -0,0 +1 @@
+0.14.0 1
diff --git a/extra/libffi/build b/extra/libffi/build
new file mode 100755
index 00000000..b2747a3d
--- /dev/null
+++ b/extra/libffi/build
@@ -0,0 +1,17 @@
+#!/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.
+#
+# 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/extra/libffi/checksums b/extra/libffi/checksums
new file mode 100644
index 00000000..635bf88b
--- /dev/null
+++ b/extra/libffi/checksums
@@ -0,0 +1 @@
+72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056 libffi-3.3.tar.gz
diff --git a/extra/libffi/sources b/extra/libffi/sources
new file mode 100644
index 00000000..c4dceb60
--- /dev/null
+++ b/extra/libffi/sources
@@ -0,0 +1 @@
+https://sourceware.org/pub/libffi/libffi-3.3.tar.gz
diff --git a/extra/libffi/version b/extra/libffi/version
new file mode 100644
index 00000000..ef8da5d7
--- /dev/null
+++ b/extra/libffi/version
@@ -0,0 +1 @@
+3.3 1
diff --git a/extra/libjpeg-turbo/build b/extra/libjpeg-turbo/build
new file mode 100755
index 00000000..650b25f5
--- /dev/null
+++ b/extra/libjpeg-turbo/build
@@ -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
index 00000000..6ad81b85
--- /dev/null
+++ b/extra/libjpeg-turbo/checksums
@@ -0,0 +1 @@
+a69598bf079463b34d45ca7268462a18b6507fdaa62bb1dfd212f02041499b5d 2.0.3.tar.gz
diff --git a/extra/libjpeg-turbo/depends b/extra/libjpeg-turbo/depends
new file mode 100644
index 00000000..ae4e5b53
--- /dev/null
+++ b/extra/libjpeg-turbo/depends
@@ -0,0 +1,2 @@
+cmake make
+yasm make
diff --git a/extra/libjpeg-turbo/sources b/extra/libjpeg-turbo/sources
new file mode 100644
index 00000000..81eadb64
--- /dev/null
+++ b/extra/libjpeg-turbo/sources
@@ -0,0 +1 @@
+https://github.com/libjpeg-turbo/libjpeg-turbo/archive/2.0.3.tar.gz
diff --git a/extra/libjpeg-turbo/version b/extra/libjpeg-turbo/version
new file mode 100644
index 00000000..c103c3ec
--- /dev/null
+++ b/extra/libjpeg-turbo/version
@@ -0,0 +1 @@
+2.0.3 1
diff --git a/extra/libogg/build b/extra/libogg/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/libogg/build
@@ -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
index 00000000..6324e2ef
--- /dev/null
+++ b/extra/libogg/checksums
@@ -0,0 +1 @@
+c163bc12bc300c401b6aa35907ac682671ea376f13ae0969a220f7ddf71893fe libogg-1.3.4.tar.xz
diff --git a/extra/libogg/sources b/extra/libogg/sources
new file mode 100644
index 00000000..6d21083e
--- /dev/null
+++ b/extra/libogg/sources
@@ -0,0 +1 @@
+https://downloads.xiph.org/releases/ogg/libogg-1.3.4.tar.xz
diff --git a/extra/libogg/version b/extra/libogg/version
new file mode 100644
index 00000000..737bdf49
--- /dev/null
+++ b/extra/libogg/version
@@ -0,0 +1 @@
+1.3.4 1
diff --git a/extra/libpng/build b/extra/libpng/build
new file mode 100755
index 00000000..5be67a84
--- /dev/null
+++ b/extra/libpng/build
@@ -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
index 00000000..d0278b60
--- /dev/null
+++ b/extra/libpng/checksums
@@ -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
index 00000000..f22003e8
--- /dev/null
+++ b/extra/libpng/depends
@@ -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
index 00000000..8aaa50b9
--- /dev/null
+++ b/extra/libpng/patches/libpng-1.6.37-apng.patch
@@ -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
index 00000000..d6556f0c
--- /dev/null
+++ b/extra/libpng/sources
@@ -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
index 00000000..d61fa1c5
--- /dev/null
+++ b/extra/libpng/version
@@ -0,0 +1 @@
+1.6.37 2
diff --git a/extra/libtheora/build b/extra/libtheora/build
new file mode 100755
index 00000000..288944dc
--- /dev/null
+++ b/extra/libtheora/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+patch -p0 < libtheora-1.1.1-libpng16.patch
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libtheora/checksums b/extra/libtheora/checksums
new file mode 100644
index 00000000..9286d3eb
--- /dev/null
+++ b/extra/libtheora/checksums
@@ -0,0 +1,2 @@
+40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz
+e4c9a8dc798c596ed32a2a720020ae27a0e72f5add1a47cb8fadebe0e7180d7e libtheora-1.1.1-libpng16.patch
diff --git a/extra/libtheora/depends b/extra/libtheora/depends
new file mode 100644
index 00000000..b6a6854a
--- /dev/null
+++ b/extra/libtheora/depends
@@ -0,0 +1 @@
+libogg
diff --git a/extra/libtheora/patches/libtheora-1.1.1-libpng16.patch b/extra/libtheora/patches/libtheora-1.1.1-libpng16.patch
new file mode 100644
index 00000000..93da700c
--- /dev/null
+++ b/extra/libtheora/patches/libtheora-1.1.1-libpng16.patch
@@ -0,0 +1,17 @@
+http://bugs.gentoo.org/465450
+http://trac.xiph.org/ticket/1947
+
+--- examples/png2theora.c
++++ examples/png2theora.c
+@@ -462,9 +462,9 @@
+ png_set_strip_alpha(png_ptr);
+
+ row_data = (png_bytep)png_malloc(png_ptr,
+- 3*height*width*png_sizeof(*row_data));
++ 3*height*width*sizeof(*row_data));
+ row_pointers = (png_bytep *)png_malloc(png_ptr,
+- height*png_sizeof(*row_pointers));
++ height*sizeof(*row_pointers));
+ for(y = 0; y < height; y++) {
+ row_pointers[y] = row_data + y*(3*width);
+ }
diff --git a/extra/libtheora/sources b/extra/libtheora/sources
new file mode 100644
index 00000000..c5eaf319
--- /dev/null
+++ b/extra/libtheora/sources
@@ -0,0 +1,2 @@
+https://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
+patches/libtheora-1.1.1-libpng16.patch
diff --git a/extra/libtheora/version b/extra/libtheora/version
new file mode 100644
index 00000000..d9f65d2e
--- /dev/null
+++ b/extra/libtheora/version
@@ -0,0 +1 @@
+1.1.1 2
diff --git a/extra/libtool/build b/extra/libtool/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/libtool/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libtool/checksums b/extra/libtool/checksums
new file mode 100644
index 00000000..238a49a3
--- /dev/null
+++ b/extra/libtool/checksums
@@ -0,0 +1 @@
+7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f libtool-2.4.6.tar.xz
diff --git a/extra/libtool/depends b/extra/libtool/depends
new file mode 100644
index 00000000..0a3b5170
--- /dev/null
+++ b/extra/libtool/depends
@@ -0,0 +1 @@
+perl make
diff --git a/extra/libtool/sources b/extra/libtool/sources
new file mode 100644
index 00000000..5f32de1a
--- /dev/null
+++ b/extra/libtool/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz
diff --git a/extra/libtool/version b/extra/libtool/version
new file mode 100644
index 00000000..c2d12dbd
--- /dev/null
+++ b/extra/libtool/version
@@ -0,0 +1 @@
+2.4.6 1
diff --git a/extra/libvorbis/build b/extra/libvorbis/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/libvorbis/build
@@ -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
index 00000000..eba280a4
--- /dev/null
+++ b/extra/libvorbis/checksums
@@ -0,0 +1 @@
+6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb libvorbis-1.3.6.tar.gz
diff --git a/extra/libvorbis/depends b/extra/libvorbis/depends
new file mode 100644
index 00000000..b6a6854a
--- /dev/null
+++ b/extra/libvorbis/depends
@@ -0,0 +1 @@
+libogg
diff --git a/extra/libvorbis/sources b/extra/libvorbis/sources
new file mode 100644
index 00000000..4e617a19
--- /dev/null
+++ b/extra/libvorbis/sources
@@ -0,0 +1 @@
+https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.tar.gz
diff --git a/extra/libvorbis/version b/extra/libvorbis/version
new file mode 100644
index 00000000..d71e5cf9
--- /dev/null
+++ b/extra/libvorbis/version
@@ -0,0 +1 @@
+1.3.6 2
diff --git a/extra/libvpx/build b/extra/libvpx/build
new file mode 100755
index 00000000..04d7a732
--- /dev/null
+++ b/extra/libvpx/build
@@ -0,0 +1,23 @@
+#!/bin/sh -e
+
+patch -p1 < fix-busybox-diff.patch
+
+./configure \
+ --prefix=/usr \
+ --enable-vp8 \
+ --enable-vp9 \
+ --disable-tools \
+ --disable-examples \
+ --disable-docs \
+ --enable-experimental \
+ --enable-runtime-cpu-detect \
+ --enable-shared \
+ --enable-postproc \
+ --enable-pic \
+ --disable-install-docs \
+ --disable-install-srcs \
+ --disable-install-bins \
+ --as=yasm
+
+make
+make DESTDIR="$1" install
diff --git a/extra/libvpx/checksums b/extra/libvpx/checksums
new file mode 100644
index 00000000..819af214
--- /dev/null
+++ b/extra/libvpx/checksums
@@ -0,0 +1,2 @@
+df19b8f24758e90640e1ab228ab4a4676ec3df19d23e4593375e6f3847dee03e v1.8.1.tar.gz
+ce802d64bcbeb4230527aea2b4284d9844fb12fa5aca868a94e03982f85ec45b fix-busybox-diff.patch
diff --git a/extra/libvpx/depends b/extra/libvpx/depends
new file mode 100644
index 00000000..30287002
--- /dev/null
+++ b/extra/libvpx/depends
@@ -0,0 +1,2 @@
+perl make
+yasm make
diff --git a/extra/libvpx/patches/fix-busybox-diff.patch b/extra/libvpx/patches/fix-busybox-diff.patch
new file mode 100644
index 00000000..fa93b0a6
--- /dev/null
+++ b/extra/libvpx/patches/fix-busybox-diff.patch
@@ -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
index 00000000..1927b430
--- /dev/null
+++ b/extra/libvpx/sources
@@ -0,0 +1,2 @@
+https://github.com/webmproject/libvpx/archive/v1.8.1.tar.gz
+patches/fix-busybox-diff.patch
diff --git a/extra/libvpx/version b/extra/libvpx/version
new file mode 100644
index 00000000..8aa37bcd
--- /dev/null
+++ b/extra/libvpx/version
@@ -0,0 +1 @@
+1.8.1 1
diff --git a/extra/libwebp/build b/extra/libwebp/build
new file mode 100755
index 00000000..9b42927e
--- /dev/null
+++ b/extra/libwebp/build
@@ -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
index 00000000..b51a743b
--- /dev/null
+++ b/extra/libwebp/checksums
@@ -0,0 +1 @@
+e20a07865c8697bba00aebccc6f54912d6bc333bb4d604e6b07491c1a226b34f libwebp-1.0.3.tar.gz
diff --git a/extra/libwebp/depends b/extra/libwebp/depends
new file mode 100644
index 00000000..901a7cd2
--- /dev/null
+++ b/extra/libwebp/depends
@@ -0,0 +1,3 @@
+pkgconf make
+libpng
+libjpeg-turbo
diff --git a/extra/libwebp/sources b/extra/libwebp/sources
new file mode 100644
index 00000000..57061577
--- /dev/null
+++ b/extra/libwebp/sources
@@ -0,0 +1 @@
+https://downloads.webmproject.org/releases/webp/libwebp-1.0.3.tar.gz
diff --git a/extra/libwebp/version b/extra/libwebp/version
new file mode 100644
index 00000000..4ee872a0
--- /dev/null
+++ b/extra/libwebp/version
@@ -0,0 +1 @@
+1.0.3 1
diff --git a/extra/libxml2/build b/extra/libxml2/build
new file mode 100755
index 00000000..a568fbde
--- /dev/null
+++ b/extra/libxml2/build
@@ -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
index 00000000..767c08ad
--- /dev/null
+++ b/extra/libxml2/checksums
@@ -0,0 +1 @@
+aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f libxml2-2.9.10.tar.gz
diff --git a/extra/libxml2/depends b/extra/libxml2/depends
new file mode 100644
index 00000000..8c249387
--- /dev/null
+++ b/extra/libxml2/depends
@@ -0,0 +1,2 @@
+xz
+zlib
diff --git a/extra/libxml2/sources b/extra/libxml2/sources
new file mode 100644
index 00000000..2077d565
--- /dev/null
+++ b/extra/libxml2/sources
@@ -0,0 +1 @@
+https://fossies.org/linux/www/libxml2-2.9.10.tar.gz
diff --git a/extra/libxml2/version b/extra/libxml2/version
new file mode 100644
index 00000000..af4c1a1f
--- /dev/null
+++ b/extra/libxml2/version
@@ -0,0 +1 @@
+2.9.10 1
diff --git a/extra/llvm/build b/extra/llvm/build
new file mode 100755
index 00000000..337ebeb3
--- /dev/null
+++ b/extra/llvm/build
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLLVM_BUILD_LLVM_DYLIB=ON \
+ -DLLVM_LINK_LLVM_DYLIB=ON \
+ -DLLVM_TARGETS_TO_BUILD="host;AMDGPU" \
+ -DLLVM_ENABLE_RTTI=ON \
+ -DLLVM_HOST_TRIPLE="$(cc -dumpmachine)" \
+ -DLLVM_BUILD_EXAMPLES=OFF \
+ -DLLVM_BUILD_DOCS=OFF \
+ -DLLVM_BUILD_TESTS=OFF \
+ -Wno-dev
+
+cmake --build build
+cmake --install build
diff --git a/extra/llvm/checksums b/extra/llvm/checksums
new file mode 100644
index 00000000..74fbcfb0
--- /dev/null
+++ b/extra/llvm/checksums
@@ -0,0 +1 @@
+d6a0565cf21f22e9b4353b2eb92622e8365000a9e90a16b09b56f8157eabfe84 llvm-9.0.0.src.tar.xz
diff --git a/extra/llvm/depends b/extra/llvm/depends
new file mode 100644
index 00000000..126422ec
--- /dev/null
+++ b/extra/llvm/depends
@@ -0,0 +1,3 @@
+cmake make
+python make
+zlib
diff --git a/extra/llvm/sources b/extra/llvm/sources
new file mode 100644
index 00000000..2aa9c3ce
--- /dev/null
+++ b/extra/llvm/sources
@@ -0,0 +1 @@
+https://releases.llvm.org/9.0.0/llvm-9.0.0.src.tar.xz
diff --git a/extra/llvm/version b/extra/llvm/version
new file mode 100644
index 00000000..f8041b0a
--- /dev/null
+++ b/extra/llvm/version
@@ -0,0 +1 @@
+9.0.0 1
diff --git a/extra/lvm2/build b/extra/lvm2/build
new file mode 100755
index 00000000..ffa71785
--- /dev/null
+++ b/extra/lvm2/build
@@ -0,0 +1,41 @@
+#!/bin/sh -e
+
+patch -p1 < fix-stdio-usage.patch
+patch -p1 < disable-symver.patch
+
+# LVM2 calls 'fmt -1' throughout the build process.
+# Busybox doesn't provide this command, however
+# all it does is split words one per line and
+# 'tr' can be used in its place.
+sed -i 's/fmt -1/tr " " "\\n"/' \
+ make.tmpl.in libdm/make.tmpl.in
+
+# The build fails when using busybox's 'mkdir'(?),
+# swap to using 'install -d' instead which works.
+export MKDIR_P="install -d"
+
+./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-selinux \
+ --enable-pkgconfig \
+ --enable-fsadm \
+ --enable-dmeventd \
+ --enable-cmdlib \
+ --enable-udev_sync \
+ --enable-udev_rules \
+ --enable-symvers=no \
+ --disable-symvers \
+ --with-default-dm-run-dir=/run \
+ --with-default-locking-dir=/run/lock/lvm \
+ --with-default-pid-dir=/run \
+ --with-default-run-dir=/run/lvm
+
+make DESTDIR="$1" install
+
+# Make all libraries and binaries writable.
+chmod -v u+w "$1/usr/lib/"* \
+ "$1/usr/include/"* \
+ "$1/usr/bin/"*
diff --git a/extra/lvm2/checksums b/extra/lvm2/checksums
new file mode 100644
index 00000000..c5677346
--- /dev/null
+++ b/extra/lvm2/checksums
@@ -0,0 +1,3 @@
+91753976ea1b9d94475781680be667a61fe611e89050fc73e1edbebbdc87ed44 LVM2.2.03.06.tgz
+36b598a65d24b18ae7b7657b37343788c96ae56cb9673a13a09423c031002b32 fix-stdio-usage.patch
+0eafb3464043c81644c919e42c79f7fbd614ca27a4bf5665b658856008147e59 disable-symver.patch
diff --git a/extra/lvm2/depends b/extra/lvm2/depends
new file mode 100644
index 00000000..95359853
--- /dev/null
+++ b/extra/lvm2/depends
@@ -0,0 +1,3 @@
+eudev
+libaio
+util-linux
diff --git a/extra/lvm2/patches/disable-symver.patch b/extra/lvm2/patches/disable-symver.patch
new file mode 100644
index 00000000..6216c061
--- /dev/null
+++ b/extra/lvm2/patches/disable-symver.patch
@@ -0,0 +1,136 @@
+diff --git a/configure b/configure
+index 6dd7eda..ef6a416 100755
+--- a/configure
++++ b/configure
+@@ -959,6 +959,7 @@ enable_fsadm
+ enable_blkdeactivate
+ enable_dmeventd
+ enable_selinux
++enable_symvers
+ enable_nls
+ with_localedir
+ with_confdir
+@@ -1677,6 +1678,9 @@ Optional Features:
+ --disable-blkdeactivate disable blkdeactivate
+ --enable-dmeventd enable the device-mapper event daemon
+ --disable-selinux disable selinux support
++ --enable-symvers[=STYLE]
++ enables symbol versioning of the shared library
++ [default=gnu]
+ --enable-nls enable Native Language Support
+
+ Optional Packages:
+@@ -3077,7 +3081,6 @@ if test -z "$CFLAGS"; then :
+ fi
+ case "$host_os" in
+ linux*)
+- CLDFLAGS="${CLDFLAGS-"$LDFLAGS"} -Wl,--version-script,.export.sym"
+ # equivalent to -rdynamic
+ ELDFLAGS="-Wl,--export-dynamic"
+ # FIXME Generate list and use --dynamic-list=.dlopen.sym
+@@ -12969,6 +12972,33 @@ done
+ LIBS=$lvm_saved_libs
+ fi
+
++################################################################################
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable symbol versioning" >&5
++$as_echo_n "checking whether to enable symbol versioning... " >&6; }
++# Check whether --enable-symvers was given.
++if test "${enable_symvers+set}" = set; then :
++ enableval=$enable_symvers;
++ case "$enableval" in
++ gnu|no) ;;
++ *) as_fn_error $? "Unknown argument to enable/disable symvers" "$LINENO" 5 ;;
++ esac
++else
++ enable_symvers=gnu
++fi
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_symvers" >&5
++$as_echo "$enable_symvers" >&6; }
++
++if test x$GCC = xyes && test x$enable_symvers = xgnu ; then
++
++$as_echo "#define GNU_SYMVER 1" >>confdefs.h
++
++ case "$host_os" in
++ linux*) CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym" ;;
++ esac
++fi
++
++
+ ################################################################################
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable internationalisation" >&5
+ $as_echo_n "checking whether to enable internationalisation... " >&6; }
+diff --git a/lib/misc/lib.h b/lib/misc/lib.h
+index c14f437..79b36a3 100644
+--- a/lib/misc/lib.h
++++ b/lib/misc/lib.h
+@@ -62,7 +62,7 @@
+ * versions of library symbols prior to the introduction of symbol
+ * versioning: it must never be used for new symbols.
+ */
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ #define DM_EXPORT_SYMBOL(func, ver) \
+ __asm__(".symver " #func "_v" #ver ", " #func "@DM_" #ver )
+ #define DM_EXPORT_SYMBOL_BASE(func) \
+diff --git a/libdm/datastruct/bitset.c b/libdm/datastruct/bitset.c
+index 06bd31a..8f36ec7 100644
+--- a/libdm/datastruct/bitset.c
++++ b/libdm/datastruct/bitset.c
+@@ -242,7 +242,7 @@ bad:
+ return NULL;
+ }
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ /*
+ * Maintain backward compatibility with older versions that did not
+ * accept a 'min_num_bits' argument to dm_bitset_parse_list().
+@@ -254,6 +254,4 @@ dm_bitset_t dm_bitset_parse_list_v1_02_129(const char *str, struct dm_pool *mem)
+ }
+ DM_EXPORT_SYMBOL(dm_bitset_parse_list, 1_02_129);
+
+-#else /* if defined(__GNUC__) */
+-
+ #endif
+diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c
+index dd46b67..b09abdc 100644
+--- a/libdm/ioctl/libdm-iface.c
++++ b/libdm/ioctl/libdm-iface.c
+@@ -2176,7 +2176,7 @@ void dm_lib_exit(void)
+ _version_checked = 0;
+ }
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ /*
+ * Maintain binary backward compatibility.
+ * Version script mechanism works with 'gcc' compatible compilers only.
+diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
+index ee12da2..08829c5 100644
+--- a/libdm/libdm-deptree.c
++++ b/libdm/libdm-deptree.c
+@@ -3811,7 +3811,7 @@ void dm_tree_node_set_callback(struct dm_tree_node *dnode,
+ dnode->callback_data = data;
+ }
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ /*
+ * Backward compatible implementations.
+ *
+diff --git a/libdm/libdm-stats.c b/libdm/libdm-stats.c
+index 420e3e1..066bcdf 100644
+--- a/libdm/libdm-stats.c
++++ b/libdm/libdm-stats.c
+@@ -5067,7 +5067,7 @@ int dm_stats_start_filemapd(int fd, uint64_t group_id, const char *path,
+ * current dm_stats_create_region() version.
+ */
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ int dm_stats_create_region_v1_02_106(struct dm_stats *dms, uint64_t *region_id,
+ uint64_t start, uint64_t len, int64_t step,
+ int precise, const char *program_id,
diff --git a/extra/lvm2/patches/fix-stdio-usage.patch b/extra/lvm2/patches/fix-stdio-usage.patch
new file mode 100644
index 00000000..3fd80f64
--- /dev/null
+++ b/extra/lvm2/patches/fix-stdio-usage.patch
@@ -0,0 +1,58 @@
+diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
+index 479d499..7681a5b 100644
+--- a/lib/commands/toolcontext.c
++++ b/lib/commands/toolcontext.c
+@@ -1599,7 +1599,7 @@ struct cmd_context *create_toolcontext(unsigned is_clvmd,
+ /* FIXME Make this configurable? */
+ reset_lvm_errno(1);
+
+-#ifndef VALGRIND_POOL
++#if defined(__GLIBC__) && !defined(VALGRIND_POOL)
+ /* Set in/out stream buffering before glibc */
+ if (set_buffering
+ #ifdef SYS_gettid
+@@ -1980,7 +1980,7 @@ void destroy_toolcontext(struct cmd_context *cmd)
+
+ if (cmd->pending_delete_mem)
+ dm_pool_destroy(cmd->pending_delete_mem);
+-#ifndef VALGRIND_POOL
++#if defined(__GLIBC__) && !defined(VALGRIND_POOL)
+ if (cmd->linebuffer) {
+ /* Reset stream buffering to defaults */
+ if (is_valid_fd(STDIN_FILENO) &&
+diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
+index 860e6de..c7539bd 100644
+--- a/tools/lvmcmdline.c
++++ b/tools/lvmcmdline.c
+@@ -3209,6 +3209,7 @@ int lvm_split(char *str, int *argc, char **argv, int max)
+ /* Make sure we have always valid filedescriptors 0,1,2 */
+ static int _check_standard_fds(void)
+ {
++#ifdef __GLIBC__
+ int err = is_valid_fd(STDERR_FILENO);
+
+ if (!is_valid_fd(STDIN_FILENO) &&
+@@ -3236,6 +3237,12 @@ static int _check_standard_fds(void)
+ return 0;
+ }
+
++#else
++ if (!is_valid_fd(STDERR_FILENO) ||
++ !is_valid_fd(STDOUT_FILENO) ||
++ !is_valid_fd(STDIN_FILENO))
++ return 0;
++#endif
+ return 1;
+ }
+
+--- ./lib/mm/memlock.c.orig 2015-03-09 11:18:41.560028850 -0100
++++ ./lib/mm/memlock.c 2015-03-09 11:19:54.504373309 -0100
+@@ -137,7 +137,7 @@
+
+ static void _allocate_memory(void)
+ {
+-#ifndef VALGRIND_POOL
++#if !defined(VALGRIND_POOL) && defined(__GLIBC__)
+ void *stack_mem;
+ struct rlimit limit;
+ int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks;
diff --git a/extra/lvm2/sources b/extra/lvm2/sources
new file mode 100644
index 00000000..34dd5d35
--- /dev/null
+++ b/extra/lvm2/sources
@@ -0,0 +1,3 @@
+https://mirrors.kernel.org/sourceware/lvm2/releases/LVM2.2.03.06.tgz
+patches/fix-stdio-usage.patch
+patches/disable-symver.patch
diff --git a/extra/lvm2/version b/extra/lvm2/version
new file mode 100644
index 00000000..7ddcde45
--- /dev/null
+++ b/extra/lvm2/version
@@ -0,0 +1 @@
+2.03.06 1
diff --git a/extra/meson/build b/extra/meson/build
new file mode 100755
index 00000000..366c5443
--- /dev/null
+++ b/extra/meson/build
@@ -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
index 00000000..20613f9d
--- /dev/null
+++ b/extra/meson/checksums
@@ -0,0 +1 @@
+0f426ed1362c38bcc5b9027ec6aec3445d6db88e8d7249ed992e9af88a42d0e0 0.52.0.tar.gz
diff --git a/extra/meson/depends b/extra/meson/depends
new file mode 100644
index 00000000..35f08097
--- /dev/null
+++ b/extra/meson/depends
@@ -0,0 +1,2 @@
+python
+samurai
diff --git a/extra/meson/sources b/extra/meson/sources
new file mode 100644
index 00000000..c8fbc601
--- /dev/null
+++ b/extra/meson/sources
@@ -0,0 +1 @@
+https://github.com/mesonbuild/meson/archive/0.52.0.tar.gz
diff --git a/extra/meson/version b/extra/meson/version
new file mode 100644
index 00000000..3255ab0c
--- /dev/null
+++ b/extra/meson/version
@@ -0,0 +1 @@
+0.52.0 2
diff --git a/extra/mpv/build b/extra/mpv/build
new file mode 100755
index 00000000..9d61d973
--- /dev/null
+++ b/extra/mpv/build
@@ -0,0 +1,13 @@
+#!/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-libass
+
+python waf build
+python waf install --destdir="$1"
diff --git a/extra/mpv/checksums b/extra/mpv/checksums
new file mode 100644
index 00000000..a8fab458
--- /dev/null
+++ b/extra/mpv/checksums
@@ -0,0 +1,2 @@
+33a1bcb7e74ff17f070e754c15c52228cf44f2cefbfd8f34886ae81df214ca35 v0.30.0.tar.gz
+2e0cf83a63843da127610420cef1d3126f1187d8e572b6b3a28052fc2250d4bf waf-2.0.18
diff --git a/extra/mpv/depends b/extra/mpv/depends
new file mode 100644
index 00000000..334650cf
--- /dev/null
+++ b/extra/mpv/depends
@@ -0,0 +1,9 @@
+alsa-lib
+ffmpeg
+freetype-harfbuzz
+libass
+libXScrnSaver
+libXinerama
+libXrandr
+mesa
+python make
diff --git a/extra/mpv/sources b/extra/mpv/sources
new file mode 100644
index 00000000..7355aa8e
--- /dev/null
+++ b/extra/mpv/sources
@@ -0,0 +1,2 @@
+https://github.com/mpv-player/mpv/archive/v0.30.0.tar.gz
+https://waf.io/waf-2.0.18
diff --git a/extra/mpv/version b/extra/mpv/version
new file mode 100644
index 00000000..b05fc3ac
--- /dev/null
+++ b/extra/mpv/version
@@ -0,0 +1 @@
+0.30.0 1
diff --git a/extra/nasm/build b/extra/nasm/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/nasm/build
@@ -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
index 00000000..f7d8373b
--- /dev/null
+++ b/extra/nasm/checksums
@@ -0,0 +1 @@
+e24ade3e928f7253aa8c14aa44726d1edf3f98643f87c9d72ec1df44b26be8f5 nasm-2.14.02.tar.xz
diff --git a/extra/nasm/depends b/extra/nasm/depends
new file mode 100644
index 00000000..97a95494
--- /dev/null
+++ b/extra/nasm/depends
@@ -0,0 +1 @@
+perl make
diff --git a/extra/nasm/sources b/extra/nasm/sources
new file mode 100644
index 00000000..79bc0487
--- /dev/null
+++ b/extra/nasm/sources
@@ -0,0 +1 @@
+https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.xz
diff --git a/extra/nasm/version b/extra/nasm/version
new file mode 100644
index 00000000..bb3f3253
--- /dev/null
+++ b/extra/nasm/version
@@ -0,0 +1 @@
+2.14.02 1
diff --git a/extra/ncurses/build b/extra/ncurses/build
new file mode 100755
index 00000000..6798aa43
--- /dev/null
+++ b/extra/ncurses/build
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --enable-pc-files \
+ --disable-rpath-hack \
+ --with-pkg-config-libdir=/usr/lib/pkgconfig \
+ --with-shared \
+ --enable-widec \
+ --without-ada \
+ --without-tests \
+ --without-debug \
+ --without-cxx-binding
+
+make
+make DESTDIR="$1" install
+
+# These conflict with busybox's.
+rm -f "$1/usr/bin/clear"
+rm -f "$1/usr/bin/reset"
diff --git a/extra/ncurses/checksums b/extra/ncurses/checksums
new file mode 100644
index 00000000..c65d894d
--- /dev/null
+++ b/extra/ncurses/checksums
@@ -0,0 +1 @@
+aa057eeeb4a14d470101eff4597d5833dcef5965331be3528c08d99cebaa0d17 ncurses-6.1.tar.gz
diff --git a/extra/ncurses/sources b/extra/ncurses/sources
new file mode 100644
index 00000000..30a20483
--- /dev/null
+++ b/extra/ncurses/sources
@@ -0,0 +1 @@
+https://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz
diff --git a/extra/ncurses/version b/extra/ncurses/version
new file mode 100644
index 00000000..1143f417
--- /dev/null
+++ b/extra/ncurses/version
@@ -0,0 +1 @@
+6.1 1
diff --git a/extra/nodejs/build b/extra/nodejs/build
new file mode 100755
index 00000000..59b7ad09
--- /dev/null
+++ b/extra/nodejs/build
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+# Python 3 support (but not for > 3.5).
+sed -i 's/(3, 5)/(3, 8)/' configure
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/nodejs/checksums b/extra/nodejs/checksums
new file mode 100644
index 00000000..f9f60c26
--- /dev/null
+++ b/extra/nodejs/checksums
@@ -0,0 +1 @@
+22b095bd70a8923d7281733bc546f9e3b388cde6cb948f45fa7413ac805243ce v13.2.0.tar.gz
diff --git a/extra/nodejs/depends b/extra/nodejs/depends
new file mode 100644
index 00000000..ecc77727
--- /dev/null
+++ b/extra/nodejs/depends
@@ -0,0 +1 @@
+python make
diff --git a/extra/nodejs/sources b/extra/nodejs/sources
new file mode 100644
index 00000000..e788e0e1
--- /dev/null
+++ b/extra/nodejs/sources
@@ -0,0 +1 @@
+https://github.com/nodejs/node/archive/v13.2.0.tar.gz
diff --git a/extra/nodejs/version b/extra/nodejs/version
new file mode 100644
index 00000000..510ef747
--- /dev/null
+++ b/extra/nodejs/version
@@ -0,0 +1 @@
+13.2.0 1
diff --git a/extra/openssh/build b/extra/openssh/build
new file mode 100755
index 00000000..cdd68702
--- /dev/null
+++ b/extra/openssh/build
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --datadir=/usr/share/openssh \
+ --sysconfdir=/etc/ssh \
+ --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
index 00000000..22451ba5
--- /dev/null
+++ b/extra/openssh/checksums
@@ -0,0 +1,2 @@
+02f5dbef3835d0753556f973cd57b4c19b6b1f6cd24c03445e23ac77ca1b93ff openssh-8.1p1.tar.gz
+5d32a817344ac444424063d75e49afd95d7eb76d972ef5c5cfad355c8e8b1ff1 sshd.run
diff --git a/extra/openssh/depends b/extra/openssh/depends
new file mode 100644
index 00000000..9ee911ae
--- /dev/null
+++ b/extra/openssh/depends
@@ -0,0 +1,2 @@
+libressl
+zlib
diff --git a/extra/openssh/files/sshd.run b/extra/openssh/files/sshd.run
new file mode 100644
index 00000000..04f7adbb
--- /dev/null
+++ b/extra/openssh/files/sshd.run
@@ -0,0 +1,3 @@
+#!/bin/sh
+ssh-keygen -A >/dev/null 2>&1 # Will generate host keys if they don't already exist.
+exec /usr/bin/sshd -D
diff --git a/extra/openssh/sources b/extra/openssh/sources
new file mode 100644
index 00000000..29b23857
--- /dev/null
+++ b/extra/openssh/sources
@@ -0,0 +1,2 @@
+https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.1p1.tar.gz
+files/sshd.run
diff --git a/extra/openssh/version b/extra/openssh/version
new file mode 100644
index 00000000..faa64dd7
--- /dev/null
+++ b/extra/openssh/version
@@ -0,0 +1 @@
+8.1p1 1
diff --git a/extra/opus/build b/extra/opus/build
new file mode 100755
index 00000000..23f46765
--- /dev/null
+++ b/extra/opus/build
@@ -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
index 00000000..77a9ad97
--- /dev/null
+++ b/extra/opus/checksums
@@ -0,0 +1 @@
+65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d opus-1.3.1.tar.gz
diff --git a/extra/opus/sources b/extra/opus/sources
new file mode 100644
index 00000000..d11f0722
--- /dev/null
+++ b/extra/opus/sources
@@ -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
index 00000000..957d07e2
--- /dev/null
+++ b/extra/opus/version
@@ -0,0 +1 @@
+1.3.1 1
diff --git a/extra/popt/build b/extra/popt/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/popt/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/popt/checksums b/extra/popt/checksums
new file mode 100644
index 00000000..e9a82a58
--- /dev/null
+++ b/extra/popt/checksums
@@ -0,0 +1 @@
+e728ed296fe9f069a0e005003c3d6b2dde3d9cad453422a10d6558616d304cc8 popt-1.16.tar.gz
diff --git a/extra/popt/sources b/extra/popt/sources
new file mode 100644
index 00000000..e1aab68b
--- /dev/null
+++ b/extra/popt/sources
@@ -0,0 +1 @@
+https://fossies.org/linux/misc/popt-1.16.tar.gz
diff --git a/extra/popt/version b/extra/popt/version
new file mode 100644
index 00000000..d1d913ed
--- /dev/null
+++ b/extra/popt/version
@@ -0,0 +1 @@
+1.16 1
diff --git a/extra/python/build b/extra/python/build
new file mode 100755
index 00000000..19d7173b
--- /dev/null
+++ b/extra/python/build
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+patch -p1 < python3-always-pip.patch
+
+./configure \
+ --prefix=/usr \
+ --enable-shared \
+ --with-system-expat \
+ --with-system-ffi \
+ --with-ensurepip=yes
+
+make
+make DESTDIR="$1" install
+
+ln -s python3 "$1/usr/bin/python"
+ln -s pip3 "$1/usr/bin/pip"
+
+# Make static library writable.
+chmod -v u+w "$1/usr/lib/libpython"*
diff --git a/extra/python/checksums b/extra/python/checksums
new file mode 100644
index 00000000..50298dba
--- /dev/null
+++ b/extra/python/checksums
@@ -0,0 +1,2 @@
+b356244e13fb5491da890b35b13b2118c3122977c2cd825e3eb6e7d462030d84 Python-3.8.0.tar.xz
+1a184c64f85d7a2fb57642135ea298ddd005684c5bd3e601b932cf31b82b9417 python3-always-pip.patch
diff --git a/extra/python/depends b/extra/python/depends
new file mode 100644
index 00000000..f5fadfec
--- /dev/null
+++ b/extra/python/depends
@@ -0,0 +1,5 @@
+bzip2
+expat
+libffi
+sqlite
+zlib
diff --git a/extra/python/patches/python3-always-pip.patch b/extra/python/patches/python3-always-pip.patch
new file mode 100644
index 00000000..91789c98
--- /dev/null
+++ b/extra/python/patches/python3-always-pip.patch
@@ -0,0 +1,13 @@
+diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py
+index 526dfd0..d85dc33 100644
+--- a/Lib/ensurepip/__init__.py
++++ b/Lib/ensurepip/__init__.py
+@@ -104,7 +104,7 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
+ additional_paths.append(os.path.join(tmpdir, wheel_name))
+
+ # Construct the arguments to be passed to the pip command
+- args = ["install", "--no-index", "--find-links", tmpdir]
++ args = ["install", "-I", "--no-index", "--find-links", tmpdir]
+ if root:
+ args += ["--root", root]
+ if upgrade:
diff --git a/extra/python/sources b/extra/python/sources
new file mode 100644
index 00000000..63dc186b
--- /dev/null
+++ b/extra/python/sources
@@ -0,0 +1,2 @@
+https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
+patches/python3-always-pip.patch
diff --git a/extra/python/version b/extra/python/version
new file mode 100644
index 00000000..2af7c7b2
--- /dev/null
+++ b/extra/python/version
@@ -0,0 +1 @@
+3.8.0 1
diff --git a/extra/python2/build b/extra/python2/build
new file mode 100755
index 00000000..3b3866ff
--- /dev/null
+++ b/extra/python2/build
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --without-ensurepip
+
+make
+make DESTDIR="$1" install
+
+rm "$1/usr/bin/2to3"
+rm "$1/usr/bin/python"
+
+# Make static library writable.
+chmod -v u+w "$1/usr/lib/libpython"*.a
diff --git a/extra/python2/checksums b/extra/python2/checksums
new file mode 100644
index 00000000..01c6883e
--- /dev/null
+++ b/extra/python2/checksums
@@ -0,0 +1 @@
+4d43f033cdbd0aa7b7023c81b0e986fd11e653b5248dac9144d508f11812ba41 Python-2.7.17.tar.xz
diff --git a/extra/python2/depends b/extra/python2/depends
new file mode 100644
index 00000000..4711f7dd
--- /dev/null
+++ b/extra/python2/depends
@@ -0,0 +1,3 @@
+bzip2
+sqlite
+zlib
diff --git a/extra/python2/sources b/extra/python2/sources
new file mode 100644
index 00000000..af09d116
--- /dev/null
+++ b/extra/python2/sources
@@ -0,0 +1 @@
+https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tar.xz
diff --git a/extra/python2/version b/extra/python2/version
new file mode 100644
index 00000000..6b274355
--- /dev/null
+++ b/extra/python2/version
@@ -0,0 +1 @@
+2.7.17 1
diff --git a/extra/rust/build b/extra/rust/build
new file mode 100755
index 00000000..f02d3b3e
--- /dev/null
+++ b/extra/rust/build
@@ -0,0 +1,56 @@
+#!/bin/sh -e
+
+# This package mimics the download process of rust's 'x.py'
+# bootstrap library to allow for the removal of the internet
+# connection requirement per build further enabling checksums
+# and signature verification by KISS.
+{
+ cache_dir=build/cache/2019-09-26
+ mkdir -p "$cache_dir"
+
+ for tarball in *.tar.gz\?no-extract; do
+ mv -f "$tarball" "$cache_dir/${tarball%%\?no-extract}"
+ done
+}
+
+patch -p1 < musl-libressl.patch
+
+# 'rust' checksums files in 'vendor/', but we patch a few files.
+for vendor in libc openssl-sys; do
+ sed -i 's/\("files":{\)[^}]*/\1/' "vendor/$vendor/.cargo-checksum.json"
+done
+
+cat > config.toml <<EOF
+[llvm]
+link-shared = true
+
+[build]
+build = "x86_64-unknown-linux-musl"
+host = [ "x86_64-unknown-linux-musl" ]
+target = [ "x86_64-unknown-linux-musl" ]
+docs = false
+extended = true
+submodules = false
+python = "python3"
+locked-deps = true
+vendor = true
+
+[install]
+prefix = "/usr"
+
+[rust]
+channel = "stable"
+rpath = false
+codegen-units = 1
+debuginfo-level = 0
+backtrace = false
+jemalloc = false
+codegen-tests = false
+
+[target.x86_64-unknown-linux-musl]
+llvm-config = "/usr/bin/llvm-config"
+crt-static = false
+EOF
+
+python3 ./x.py build -j "$(nproc)"
+DESTDIR="$1" python3 ./x.py install
diff --git a/extra/rust/checksums b/extra/rust/checksums
new file mode 100644
index 00000000..6570ccd3
--- /dev/null
+++ b/extra/rust/checksums
@@ -0,0 +1,5 @@
+b4a1f6b6a93931f270691aba4fc85eee032fecda973e6b9c774cd06857609357 rustc-1.39.0-src.tar.gz
+56b87fdca1f41b634285593cae42fdbd5fe9632ef502336679362b283ed53c22 rust-std-1.38.0-x86_64-unknown-linux-musl.tar.gz?no-extract
+bb0166cbb1d31bcb09d79224e7ac43a80d9448b7199b5392a3852b3ec71840aa rustc-1.38.0-x86_64-unknown-linux-musl.tar.gz?no-extract
+bbf58bf638c5c4cf86caaa1bfe2835b3856d4ef46447c9942d5e59cc7654c5e4 cargo-0.39.0-x86_64-unknown-linux-musl.tar.gz?no-extract
+122b5d9b83778882bdd64d40fea98982f7d1db510e09fc64a4ece5add4fd99a2 musl-libressl.patch
diff --git a/extra/rust/depends b/extra/rust/depends
new file mode 100644
index 00000000..058f23c8
--- /dev/null
+++ b/extra/rust/depends
@@ -0,0 +1,7 @@
+cmake make
+curl make
+libressl
+llvm
+python make
+xz
+zlib
diff --git a/extra/rust/patches/musl-libressl.patch b/extra/rust/patches/musl-libressl.patch
new file mode 100644
index 00000000..ed1f2404
--- /dev/null
+++ b/extra/rust/patches/musl-libressl.patch
@@ -0,0 +1,128 @@
+diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
+index 6ea32edfb..9d6d10f7f 100644
+--- a/src/bootstrap/compile.rs
++++ b/src/bootstrap/compile.rs
+@@ -122,7 +122,7 @@ fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target:
+ // with a glibc-targeting toolchain, given we have the appropriate startup
+ // files. As those shipped with glibc won't work, copy the ones provided by
+ // musl so we have them on linux-gnu hosts.
+- if target.contains("musl") {
++ if target.contains("noop") {
+ for &obj in &["crt1.o", "crti.o", "crtn.o"] {
+ builder.copy(
+ &builder.musl_root(target).unwrap().join("lib").join(obj),
+diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
+index bffe748f3..40f9f597f 100644
+--- a/src/bootstrap/sanity.rs
++++ b/src/bootstrap/sanity.rs
+@@ -188,7 +188,7 @@ pub fn check(build: &mut Build) {
+ }
+
+ // Make sure musl-root is valid
+- if target.contains("musl") {
++ if target.contains("noop") {
+ // If this is a native target (host is also musl) and no musl-root is given,
+ // fall back to the system toolchain in /usr before giving up
+ if build.musl_root(*target).is_none() && build.config.build == *target {
+diff --git a/src/librustc_target/spec/linux_musl_base.rs b/src/librustc_target/spec/linux_musl_base.rs
+index e294e6398..17fecb3b2 100644
+--- a/src/librustc_target/spec/linux_musl_base.rs
++++ b/src/librustc_target/spec/linux_musl_base.rs
+@@ -26,7 +26,7 @@ pub fn opts() -> TargetOptions {
+ base.post_link_objects_crt.push("crtn.o".to_string());
+
+ // These targets statically link libc by default
+- base.crt_static_default = true;
++ base.crt_static_default = false;
+ // These targets allow the user to choose between static and dynamic linking.
+ base.crt_static_respected = true;
+
+diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs
+index f24d957d6..4632212fd 100644
+--- a/src/libunwind/build.rs
++++ b/src/libunwind/build.rs
+@@ -10,7 +10,7 @@ fn main() {
+ // Build the unwinding from libunwind C/C++ source code.
+ llvm_libunwind::compile();
+ } else if target.contains("linux") {
+- if target.contains("musl") {
++ if target.contains("noop") {
+ // linking for musl is handled in lib.rs
+ llvm_libunwind::compile();
+ } else if !target.contains("android") {
+diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs
+index 8d9164471..3adaaf43d 100644
+--- a/src/libunwind/lib.rs
++++ b/src/libunwind/lib.rs
+@@ -20,7 +20,7 @@ cfg_if::cfg_if! {
+ }
+ }
+
+-#[cfg(target_env = "musl")]
++#[cfg(target_env = "noop")]
+ #[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))]
+ #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))]
+ extern {}
+diff --git a/vendor/libc/src/unix/mod.rs b/vendor/libc/src/unix/mod.rs
+index 721d24116..26bf271cd 100644
+--- a/vendor/libc/src/unix/mod.rs
++++ b/vendor/libc/src/unix/mod.rs
+@@ -296,7 +296,7 @@ cfg_if! {
+ } else if #[cfg(feature = "std")] {
+ // cargo build, don't pull in anything extra as the libstd dep
+ // already pulls in all libs.
+- } else if #[cfg(target_env = "musl")] {
++ } else if #[cfg(target_env = "noop")] {
+ #[cfg_attr(feature = "rustc-dep-of-std",
+ link(name = "c", kind = "static",
+ cfg(target_feature = "crt-static")))]
+diff --git a/vendor/openssl-sys/build/main.rs b/vendor/openssl-sys/build/main.rs
+index 02b93b90a..27deca5fe 100644
+--- a/vendor/openssl-sys/build/main.rs
++++ b/vendor/openssl-sys/build/main.rs
+@@ -183,27 +183,30 @@ See rust-openssl README for more information:
+ if let Some(libressl_version) = libressl_version {
+ println!("cargo:libressl_version_number={:x}", libressl_version);
+
++ let major = (libressl_version >> 28) as u8;
+ let minor = (libressl_version >> 20) as u8;
+ let fix = (libressl_version >> 12) as u8;
+- let (minor, fix) = match (minor, fix) {
+- (5, 0) => ('5', '0'),
+- (5, 1) => ('5', '1'),
+- (5, 2) => ('5', '2'),
+- (5, _) => ('5', 'x'),
+- (6, 0) => ('6', '0'),
+- (6, 1) => ('6', '1'),
+- (6, 2) => ('6', '2'),
+- (6, _) => ('6', 'x'),
+- (7, _) => ('7', 'x'),
+- (8, 0) => ('8', '0'),
+- (8, 1) => ('8', '1'),
+- (8, _) => ('8', 'x'),
+- (9, 0) => ('9', '0'),
++ let (major, minor, fix) = match (major, minor, fix) {
++ (2, 5, 0) => ('2', '5', '0'),
++ (2, 5, 1) => ('2', '5', '1'),
++ (2, 5, 2) => ('2', '5', '2'),
++ (2, 5, _) => ('2', '5', 'x'),
++ (2, 6, 0) => ('2', '6', '0'),
++ (2, 6, 1) => ('2', '6', '1'),
++ (2, 6, 2) => ('2', '6', '2'),
++ (2, 6, _) => ('2', '6', 'x'),
++ (2, 7, _) => ('2', '7', 'x'),
++ (2, 8, 0) => ('2', '8', '0'),
++ (2, 8, 1) => ('2', '8', '1'),
++ (3, 0, _) => ('3', '0', 'x'),
++ (2, 9, 0) => ('2', '9', '0'),
++ (2, 9, _) => ('2', '9', 'x'),
++ (3, 0, 0) => ('3', '0', '0'),
+ _ => version_error(),
+ };
+
+ println!("cargo:libressl=true");
+- println!("cargo:libressl_version=2{}{}", minor, fix);
++ println!("cargo:libressl_version={}{}{}", major, minor, fix);
+ println!("cargo:version=101");
+ Version::Libressl
+ } else {
diff --git a/extra/rust/sources b/extra/rust/sources
new file mode 100644
index 00000000..a1e63232
--- /dev/null
+++ b/extra/rust/sources
@@ -0,0 +1,5 @@
+https://static.rust-lang.org/dist/rustc-1.39.0-src.tar.gz
+https://static.rust-lang.org/dist/2019-09-26/rust-std-1.38.0-x86_64-unknown-linux-musl.tar.gz?no-extract
+https://static.rust-lang.org/dist/2019-09-26/rustc-1.38.0-x86_64-unknown-linux-musl.tar.gz?no-extract
+https://static.rust-lang.org/dist/2019-09-26/cargo-0.39.0-x86_64-unknown-linux-musl.tar.gz?no-extract
+patches/musl-libressl.patch
diff --git a/extra/rust/version b/extra/rust/version
new file mode 100644
index 00000000..07fabd51
--- /dev/null
+++ b/extra/rust/version
@@ -0,0 +1 @@
+1.39.0 1
diff --git a/extra/samurai/build b/extra/samurai/build
new file mode 100755
index 00000000..1dd11b38
--- /dev/null
+++ b/extra/samurai/build
@@ -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/extra/samurai/checksums b/extra/samurai/checksums
new file mode 100644
index 00000000..a3da810f
--- /dev/null
+++ b/extra/samurai/checksums
@@ -0,0 +1 @@
+e079e8de3b07ba0f1fffe2dff31c1fcb3be357c523abc6937108635a081a11f0 samurai-0.7.tar.gz
diff --git a/extra/samurai/sources b/extra/samurai/sources
new file mode 100644
index 00000000..b3b4891c
--- /dev/null
+++ b/extra/samurai/sources
@@ -0,0 +1 @@
+https://github.com/michaelforney/samurai/releases/download/0.7/samurai-0.7.tar.gz
diff --git a/extra/samurai/version b/extra/samurai/version
new file mode 100644
index 00000000..a7542609
--- /dev/null
+++ b/extra/samurai/version
@@ -0,0 +1 @@
+0.7 1
diff --git a/extra/shared-mime-info/build b/extra/shared-mime-info/build
new file mode 100755
index 00000000..58dddbe2
--- /dev/null
+++ b/extra/shared-mime-info/build
@@ -0,0 +1,54 @@
+#!/bin/sh -e
+#
+# We bypass the build system entirely as it has
+# a mandatory dependency on gettext.
+
+# Grab the package version.
+read -r version _ < "${0%/*}/version"
+
+mkdir -p "$1/usr/share/mime/packages" \
+ "$1/usr/share/pkgconfig" \
+ "$1/usr/bin"
+
+# Install with only English support.
+sed -e 's/_comment/comment/g' freedesktop.org.xml.in \
+ > "$1/usr/share/mime/packages/freedesktop.org.xml"
+
+# Replace markers in the file.
+sed -e 's|@prefix@|/usr|' -e "s|@VERSION@|$version|" shared-mime-info.pc.in \
+ > "$1/usr/share/pkgconfig/shared-mime-info.pc"
+
+# Define our own config.h statically.
+cat << EOF > config.h
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+#define HAVE_FDATASYNC 1
+#define HAVE_GETTEXT 0
+#define HAVE_INTTYPES_H 1
+#define HAVE_LC_MESSAGES 1
+#define HAVE_LOCALE_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_UNISTD_H 1
+#define PACKAGE "shared-mime-info"
+#define PACKAGE_BUGREPORT ""
+#define PACKAGE_NAME "shared-mime-info"
+#define PACKAGE_STRING "shared-mime-info $version"
+#define PACKAGE_TARNAME "shared-mime-info"
+#define PACKAGE_URL ""
+#define PACKAGE_VERSION "$version"
+#define STDC_HEADERS 1
+#define VERSION "$version"
+EOF
+
+# Fix config.h include.
+sed -i 's/<config.h>/"config.h"/' update-mime-database.c
+
+# shellcheck disable=2046
+"${CC:-gcc}" -o "$1/usr/bin/update-mime-database" \
+ $(pkg-config --libs --cflags glib-2.0 libxml-2.0) \
+ update-mime-database.c
diff --git a/extra/shared-mime-info/checksums b/extra/shared-mime-info/checksums
new file mode 100644
index 00000000..4c76dfe4
--- /dev/null
+++ b/extra/shared-mime-info/checksums
@@ -0,0 +1 @@
+2df77d547fa0548def38614f318282bc9937e7bde5f139d35053b605f7fd34df Release-1-15.tar.gz
diff --git a/extra/shared-mime-info/depends b/extra/shared-mime-info/depends
new file mode 100644
index 00000000..4919fada
--- /dev/null
+++ b/extra/shared-mime-info/depends
@@ -0,0 +1,4 @@
+glib
+libxml2
+xz
+zlib
diff --git a/extra/shared-mime-info/post-install b/extra/shared-mime-info/post-install
new file mode 100755
index 00000000..e9dffaad
--- /dev/null
+++ b/extra/shared-mime-info/post-install
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+update-mime-database -V /usr/share/mime
diff --git a/extra/shared-mime-info/sources b/extra/shared-mime-info/sources
new file mode 100644
index 00000000..4ad8576c
--- /dev/null
+++ b/extra/shared-mime-info/sources
@@ -0,0 +1 @@
+https://github.com/freedesktop/xdg-shared-mime-info/archive/Release-1-15.tar.gz
diff --git a/extra/shared-mime-info/version b/extra/shared-mime-info/version
new file mode 100644
index 00000000..b5a3e89c
--- /dev/null
+++ b/extra/shared-mime-info/version
@@ -0,0 +1 @@
+1.15 1
diff --git a/extra/sqlite/build b/extra/sqlite/build
new file mode 100755
index 00000000..b5c79fd1
--- /dev/null
+++ b/extra/sqlite/build
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+sed -i 's/ -ltinfo//g' configure
+
+./configure \
+ --prefix=/usr \
+ --enable-threadsafe \
+ --enable-dynamic-extensions \
+ --enable-fts5
+
+make -j 1
+make DESTDIR="$1" install
diff --git a/extra/sqlite/checksums b/extra/sqlite/checksums
new file mode 100644
index 00000000..a0bf9e77
--- /dev/null
+++ b/extra/sqlite/checksums
@@ -0,0 +1 @@
+8c5a50db089bd2a1b08dbc5b00d2027602ca7ff238ba7658fabca454d4298e60 sqlite-autoconf-3300100.tar.gz
diff --git a/extra/sqlite/depends b/extra/sqlite/depends
new file mode 100644
index 00000000..f22003e8
--- /dev/null
+++ b/extra/sqlite/depends
@@ -0,0 +1 @@
+zlib
diff --git a/extra/sqlite/sources b/extra/sqlite/sources
new file mode 100644
index 00000000..5e0c7a82
--- /dev/null
+++ b/extra/sqlite/sources
@@ -0,0 +1 @@
+https://sqlite.org/2019/sqlite-autoconf-3300100.tar.gz
diff --git a/extra/sqlite/version b/extra/sqlite/version
new file mode 100644
index 00000000..9fc15b14
--- /dev/null
+++ b/extra/sqlite/version
@@ -0,0 +1 @@
+3.30.1 1
diff --git a/extra/sudo/build b/extra/sudo/build
new file mode 100755
index 00000000..64dd511c
--- /dev/null
+++ b/extra/sudo/build
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-pam-session \
+ --disable-root-mailer \
+ --enable-pie \
+ --without-pam \
+ --without-sendmail \
+ --with-ignore-dot \
+ --with-insults=disabled \
+ --with-logfac=auth \
+ --with-passprompt="[sudo] password for %p: "
+
+make
+make \
+ DESTDIR="$1" \
+ install_uid="$(id -u)" \
+ install_gid="$(id -g)" \
+ install
diff --git a/extra/sudo/checksums b/extra/sudo/checksums
new file mode 100644
index 00000000..5613e8ec
--- /dev/null
+++ b/extra/sudo/checksums
@@ -0,0 +1 @@
+ce53ffac9604e23321334d8ba8ac59ded2bcf624fdb9dbde097ab2049bf29c7c sudo-1.8.29.tar.gz
diff --git a/extra/sudo/depends b/extra/sudo/depends
new file mode 100644
index 00000000..f22003e8
--- /dev/null
+++ b/extra/sudo/depends
@@ -0,0 +1 @@
+zlib
diff --git a/extra/sudo/sources b/extra/sudo/sources
new file mode 100644
index 00000000..3fa1c188
--- /dev/null
+++ b/extra/sudo/sources
@@ -0,0 +1 @@
+https://www.sudo.ws/dist/sudo-1.8.29.tar.gz
diff --git a/extra/sudo/version b/extra/sudo/version
new file mode 100644
index 00000000..fda497b7
--- /dev/null
+++ b/extra/sudo/version
@@ -0,0 +1 @@
+1.8.29 1
diff --git a/extra/tiff/build b/extra/tiff/build
new file mode 100755
index 00000000..eb4850d7
--- /dev/null
+++ b/extra/tiff/build
@@ -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
index 00000000..a08eb7db
--- /dev/null
+++ b/extra/tiff/checksums
@@ -0,0 +1 @@
+5d29f32517dadb6dbcd1255ea5bbc93a2b54b94fbf83653b4d65c7d6775b8634 tiff-4.1.0.tar.gz
diff --git a/extra/tiff/depends b/extra/tiff/depends
new file mode 100644
index 00000000..59e71142
--- /dev/null
+++ b/extra/tiff/depends
@@ -0,0 +1,3 @@
+libjpeg-turbo
+xz
+zlib
diff --git a/extra/tiff/sources b/extra/tiff/sources
new file mode 100644
index 00000000..c031708b
--- /dev/null
+++ b/extra/tiff/sources
@@ -0,0 +1 @@
+https://download.osgeo.org/libtiff/tiff-4.1.0.tar.gz
diff --git a/extra/tiff/version b/extra/tiff/version
new file mode 100644
index 00000000..1bc2766f
--- /dev/null
+++ b/extra/tiff/version
@@ -0,0 +1 @@
+4.1.0 1
diff --git a/extra/tzdata/build b/extra/tzdata/build
new file mode 100755
index 00000000..369842d0
--- /dev/null
+++ b/extra/tzdata/build
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+pkg_dir=$1
+
+make CC="${CC:-gcc}"
+make DESTDIR="$1" install
+
+set -- africa asia australasia europe northamerica southamerica
+
+./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/extra/tzdata/checksums b/extra/tzdata/checksums
new file mode 100644
index 00000000..dbdca45e
--- /dev/null
+++ b/extra/tzdata/checksums
@@ -0,0 +1 @@
+38b1f7c7a050daa14fb07f6b72cdde1fc895fece40758d4d55736847041ad9e2 2019c.tar.gz
diff --git a/extra/tzdata/sources b/extra/tzdata/sources
new file mode 100644
index 00000000..f809f894
--- /dev/null
+++ b/extra/tzdata/sources
@@ -0,0 +1 @@
+https://github.com/eggert/tz/archive/2019c.tar.gz
diff --git a/extra/tzdata/version b/extra/tzdata/version
new file mode 100644
index 00000000..6e4135ec
--- /dev/null
+++ b/extra/tzdata/version
@@ -0,0 +1 @@
+2019c 1
diff --git a/extra/vim/build b/extra/vim/build
new file mode 100755
index 00000000..f6149590
--- /dev/null
+++ b/extra/vim/build
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --enable-cscope \
+ --enable-multibyte \
+ --with-tlib=ncursesw \
+ --with-ex-name=vim-ex \
+ --with-view-name=vim-view \
+ --disable-perlinterp \
+ --disable-pythoninterp \
+ --disable-rubyinterp \
+ --disable-netbeans \
+ --disable-gpm \
+ --disable-hangulinput \
+ --disable-xim \
+ --disable-gui \
+ --without-x
+
+make
+make DESTDIR="$1" install
diff --git a/extra/vim/checksums b/extra/vim/checksums
new file mode 100644
index 00000000..9251fd31
--- /dev/null
+++ b/extra/vim/checksums
@@ -0,0 +1 @@
+a1c8078fe14b07dd874ac82d5776bfab1d325e8d792e7b9b1fd3475868285130 v8.1.2352.tar.gz
diff --git a/extra/vim/depends b/extra/vim/depends
new file mode 100644
index 00000000..6a470ffa
--- /dev/null
+++ b/extra/vim/depends
@@ -0,0 +1 @@
+ncurses
diff --git a/extra/vim/sources b/extra/vim/sources
new file mode 100644
index 00000000..6c1914e4
--- /dev/null
+++ b/extra/vim/sources
@@ -0,0 +1 @@
+https://github.com/vim/vim/archive/v8.1.2352.tar.gz
diff --git a/extra/vim/version b/extra/vim/version
new file mode 100644
index 00000000..1674897b
--- /dev/null
+++ b/extra/vim/version
@@ -0,0 +1 @@
+8.1.2352 1
diff --git a/extra/x264/build b/extra/x264/build
new file mode 100755
index 00000000..73cc54a0
--- /dev/null
+++ b/extra/x264/build
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+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
index 00000000..2243eefc
--- /dev/null
+++ b/extra/x264/checksums
@@ -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
index 00000000..f56f4f37
--- /dev/null
+++ b/extra/x264/depends
@@ -0,0 +1,2 @@
+nasm make
+perl make
diff --git a/extra/x264/patches/x264-no-bash.patch b/extra/x264/patches/x264-no-bash.patch
new file mode 100644
index 00000000..07e8dd2b
--- /dev/null
+++ b/extra/x264/patches/x264-no-bash.patch
@@ -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
index 00000000..ec3be5cb
--- /dev/null
+++ b/extra/x264/sources
@@ -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
index 00000000..c416a334
--- /dev/null
+++ b/extra/x264/version
@@ -0,0 +1 @@
+20190812-2245 4
diff --git a/extra/x265/build b/extra/x265/build
new file mode 100755
index 00000000..2bc1c919
--- /dev/null
+++ b/extra/x265/build
@@ -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
index 00000000..2ee5aac0
--- /dev/null
+++ b/extra/x265/checksums
@@ -0,0 +1 @@
+fb9badcf92364fd3567f8b5aa0e5e952aeea7a39a2b864387cec31e3b58cbbcc x265_3.2.1.tar.gz
diff --git a/extra/x265/depends b/extra/x265/depends
new file mode 100644
index 00000000..8e82f959
--- /dev/null
+++ b/extra/x265/depends
@@ -0,0 +1,2 @@
+cmake make
+nasm make
diff --git a/extra/x265/sources b/extra/x265/sources
new file mode 100644
index 00000000..2e1eeee4
--- /dev/null
+++ b/extra/x265/sources
@@ -0,0 +1 @@
+https://bitbucket.org/multicoreware/x265/downloads/x265_3.2.1.tar.gz
diff --git a/extra/x265/version b/extra/x265/version
new file mode 100644
index 00000000..b7c90c2c
--- /dev/null
+++ b/extra/x265/version
@@ -0,0 +1 @@
+3.2.1 1
diff --git a/extra/xvidcore/build b/extra/xvidcore/build
new file mode 100755
index 00000000..ac4edecd
--- /dev/null
+++ b/extra/xvidcore/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+cd build/generic
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/xvidcore/checksums b/extra/xvidcore/checksums
new file mode 100644
index 00000000..2d965add
--- /dev/null
+++ b/extra/xvidcore/checksums
@@ -0,0 +1 @@
+7c20f279f9d8e89042e85465d2bcb1b3130ceb1ecec33d5448c4589d78f010b4 xvidcore-1.3.5.tar.bz2
diff --git a/extra/xvidcore/depends b/extra/xvidcore/depends
new file mode 100644
index 00000000..116f6b27
--- /dev/null
+++ b/extra/xvidcore/depends
@@ -0,0 +1 @@
+nasm make
diff --git a/extra/xvidcore/sources b/extra/xvidcore/sources
new file mode 100644
index 00000000..b6f08bba
--- /dev/null
+++ b/extra/xvidcore/sources
@@ -0,0 +1 @@
+https://downloads.xvid.com/downloads/xvidcore-1.3.5.tar.bz2
diff --git a/extra/xvidcore/version b/extra/xvidcore/version
new file mode 100644
index 00000000..a06f6a21
--- /dev/null
+++ b/extra/xvidcore/version
@@ -0,0 +1 @@
+1.3.5 1
diff --git a/extra/yasm/build b/extra/yasm/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/extra/yasm/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/extra/yasm/checksums b/extra/yasm/checksums
new file mode 100644
index 00000000..ff95d85c
--- /dev/null
+++ b/extra/yasm/checksums
@@ -0,0 +1 @@
+3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f yasm-1.3.0.tar.gz
diff --git a/extra/yasm/sources b/extra/yasm/sources
new file mode 100644
index 00000000..f1b23c34
--- /dev/null
+++ b/extra/yasm/sources
@@ -0,0 +1 @@
+https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
diff --git a/extra/yasm/version b/extra/yasm/version
new file mode 100644
index 00000000..0a2d7f2b
--- /dev/null
+++ b/extra/yasm/version
@@ -0,0 +1 @@
+1.3.0 1
diff --git a/extra/zip/build b/extra/zip/build
new file mode 100755
index 00000000..bb3316b4
--- /dev/null
+++ b/extra/zip/build
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+make \
+ prefix=/usr \
+ CC="${CC:-gcc} $CFLAGS $CXXFLAGS" \
+ -f unix/Makefile generic
+
+make \
+ prefix="$1/usr" \
+ MANDIR="$1/usr/share/man/man1" \
+ -f unix/Makefile install
+
diff --git a/extra/zip/checksums b/extra/zip/checksums
new file mode 100644
index 00000000..3337c644
--- /dev/null
+++ b/extra/zip/checksums
@@ -0,0 +1 @@
+f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369 zip30.tar.gz
diff --git a/extra/zip/depends b/extra/zip/depends
new file mode 100644
index 00000000..7a457127
--- /dev/null
+++ b/extra/zip/depends
@@ -0,0 +1 @@
+bzip2
diff --git a/extra/zip/sources b/extra/zip/sources
new file mode 100644
index 00000000..49a21688
--- /dev/null
+++ b/extra/zip/sources
@@ -0,0 +1 @@
+https://downloads.sourceforge.net/infozip/zip30.tar.gz
diff --git a/extra/zip/version b/extra/zip/version
new file mode 100644
index 00000000..f90f0a39
--- /dev/null
+++ b/extra/zip/version
@@ -0,0 +1 @@
+3.0 2
diff --git a/xorg/cairo/build b/xorg/cairo/build
new file mode 100755
index 00000000..92dafa69
--- /dev/null
+++ b/xorg/cairo/build
@@ -0,0 +1,22 @@
+#!/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
+
+./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/xorg/cairo/checksums b/xorg/cairo/checksums
new file mode 100644
index 00000000..a07be27b
--- /dev/null
+++ b/xorg/cairo/checksums
@@ -0,0 +1 @@
+5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331 cairo-1.16.0.tar.xz
diff --git a/xorg/cairo/depends b/xorg/cairo/depends
new file mode 100644
index 00000000..c6a9632b
--- /dev/null
+++ b/xorg/cairo/depends
@@ -0,0 +1,9 @@
+fontconfig
+glib
+libffi
+libpng
+libXext
+libXrender
+mesa
+pixman
+zlib
diff --git a/xorg/cairo/sources b/xorg/cairo/sources
new file mode 100644
index 00000000..e43c5aab
--- /dev/null
+++ b/xorg/cairo/sources
@@ -0,0 +1 @@
+https://cairographics.org/releases/cairo-1.16.0.tar.xz
diff --git a/xorg/cairo/version b/xorg/cairo/version
new file mode 100644
index 00000000..7a092de2
--- /dev/null
+++ b/xorg/cairo/version
@@ -0,0 +1 @@
+1.16.0 3
diff --git a/xorg/fontconfig/build b/xorg/fontconfig/build
new file mode 100755
index 00000000..491646f4
--- /dev/null
+++ b/xorg/fontconfig/build
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --with-xmldir=/etc/fonts
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/fontconfig/checksums b/xorg/fontconfig/checksums
new file mode 100644
index 00000000..f5c9e125
--- /dev/null
+++ b/xorg/fontconfig/checksums
@@ -0,0 +1 @@
+506e61283878c1726550bc94f2af26168f1e9f2106eac77eaaf0b2cdfad66e4e fontconfig-2.13.92.tar.xz
diff --git a/xorg/fontconfig/depends b/xorg/fontconfig/depends
new file mode 100644
index 00000000..3d20895d
--- /dev/null
+++ b/xorg/fontconfig/depends
@@ -0,0 +1,3 @@
+expat
+freetype-harfbuzz
+gperf make
diff --git a/xorg/fontconfig/post-install b/xorg/fontconfig/post-install
new file mode 100755
index 00000000..50861de3
--- /dev/null
+++ b/xorg/fontconfig/post-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+fc-cache -vf
diff --git a/xorg/fontconfig/sources b/xorg/fontconfig/sources
new file mode 100644
index 00000000..3f28846b
--- /dev/null
+++ b/xorg/fontconfig/sources
@@ -0,0 +1 @@
+https://freedesktop.org/software/fontconfig/release/fontconfig-2.13.92.tar.xz
diff --git a/xorg/fontconfig/version b/xorg/fontconfig/version
new file mode 100644
index 00000000..dfe1ff01
--- /dev/null
+++ b/xorg/fontconfig/version
@@ -0,0 +1 @@
+2.13.92 1
diff --git a/xorg/freetype-harfbuzz/build b/xorg/freetype-harfbuzz/build
new file mode 100755
index 00000000..d42d5ac0
--- /dev/null
+++ b/xorg/freetype-harfbuzz/build
@@ -0,0 +1,40 @@
+#!/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() (
+ cd harfbuzz
+
+ ./configure \
+ --prefix=/usr \
+ --with-glib=yes \
+ --with-icu=no
+
+ make
+ make DESTDIR="$1" install
+)
+
+build_freetype "$1" no
+
+# Point Harfbuzz to the Freetype files.
+export FREETYPE_CFLAGS="-I$PWD/freetype/include"
+export FREETYPE_LIBS="-L$1/usr/lib -lfreetype"
+
+build_harfbuzz "$1"
+
+# Point Freetype to the Harfbuzz files.
+export HARFBUZZ_CFLAGS="-I$PWD/harfbuzz/src"
+export HARFBUZZ_LIBS="-L$PWD/harfbuzz/src/.libs -lharfbuzz"
+
+build_freetype "$1" yes
diff --git a/xorg/freetype-harfbuzz/checksums b/xorg/freetype-harfbuzz/checksums
new file mode 100644
index 00000000..3a91c887
--- /dev/null
+++ b/xorg/freetype-harfbuzz/checksums
@@ -0,0 +1,2 @@
+16dbfa488a21fe827dc27eaf708f42f7aa3bb997d745d31a19781628c36ba26f freetype-2.10.1.tar.xz
+9413b8d96132d699687ef914ebb8c50440efc87b3f775d25856d7ec347c03c12 harfbuzz-2.6.4.tar.xz
diff --git a/xorg/freetype-harfbuzz/depends b/xorg/freetype-harfbuzz/depends
new file mode 100644
index 00000000..a7f66b10
--- /dev/null
+++ b/xorg/freetype-harfbuzz/depends
@@ -0,0 +1,17 @@
+bzip2
+expat
+glib
+libX11
+libXau
+libXdamage
+libXext
+libXfixes
+libXrender
+libXxf86vm
+libdrm
+libpng
+libxcb
+libxshmfence
+mesa
+pixman
+zlib
diff --git a/xorg/freetype-harfbuzz/sources b/xorg/freetype-harfbuzz/sources
new file mode 100644
index 00000000..676c90a1
--- /dev/null
+++ b/xorg/freetype-harfbuzz/sources
@@ -0,0 +1,2 @@
+https://download-mirror.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.xz freetype
+https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-2.6.4.tar.xz harfbuzz
diff --git a/xorg/freetype-harfbuzz/version b/xorg/freetype-harfbuzz/version
new file mode 100644
index 00000000..0f9afd68
--- /dev/null
+++ b/xorg/freetype-harfbuzz/version
@@ -0,0 +1 @@
+2.10.1+2.6.4 1
diff --git a/xorg/gdk-pixbuf/build b/xorg/gdk-pixbuf/build
new file mode 100755
index 00000000..cedbfa0b
--- /dev/null
+++ b/xorg/gdk-pixbuf/build
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ -Dgir=false \
+ -Djasper=false \
+ -Dpng=true \
+ -Ddocs=false \
+ -Dman=false \
+ -Dinstalled_tests=false \
+ -Dbuiltin_loaders=all \
+ . output
+
+ninja -C output
+ninja -C output install
diff --git a/xorg/gdk-pixbuf/checksums b/xorg/gdk-pixbuf/checksums
new file mode 100644
index 00000000..cc4a0ecb
--- /dev/null
+++ b/xorg/gdk-pixbuf/checksums
@@ -0,0 +1 @@
+1582595099537ca8ff3b99c6804350b4c058bb8ad67411bbaae024ee7cead4e6 gdk-pixbuf-2.40.0.tar.xz
diff --git a/xorg/gdk-pixbuf/depends b/xorg/gdk-pixbuf/depends
new file mode 100644
index 00000000..a6b78545
--- /dev/null
+++ b/xorg/gdk-pixbuf/depends
@@ -0,0 +1,5 @@
+glib
+libX11
+libpng
+meson make
+shared-mime-info make
diff --git a/xorg/gdk-pixbuf/post-install b/xorg/gdk-pixbuf/post-install
new file mode 100755
index 00000000..b97f005f
--- /dev/null
+++ b/xorg/gdk-pixbuf/post-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+gdk-pixbuf-query-loaders --update-cache
diff --git a/xorg/gdk-pixbuf/sources b/xorg/gdk-pixbuf/sources
new file mode 100644
index 00000000..2990051a
--- /dev/null
+++ b/xorg/gdk-pixbuf/sources
@@ -0,0 +1 @@
+https://download.gnome.org/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz
diff --git a/xorg/gdk-pixbuf/version b/xorg/gdk-pixbuf/version
new file mode 100644
index 00000000..4ce29de9
--- /dev/null
+++ b/xorg/gdk-pixbuf/version
@@ -0,0 +1 @@
+2.40.0 1
diff --git a/xorg/gtk+2/build b/xorg/gtk+2/build
new file mode 100755
index 00000000..7bb2318b
--- /dev/null
+++ b/xorg/gtk+2/build
@@ -0,0 +1,18 @@
+#!/bin/sh -e
+
+export CFLAGS="$CFLAGS -UGDK_PIXBUF_DISABLE_DEPRECATED"
+
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --enable-debug=no \
+ --disable-gtk-doc \
+ --with-xinput=yes
+
+make
+make DESTDIR="$1" install
+
+rm -f "$1/usr/bin/gtk-update-icon-cache"
+rm -f "$1/usr/bin/gtk-demo"
+rm -rf "$1/usr/share/gtk-2.0/demo"
diff --git a/xorg/gtk+2/checksums b/xorg/gtk+2/checksums
new file mode 100644
index 00000000..987f312c
--- /dev/null
+++ b/xorg/gtk+2/checksums
@@ -0,0 +1 @@
+b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e gtk+-2.24.32.tar.xz
diff --git a/xorg/gtk+2/depends b/xorg/gtk+2/depends
new file mode 100644
index 00000000..55387439
--- /dev/null
+++ b/xorg/gtk+2/depends
@@ -0,0 +1,10 @@
+atk
+fribidi
+gdk-pixbuf
+libXcomposite
+libXi
+libXinerama
+libepoxy
+pango
+python make
+shared-mime-info
diff --git a/xorg/gtk+2/sources b/xorg/gtk+2/sources
new file mode 100644
index 00000000..9d4cf178
--- /dev/null
+++ b/xorg/gtk+2/sources
@@ -0,0 +1 @@
+https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.32.tar.xz
diff --git a/xorg/gtk+2/version b/xorg/gtk+2/version
new file mode 100644
index 00000000..475aee5b
--- /dev/null
+++ b/xorg/gtk+2/version
@@ -0,0 +1 @@
+2.24.32 2
diff --git a/xorg/gtk+3/build b/xorg/gtk+3/build
new file mode 100755
index 00000000..9db3b285
--- /dev/null
+++ b/xorg/gtk+3/build
@@ -0,0 +1,31 @@
+#!/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
+
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --enable-xkb \
+ --enable-xinerama \
+ --enable-xrandr \
+ --enable-xfixes \
+ --enable-xcomposite \
+ --enable-xdamage \
+ --enable-x11-backend \
+ --enable-debug=no \
+ --disable-schemas-compile \
+ --disable-cups \
+ --disable-papi \
+ --disable-cloudprint \
+ --enable-introspection=no \
+ --enable-colord=no \
+ --enable-gtk-doc-html=no
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/gtk+3/checksums b/xorg/gtk+3/checksums
new file mode 100644
index 00000000..3a5b0191
--- /dev/null
+++ b/xorg/gtk+3/checksums
@@ -0,0 +1 @@
+4c775c38cf1e3c534ef0ca52ca6c7a890fe169981af66141c713e054e68930a9 gtk+-3.24.13.tar.xz
diff --git a/xorg/gtk+3/depends b/xorg/gtk+3/depends
new file mode 100644
index 00000000..3a47a670
--- /dev/null
+++ b/xorg/gtk+3/depends
@@ -0,0 +1,15 @@
+atk
+fribidi
+gdk-pixbuf
+libXcomposite
+libXcursor
+libXdamage
+libXext
+libXi
+libXinerama
+libXrandr
+libepoxy
+pango
+perl make
+python make
+shared-mime-info
diff --git a/xorg/gtk+3/post-install b/xorg/gtk+3/post-install
new file mode 100755
index 00000000..551057e9
--- /dev/null
+++ b/xorg/gtk+3/post-install
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+glib-compile-schemas /usr/share/glib-2.0/schemas/
diff --git a/xorg/gtk+3/sources b/xorg/gtk+3/sources
new file mode 100644
index 00000000..3d86d1fa
--- /dev/null
+++ b/xorg/gtk+3/sources
@@ -0,0 +1 @@
+https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.13.tar.xz
diff --git a/xorg/gtk+3/version b/xorg/gtk+3/version
new file mode 100644
index 00000000..fa9d3b2b
--- /dev/null
+++ b/xorg/gtk+3/version
@@ -0,0 +1 @@
+3.24.13 1
diff --git a/xorg/hicolor-icon-theme/build b/xorg/hicolor-icon-theme/build
new file mode 100755
index 00000000..c647b8ef
--- /dev/null
+++ b/xorg/hicolor-icon-theme/build
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make DESTDIR="$1" install
diff --git a/xorg/hicolor-icon-theme/checksums b/xorg/hicolor-icon-theme/checksums
new file mode 100644
index 00000000..79c2b66e
--- /dev/null
+++ b/xorg/hicolor-icon-theme/checksums
@@ -0,0 +1 @@
+317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8 hicolor-icon-theme-0.17.tar.xz
diff --git a/xorg/hicolor-icon-theme/sources b/xorg/hicolor-icon-theme/sources
new file mode 100644
index 00000000..25bef1de
--- /dev/null
+++ b/xorg/hicolor-icon-theme/sources
@@ -0,0 +1 @@
+https://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.17.tar.xz
diff --git a/xorg/hicolor-icon-theme/version b/xorg/hicolor-icon-theme/version
new file mode 100644
index 00000000..dc75c933
--- /dev/null
+++ b/xorg/hicolor-icon-theme/version
@@ -0,0 +1 @@
+0.17 1
diff --git a/xorg/libICE/build b/xorg/libICE/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libICE/build
@@ -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
index 00000000..98a60cfb
--- /dev/null
+++ b/xorg/libICE/checksums
@@ -0,0 +1 @@
+6f86dce12cf4bcaf5c37dddd8b1b64ed2ddf1ef7b218f22b9942595fb747c348 libICE-1.0.10.tar.bz2
diff --git a/xorg/libICE/depends b/xorg/libICE/depends
new file mode 100644
index 00000000..ebbf4b36
--- /dev/null
+++ b/xorg/libICE/depends
@@ -0,0 +1,2 @@
+xorgproto make
+xtrans make
diff --git a/xorg/libICE/sources b/xorg/libICE/sources
new file mode 100644
index 00000000..68be089e
--- /dev/null
+++ b/xorg/libICE/sources
@@ -0,0 +1 @@
+https://www.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
index 00000000..9933b0e0
--- /dev/null
+++ b/xorg/libICE/version
@@ -0,0 +1 @@
+1.0.10 2
diff --git a/xorg/libSM/build b/xorg/libSM/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libSM/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libSM/checksums b/xorg/libSM/checksums
new file mode 100644
index 00000000..67486e6e
--- /dev/null
+++ b/xorg/libSM/checksums
@@ -0,0 +1 @@
+2d264499dcb05f56438dee12a1b4b71d76736ce7ba7aa6efbf15ebb113769cbb libSM-1.2.3.tar.bz2
diff --git a/xorg/libSM/depends b/xorg/libSM/depends
new file mode 100644
index 00000000..faa771bd
--- /dev/null
+++ b/xorg/libSM/depends
@@ -0,0 +1,3 @@
+util-linux
+libICE
+pkgconf make
diff --git a/xorg/libSM/sources b/xorg/libSM/sources
new file mode 100644
index 00000000..af2ece39
--- /dev/null
+++ b/xorg/libSM/sources
@@ -0,0 +1 @@
+https://www.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
index 00000000..e63ae1de
--- /dev/null
+++ b/xorg/libSM/version
@@ -0,0 +1 @@
+1.2.3 2
diff --git a/xorg/libX11/build b/xorg/libX11/build
new file mode 100755
index 00000000..a7d53475
--- /dev/null
+++ b/xorg/libX11/build
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+CFLAGS_FOR_BUILD=-fPIC \
+./configure \
+ --prefix=/usr \
+ --enable-static
+
+make
+make DESTDIR="$1" install
+
+# This will be removed once 'xorgproto' 2019.2
+# is released.
+rm -f "$1/usr/include/X11/extensions/XKBgeom.h"
diff --git a/xorg/libX11/checksums b/xorg/libX11/checksums
new file mode 100644
index 00000000..3d2a2737
--- /dev/null
+++ b/xorg/libX11/checksums
@@ -0,0 +1 @@
+9cc7e8d000d6193fa5af580d50d689380b8287052270f5bb26a5fb6b58b2bed1 libX11-1.6.9.tar.bz2
diff --git a/xorg/libX11/depends b/xorg/libX11/depends
new file mode 100644
index 00000000..dd5bf5e3
--- /dev/null
+++ b/xorg/libX11/depends
@@ -0,0 +1,4 @@
+libXau
+libxcb
+xorgproto
+xtrans make
diff --git a/xorg/libX11/sources b/xorg/libX11/sources
new file mode 100644
index 00000000..4e04548b
--- /dev/null
+++ b/xorg/libX11/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libX11-1.6.9.tar.bz2
diff --git a/xorg/libX11/version b/xorg/libX11/version
new file mode 100644
index 00000000..56a7097c
--- /dev/null
+++ b/xorg/libX11/version
@@ -0,0 +1 @@
+1.6.9 1
diff --git a/xorg/libXScrnSaver/build b/xorg/libXScrnSaver/build
new file mode 100755
index 00000000..105ed0c2
--- /dev/null
+++ b/xorg/libXScrnSaver/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --enable-malloc0returnsnull
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXScrnSaver/checksums b/xorg/libXScrnSaver/checksums
new file mode 100644
index 00000000..c456e07b
--- /dev/null
+++ b/xorg/libXScrnSaver/checksums
@@ -0,0 +1 @@
+f917075a1b7b5a38d67a8b0238eaab14acd2557679835b154cf2bca576e89bf8 libXScrnSaver-1.2.3.tar.bz2
diff --git a/xorg/libXScrnSaver/depends b/xorg/libXScrnSaver/depends
new file mode 100644
index 00000000..320e15fd
--- /dev/null
+++ b/xorg/libXScrnSaver/depends
@@ -0,0 +1,3 @@
+libX11 make
+libXext make
+xorgproto make
diff --git a/xorg/libXScrnSaver/sources b/xorg/libXScrnSaver/sources
new file mode 100644
index 00000000..1104156e
--- /dev/null
+++ b/xorg/libXScrnSaver/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXScrnSaver-1.2.3.tar.bz2
diff --git a/xorg/libXScrnSaver/version b/xorg/libXScrnSaver/version
new file mode 100644
index 00000000..883a7ecf
--- /dev/null
+++ b/xorg/libXScrnSaver/version
@@ -0,0 +1 @@
+1.2.3 1
diff --git a/xorg/libXau/build b/xorg/libXau/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXau/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXau/checksums b/xorg/libXau/checksums
new file mode 100644
index 00000000..cf7404f1
--- /dev/null
+++ b/xorg/libXau/checksums
@@ -0,0 +1 @@
+ccf8cbf0dbf676faa2ea0a6d64bcc3b6746064722b606c8c52917ed00dcb73ec libXau-1.0.9.tar.bz2
diff --git a/xorg/libXau/depends b/xorg/libXau/depends
new file mode 100644
index 00000000..32e0e265
--- /dev/null
+++ b/xorg/libXau/depends
@@ -0,0 +1 @@
+xorgproto make
diff --git a/xorg/libXau/sources b/xorg/libXau/sources
new file mode 100644
index 00000000..8049390c
--- /dev/null
+++ b/xorg/libXau/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXau-1.0.9.tar.bz2
diff --git a/xorg/libXau/version b/xorg/libXau/version
new file mode 100644
index 00000000..77737630
--- /dev/null
+++ b/xorg/libXau/version
@@ -0,0 +1 @@
+1.0.9 1
diff --git a/xorg/libXcomposite/build b/xorg/libXcomposite/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXcomposite/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXcomposite/checksums b/xorg/libXcomposite/checksums
new file mode 100644
index 00000000..ed55a544
--- /dev/null
+++ b/xorg/libXcomposite/checksums
@@ -0,0 +1 @@
+b3218a2c15bab8035d16810df5b8251ffc7132ff3aa70651a1fba0bfe9634e8f libXcomposite-0.4.5.tar.bz2
diff --git a/xorg/libXcomposite/depends b/xorg/libXcomposite/depends
new file mode 100644
index 00000000..9cf42339
--- /dev/null
+++ b/xorg/libXcomposite/depends
@@ -0,0 +1,2 @@
+xorgproto make
+libXfixes
diff --git a/xorg/libXcomposite/sources b/xorg/libXcomposite/sources
new file mode 100644
index 00000000..39b9b0ce
--- /dev/null
+++ b/xorg/libXcomposite/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXcomposite-0.4.5.tar.bz2
diff --git a/xorg/libXcomposite/version b/xorg/libXcomposite/version
new file mode 100644
index 00000000..d49665f6
--- /dev/null
+++ b/xorg/libXcomposite/version
@@ -0,0 +1 @@
+0.4.5 2
diff --git a/xorg/libXcursor/build b/xorg/libXcursor/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXcursor/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXcursor/checksums b/xorg/libXcursor/checksums
new file mode 100644
index 00000000..0b7031a9
--- /dev/null
+++ b/xorg/libXcursor/checksums
@@ -0,0 +1 @@
+3ad3e9f8251094af6fe8cb4afcf63e28df504d46bfa5a5529db74a505d628782 libXcursor-1.2.0.tar.bz2
diff --git a/xorg/libXcursor/depends b/xorg/libXcursor/depends
new file mode 100644
index 00000000..0f2bada9
--- /dev/null
+++ b/xorg/libXcursor/depends
@@ -0,0 +1,3 @@
+xorgproto make
+libXrender
+libXfixes
diff --git a/xorg/libXcursor/sources b/xorg/libXcursor/sources
new file mode 100644
index 00000000..4f3aa121
--- /dev/null
+++ b/xorg/libXcursor/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXcursor-1.2.0.tar.bz2
diff --git a/xorg/libXcursor/version b/xorg/libXcursor/version
new file mode 100644
index 00000000..9d7d10ab
--- /dev/null
+++ b/xorg/libXcursor/version
@@ -0,0 +1 @@
+1.2.0 2
diff --git a/xorg/libXdamage/build b/xorg/libXdamage/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXdamage/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXdamage/checksums b/xorg/libXdamage/checksums
new file mode 100644
index 00000000..60657953
--- /dev/null
+++ b/xorg/libXdamage/checksums
@@ -0,0 +1 @@
+b734068643cac3b5f3d2c8279dd366b5bf28c7219d9e9d8717e1383995e0ea45 libXdamage-1.1.5.tar.bz2
diff --git a/xorg/libXdamage/depends b/xorg/libXdamage/depends
new file mode 100644
index 00000000..e218970a
--- /dev/null
+++ b/xorg/libXdamage/depends
@@ -0,0 +1,3 @@
+xorgproto make
+libX11
+libXfixes
diff --git a/xorg/libXdamage/sources b/xorg/libXdamage/sources
new file mode 100644
index 00000000..85cff032
--- /dev/null
+++ b/xorg/libXdamage/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXdamage-1.1.5.tar.bz2
diff --git a/xorg/libXdamage/version b/xorg/libXdamage/version
new file mode 100644
index 00000000..89d25d21
--- /dev/null
+++ b/xorg/libXdamage/version
@@ -0,0 +1 @@
+1.1.5 2
diff --git a/xorg/libXext/build b/xorg/libXext/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXext/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXext/checksums b/xorg/libXext/checksums
new file mode 100644
index 00000000..e86d68c8
--- /dev/null
+++ b/xorg/libXext/checksums
@@ -0,0 +1 @@
+59ad6fcce98deaecc14d39a672cf218ca37aba617c9a0f691cac3bcd28edf82b libXext-1.3.4.tar.bz2
diff --git a/xorg/libXext/depends b/xorg/libXext/depends
new file mode 100644
index 00000000..cdecd8b9
--- /dev/null
+++ b/xorg/libXext/depends
@@ -0,0 +1,2 @@
+xorgproto make
+libX11 make
diff --git a/xorg/libXext/sources b/xorg/libXext/sources
new file mode 100644
index 00000000..5c64ae6d
--- /dev/null
+++ b/xorg/libXext/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXext-1.3.4.tar.bz2
diff --git a/xorg/libXext/version b/xorg/libXext/version
new file mode 100644
index 00000000..d289440a
--- /dev/null
+++ b/xorg/libXext/version
@@ -0,0 +1 @@
+1.3.4 2
diff --git a/xorg/libXfixes/build b/xorg/libXfixes/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXfixes/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXfixes/checksums b/xorg/libXfixes/checksums
new file mode 100644
index 00000000..e805a0a8
--- /dev/null
+++ b/xorg/libXfixes/checksums
@@ -0,0 +1 @@
+de1cd33aff226e08cefd0e6759341c2c8e8c9faf8ce9ac6ec38d43e287b22ad6 libXfixes-5.0.3.tar.bz2
diff --git a/xorg/libXfixes/sources b/xorg/libXfixes/sources
new file mode 100644
index 00000000..c723eea3
--- /dev/null
+++ b/xorg/libXfixes/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXfixes-5.0.3.tar.bz2
diff --git a/xorg/libXfixes/version b/xorg/libXfixes/version
new file mode 100644
index 00000000..374dd194
--- /dev/null
+++ b/xorg/libXfixes/version
@@ -0,0 +1 @@
+5.0.3 1
diff --git a/xorg/libXfont2/build b/xorg/libXfont2/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXfont2/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXfont2/checksums b/xorg/libXfont2/checksums
new file mode 100644
index 00000000..b3ec8056
--- /dev/null
+++ b/xorg/libXfont2/checksums
@@ -0,0 +1 @@
+6d151b3368e5035efede4b6264c0fdc6662c1c99dbc2de425e3480cababc69e6 libXfont2-2.0.4.tar.bz2
diff --git a/xorg/libXfont2/depends b/xorg/libXfont2/depends
new file mode 100644
index 00000000..d9d2b7d7
--- /dev/null
+++ b/xorg/libXfont2/depends
@@ -0,0 +1,4 @@
+freetype-harfbuzz
+libfontenc
+xorgproto make
+xtrans make
diff --git a/xorg/libXfont2/sources b/xorg/libXfont2/sources
new file mode 100644
index 00000000..4d30f70b
--- /dev/null
+++ b/xorg/libXfont2/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXfont2-2.0.4.tar.bz2
diff --git a/xorg/libXfont2/version b/xorg/libXfont2/version
new file mode 100644
index 00000000..aaedf8d0
--- /dev/null
+++ b/xorg/libXfont2/version
@@ -0,0 +1 @@
+2.0.4 1
diff --git a/xorg/libXft/build b/xorg/libXft/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXft/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXft/checksums b/xorg/libXft/checksums
new file mode 100644
index 00000000..de009098
--- /dev/null
+++ b/xorg/libXft/checksums
@@ -0,0 +1 @@
+225c68e616dd29dbb27809e45e9eadf18e4d74c50be43020ef20015274529216 libXft-2.3.3.tar.bz2
diff --git a/xorg/libXft/depends b/xorg/libXft/depends
new file mode 100644
index 00000000..57d955e8
--- /dev/null
+++ b/xorg/libXft/depends
@@ -0,0 +1,4 @@
+fontconfig make
+freetype-harfbuzz make
+libXrender make
+xorgproto make
diff --git a/xorg/libXft/sources b/xorg/libXft/sources
new file mode 100644
index 00000000..42ff08e4
--- /dev/null
+++ b/xorg/libXft/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXft-2.3.3.tar.bz2
diff --git a/xorg/libXft/version b/xorg/libXft/version
new file mode 100644
index 00000000..c8114267
--- /dev/null
+++ b/xorg/libXft/version
@@ -0,0 +1 @@
+2.3.3 1
diff --git a/xorg/libXi/build b/xorg/libXi/build
new file mode 100755
index 00000000..105ed0c2
--- /dev/null
+++ b/xorg/libXi/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --enable-malloc0returnsnull
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXi/checksums b/xorg/libXi/checksums
new file mode 100644
index 00000000..93d1ff05
--- /dev/null
+++ b/xorg/libXi/checksums
@@ -0,0 +1 @@
+36a30d8f6383a72e7ce060298b4b181fd298bc3a135c8e201b7ca847f5f81061 libXi-1.7.10.tar.bz2
diff --git a/xorg/libXi/depends b/xorg/libXi/depends
new file mode 100644
index 00000000..e648cf9a
--- /dev/null
+++ b/xorg/libXi/depends
@@ -0,0 +1,3 @@
+libXext
+libXfixes
+xorgproto make
diff --git a/xorg/libXi/sources b/xorg/libXi/sources
new file mode 100644
index 00000000..1864b97c
--- /dev/null
+++ b/xorg/libXi/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXi-1.7.10.tar.bz2
diff --git a/xorg/libXi/version b/xorg/libXi/version
new file mode 100644
index 00000000..afbba12f
--- /dev/null
+++ b/xorg/libXi/version
@@ -0,0 +1 @@
+1.7.10 3
diff --git a/xorg/libXinerama/build b/xorg/libXinerama/build
new file mode 100755
index 00000000..105ed0c2
--- /dev/null
+++ b/xorg/libXinerama/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --enable-malloc0returnsnull
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXinerama/checksums b/xorg/libXinerama/checksums
new file mode 100644
index 00000000..7a97240c
--- /dev/null
+++ b/xorg/libXinerama/checksums
@@ -0,0 +1 @@
+0008dbd7ecf717e1e507eed1856ab0d9cf946d03201b85d5dcf61489bb02d720 libXinerama-1.1.4.tar.bz2
diff --git a/xorg/libXinerama/depends b/xorg/libXinerama/depends
new file mode 100644
index 00000000..ae44963c
--- /dev/null
+++ b/xorg/libXinerama/depends
@@ -0,0 +1,2 @@
+libXext
+xorgproto
diff --git a/xorg/libXinerama/sources b/xorg/libXinerama/sources
new file mode 100644
index 00000000..53624239
--- /dev/null
+++ b/xorg/libXinerama/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXinerama-1.1.4.tar.bz2
diff --git a/xorg/libXinerama/version b/xorg/libXinerama/version
new file mode 100644
index 00000000..b01ca96f
--- /dev/null
+++ b/xorg/libXinerama/version
@@ -0,0 +1 @@
+1.1.4 1
diff --git a/xorg/libXmu/build b/xorg/libXmu/build
new file mode 100755
index 00000000..6b0a232c
--- /dev/null
+++ b/xorg/libXmu/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXmu/checksums b/xorg/libXmu/checksums
new file mode 100644
index 00000000..af34d904
--- /dev/null
+++ b/xorg/libXmu/checksums
@@ -0,0 +1 @@
+9c343225e7c3dc0904f2122b562278da5fed639b1b5e880d25111561bac5b731 libXmu-1.1.3.tar.bz2
diff --git a/xorg/libXmu/depends b/xorg/libXmu/depends
new file mode 100644
index 00000000..7ca7df15
--- /dev/null
+++ b/xorg/libXmu/depends
@@ -0,0 +1,3 @@
+libXext
+libXt
+xorg-util-macros make
diff --git a/xorg/libXmu/sources b/xorg/libXmu/sources
new file mode 100644
index 00000000..ac95a86e
--- /dev/null
+++ b/xorg/libXmu/sources
@@ -0,0 +1 @@
+https://x.org/releases/individual/lib/libXmu-1.1.3.tar.bz2
diff --git a/xorg/libXmu/version b/xorg/libXmu/version
new file mode 100644
index 00000000..035474a2
--- /dev/null
+++ b/xorg/libXmu/version
@@ -0,0 +1 @@
+1.1.3 1
diff --git a/xorg/libXrandr/build b/xorg/libXrandr/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXrandr/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXrandr/checksums b/xorg/libXrandr/checksums
new file mode 100644
index 00000000..8876a4c3
--- /dev/null
+++ b/xorg/libXrandr/checksums
@@ -0,0 +1 @@
+8aea0ebe403d62330bb741ed595b53741acf45033d3bda1792f1d4cc3daee023 libXrandr-1.5.2.tar.bz2
diff --git a/xorg/libXrandr/depends b/xorg/libXrandr/depends
new file mode 100644
index 00000000..d6cc170c
--- /dev/null
+++ b/xorg/libXrandr/depends
@@ -0,0 +1,3 @@
+xorgproto make
+libXext make
+libXrender make
diff --git a/xorg/libXrandr/sources b/xorg/libXrandr/sources
new file mode 100644
index 00000000..498263c5
--- /dev/null
+++ b/xorg/libXrandr/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXrandr-1.5.2.tar.bz2
diff --git a/xorg/libXrandr/version b/xorg/libXrandr/version
new file mode 100644
index 00000000..5b702ae2
--- /dev/null
+++ b/xorg/libXrandr/version
@@ -0,0 +1 @@
+1.5.2 1
diff --git a/xorg/libXrender/build b/xorg/libXrender/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXrender/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXrender/checksums b/xorg/libXrender/checksums
new file mode 100644
index 00000000..2c212184
--- /dev/null
+++ b/xorg/libXrender/checksums
@@ -0,0 +1 @@
+c06d5979f86e64cabbde57c223938db0b939dff49fdb5a793a1d3d0396650949 libXrender-0.9.10.tar.bz2
diff --git a/xorg/libXrender/depends b/xorg/libXrender/depends
new file mode 100644
index 00000000..5c4191a2
--- /dev/null
+++ b/xorg/libXrender/depends
@@ -0,0 +1,2 @@
+xorgproto make
+libXext make
diff --git a/xorg/libXrender/sources b/xorg/libXrender/sources
new file mode 100644
index 00000000..cbc8d07a
--- /dev/null
+++ b/xorg/libXrender/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXrender-0.9.10.tar.bz2
diff --git a/xorg/libXrender/version b/xorg/libXrender/version
new file mode 100644
index 00000000..6377cbbd
--- /dev/null
+++ b/xorg/libXrender/version
@@ -0,0 +1 @@
+0.9.10 2
diff --git a/xorg/libXt/build b/xorg/libXt/build
new file mode 100755
index 00000000..105ed0c2
--- /dev/null
+++ b/xorg/libXt/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --enable-malloc0returnsnull
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXt/checksums b/xorg/libXt/checksums
new file mode 100644
index 00000000..b5b37c6b
--- /dev/null
+++ b/xorg/libXt/checksums
@@ -0,0 +1 @@
+b31df531dabed9f4611fc8980bc51d7782967e2aff44c4105251a1acb5a77831 libXt-1.2.0.tar.bz2
diff --git a/xorg/libXt/depends b/xorg/libXt/depends
new file mode 100644
index 00000000..f33f2ce9
--- /dev/null
+++ b/xorg/libXt/depends
@@ -0,0 +1,3 @@
+libSM
+libX11
+xorgproto make
diff --git a/xorg/libXt/sources b/xorg/libXt/sources
new file mode 100644
index 00000000..3be15b6b
--- /dev/null
+++ b/xorg/libXt/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXt-1.2.0.tar.bz2
diff --git a/xorg/libXt/version b/xorg/libXt/version
new file mode 100644
index 00000000..9d7d10ab
--- /dev/null
+++ b/xorg/libXt/version
@@ -0,0 +1 @@
+1.2.0 2
diff --git a/xorg/libXxf86vm/build b/xorg/libXxf86vm/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libXxf86vm/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libXxf86vm/checksums b/xorg/libXxf86vm/checksums
new file mode 100644
index 00000000..bacddce7
--- /dev/null
+++ b/xorg/libXxf86vm/checksums
@@ -0,0 +1 @@
+afee27f93c5f31c0ad582852c0fb36d50e4de7cd585fcf655e278a633d85cd57 libXxf86vm-1.1.4.tar.bz2
diff --git a/xorg/libXxf86vm/depends b/xorg/libXxf86vm/depends
new file mode 100644
index 00000000..5c4191a2
--- /dev/null
+++ b/xorg/libXxf86vm/depends
@@ -0,0 +1,2 @@
+xorgproto make
+libXext make
diff --git a/xorg/libXxf86vm/sources b/xorg/libXxf86vm/sources
new file mode 100644
index 00000000..cd080df2
--- /dev/null
+++ b/xorg/libXxf86vm/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libXxf86vm-1.1.4.tar.bz2
diff --git a/xorg/libXxf86vm/version b/xorg/libXxf86vm/version
new file mode 100644
index 00000000..b01ca96f
--- /dev/null
+++ b/xorg/libXxf86vm/version
@@ -0,0 +1 @@
+1.1.4 1
diff --git a/xorg/libdrm/build b/xorg/libdrm/build
new file mode 100755
index 00000000..625ec3a8
--- /dev/null
+++ b/xorg/libdrm/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-valgrind
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libdrm/checksums b/xorg/libdrm/checksums
new file mode 100644
index 00000000..0c393df3
--- /dev/null
+++ b/xorg/libdrm/checksums
@@ -0,0 +1 @@
+c77cc828186c9ceec3e56ae202b43ee99eb932b4a87255038a80e8a1060d0a5d libdrm-2.4.100.tar.bz2
diff --git a/xorg/libdrm/depends b/xorg/libdrm/depends
new file mode 100644
index 00000000..90925c29
--- /dev/null
+++ b/xorg/libdrm/depends
@@ -0,0 +1 @@
+libpciaccess
diff --git a/xorg/libdrm/sources b/xorg/libdrm/sources
new file mode 100644
index 00000000..c6adb517
--- /dev/null
+++ b/xorg/libdrm/sources
@@ -0,0 +1 @@
+https://dri.freedesktop.org/libdrm/libdrm-2.4.100.tar.bz2
diff --git a/xorg/libdrm/version b/xorg/libdrm/version
new file mode 100644
index 00000000..a7a3418f
--- /dev/null
+++ b/xorg/libdrm/version
@@ -0,0 +1 @@
+2.4.100 1
diff --git a/xorg/libepoxy/build b/xorg/libepoxy/build
new file mode 100755
index 00000000..54475523
--- /dev/null
+++ b/xorg/libepoxy/build
@@ -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/xorg/libepoxy/checksums b/xorg/libepoxy/checksums
new file mode 100644
index 00000000..233b07ad
--- /dev/null
+++ b/xorg/libepoxy/checksums
@@ -0,0 +1 @@
+c926fcc606901f3e03e371027056fd478da43e01ce2da7ffc48b5a0de0ca107c 1.5.4.tar.gz
diff --git a/xorg/libepoxy/depends b/xorg/libepoxy/depends
new file mode 100644
index 00000000..e68256be
--- /dev/null
+++ b/xorg/libepoxy/depends
@@ -0,0 +1,2 @@
+mesa make
+meson make
diff --git a/xorg/libepoxy/sources b/xorg/libepoxy/sources
new file mode 100644
index 00000000..91669f1e
--- /dev/null
+++ b/xorg/libepoxy/sources
@@ -0,0 +1 @@
+https://github.com/anholt/libepoxy/archive/1.5.4.tar.gz
diff --git a/xorg/libepoxy/version b/xorg/libepoxy/version
new file mode 100644
index 00000000..de75e7c1
--- /dev/null
+++ b/xorg/libepoxy/version
@@ -0,0 +1 @@
+1.5.4 1
diff --git a/xorg/libevdev/build b/xorg/libevdev/build
new file mode 100755
index 00000000..0cccff6c
--- /dev/null
+++ b/xorg/libevdev/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-gcov
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/libevdev/checksums b/xorg/libevdev/checksums
new file mode 100644
index 00000000..98f30a63
--- /dev/null
+++ b/xorg/libevdev/checksums
@@ -0,0 +1 @@
+20d3cae4efd277f485abdf8f2a7c46588e539998b5a08c2c4d368218379d4211 libevdev-1.8.0.tar.xz
diff --git a/xorg/libevdev/depends b/xorg/libevdev/depends
new file mode 100644
index 00000000..0efd8dbe
--- /dev/null
+++ b/xorg/libevdev/depends
@@ -0,0 +1,2 @@
+linux-headers make
+python make
diff --git a/xorg/libevdev/sources b/xorg/libevdev/sources
new file mode 100644
index 00000000..5039d72a
--- /dev/null
+++ b/xorg/libevdev/sources
@@ -0,0 +1 @@
+https://www.freedesktop.org/software/libevdev/libevdev-1.8.0.tar.xz
diff --git a/xorg/libevdev/version b/xorg/libevdev/version
new file mode 100644
index 00000000..ab764544
--- /dev/null
+++ b/xorg/libevdev/version
@@ -0,0 +1 @@
+1.8.0 1
diff --git a/xorg/libfontenc/build b/xorg/libfontenc/build
new file mode 100755
index 00000000..b1980f79
--- /dev/null
+++ b/xorg/libfontenc/build
@@ -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
index 00000000..23248ab2
--- /dev/null
+++ b/xorg/libfontenc/checksums
@@ -0,0 +1 @@
+2cfcce810ddd48f2e5dc658d28c1808e86dcf303eaff16728b9aa3dbc0092079 libfontenc-1.1.4.tar.bz2
diff --git a/xorg/libfontenc/depends b/xorg/libfontenc/depends
new file mode 100644
index 00000000..101537ac
--- /dev/null
+++ b/xorg/libfontenc/depends
@@ -0,0 +1,2 @@
+xorgproto make
+zlib
diff --git a/xorg/libfontenc/sources b/xorg/libfontenc/sources
new file mode 100644
index 00000000..149bdd87
--- /dev/null
+++ b/xorg/libfontenc/sources
@@ -0,0 +1 @@
+https://www.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
index 00000000..6cab2e0c
--- /dev/null
+++ b/xorg/libfontenc/version
@@ -0,0 +1 @@
+1.1.4 2
diff --git a/xorg/libinput/build b/xorg/libinput/build
new file mode 100755
index 00000000..279e27fc
--- /dev/null
+++ b/xorg/libinput/build
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ -Ddebug-gui=false \
+ -Ddocumentation=false \
+ -Dtests=false \
+ -Dlibwacom=false \
+ . output
+
+ninja -C output
+ninja -C output install
diff --git a/xorg/libinput/checksums b/xorg/libinput/checksums
new file mode 100644
index 00000000..14279938
--- /dev/null
+++ b/xorg/libinput/checksums
@@ -0,0 +1 @@
+0feb3a0589709cc1032893bfaf4c49150d5360bd9782bec888f9e4dd9044c5b7 libinput-1.14.3.tar.xz
diff --git a/xorg/libinput/depends b/xorg/libinput/depends
new file mode 100644
index 00000000..8e41a3c2
--- /dev/null
+++ b/xorg/libinput/depends
@@ -0,0 +1,4 @@
+eudev
+libevdev
+meson make
+mtdev
diff --git a/xorg/libinput/post-install b/xorg/libinput/post-install
new file mode 100755
index 00000000..7f3e7efc
--- /dev/null
+++ b/xorg/libinput/post-install
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+cat <<EOF
+
+NOTE: You must be a part of the input group
+ for libinput 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.
+
+-> addgroup USER input
+
+NOTE: You also need xf86-input-libinput.
+
+EOF
diff --git a/xorg/libinput/sources b/xorg/libinput/sources
new file mode 100644
index 00000000..d7538b39
--- /dev/null
+++ b/xorg/libinput/sources
@@ -0,0 +1 @@
+https://www.freedesktop.org/software/libinput/libinput-1.14.3.tar.xz
diff --git a/xorg/libinput/version b/xorg/libinput/version
new file mode 100644
index 00000000..6c4cca37
--- /dev/null
+++ b/xorg/libinput/version
@@ -0,0 +1 @@
+1.14.3 1
diff --git a/xorg/libpciaccess/build b/xorg/libpciaccess/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libpciaccess/build
@@ -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
index 00000000..3e2c8c14
--- /dev/null
+++ b/xorg/libpciaccess/checksums
@@ -0,0 +1 @@
+214c9d0d884fdd7375ec8da8dcb91a8d3169f263294c9a90c575bf1938b9f489 libpciaccess-0.16.tar.bz2
diff --git a/xorg/libpciaccess/sources b/xorg/libpciaccess/sources
new file mode 100644
index 00000000..8b91d752
--- /dev/null
+++ b/xorg/libpciaccess/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libpciaccess-0.16.tar.bz2
diff --git a/xorg/libpciaccess/version b/xorg/libpciaccess/version
new file mode 100644
index 00000000..06da242c
--- /dev/null
+++ b/xorg/libpciaccess/version
@@ -0,0 +1 @@
+0.16 1
diff --git a/xorg/libxcb/build b/xorg/libxcb/build
new file mode 100755
index 00000000..285ad906
--- /dev/null
+++ b/xorg/libxcb/build
@@ -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
index 00000000..66eac30c
--- /dev/null
+++ b/xorg/libxcb/checksums
@@ -0,0 +1 @@
+a89fb7af7a11f43d2ce84a844a4b38df688c092bf4b67683aef179cdf2a647c4 libxcb-1.13.1.tar.bz2
diff --git a/xorg/libxcb/depends b/xorg/libxcb/depends
new file mode 100644
index 00000000..142b0470
--- /dev/null
+++ b/xorg/libxcb/depends
@@ -0,0 +1,3 @@
+libXau
+xcb-proto
+xorg-util-macros
diff --git a/xorg/libxcb/sources b/xorg/libxcb/sources
new file mode 100644
index 00000000..18298461
--- /dev/null
+++ b/xorg/libxcb/sources
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/libxcb-1.13.1.tar.bz2
diff --git a/xorg/libxcb/version b/xorg/libxcb/version
new file mode 100644
index 00000000..eb6ce0e2
--- /dev/null
+++ b/xorg/libxcb/version
@@ -0,0 +1 @@
+1.13.1 5
diff --git a/xorg/libxkbfile/build b/xorg/libxkbfile/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/libxkbfile/build
@@ -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
index 00000000..7320a843
--- /dev/null
+++ b/xorg/libxkbfile/checksums
@@ -0,0 +1 @@
+758dbdaa20add2db4902df0b1b7c936564b7376c02a0acd1f2a331bd334b38c7 libxkbfile-1.1.0.tar.bz2
diff --git a/xorg/libxkbfile/depends b/xorg/libxkbfile/depends
new file mode 100644
index 00000000..ac4a28ab
--- /dev/null
+++ b/xorg/libxkbfile/depends
@@ -0,0 +1,2 @@
+libX11 make
+xorgproto make
diff --git a/xorg/libxkbfile/sources b/xorg/libxkbfile/sources
new file mode 100644
index 00000000..858e762f
--- /dev/null
+++ b/xorg/libxkbfile/sources
@@ -0,0 +1 @@
+https://www.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
index 00000000..7281bb52
--- /dev/null
+++ b/xorg/libxkbfile/version
@@ -0,0 +1 @@
+1.1.0 1
diff --git a/xorg/libxshmfence/build b/xorg/libxshmfence/build
new file mode 100755
index 00000000..4a70bbd8
--- /dev/null
+++ b/xorg/libxshmfence/build
@@ -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
index 00000000..64031f30
--- /dev/null
+++ b/xorg/libxshmfence/checksums
@@ -0,0 +1 @@
+b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7 libxshmfence-1.3.tar.bz2
diff --git a/xorg/libxshmfence/depends b/xorg/libxshmfence/depends
new file mode 100644
index 00000000..32e0e265
--- /dev/null
+++ b/xorg/libxshmfence/depends
@@ -0,0 +1 @@
+xorgproto make
diff --git a/xorg/libxshmfence/sources b/xorg/libxshmfence/sources
new file mode 100644
index 00000000..37d40769
--- /dev/null
+++ b/xorg/libxshmfence/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/libxshmfence-1.3.tar.bz2
diff --git a/xorg/libxshmfence/version b/xorg/libxshmfence/version
new file mode 100644
index 00000000..a37a04c3
--- /dev/null
+++ b/xorg/libxshmfence/version
@@ -0,0 +1 @@
+1.3 1
diff --git a/xorg/mesa/build b/xorg/mesa/build
new file mode 100755
index 00000000..8441ca95
--- /dev/null
+++ b/xorg/mesa/build
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+export CFLAGS="-DGLX_X86_READONLY_TEXT $CFLAGS"
+
+meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ -Dplatforms=x11,drm \
+ . output
+
+ninja -C output
+ninja -C output install
diff --git a/xorg/mesa/checksums b/xorg/mesa/checksums
new file mode 100644
index 00000000..c63b790f
--- /dev/null
+++ b/xorg/mesa/checksums
@@ -0,0 +1 @@
+9d7b24fa60c82db34788196450042a55ce6cb2d70c7a8d5c31401619b6907797 mesa-19.2.6.tar.xz
diff --git a/xorg/mesa/depends b/xorg/mesa/depends
new file mode 100644
index 00000000..1a65438f
--- /dev/null
+++ b/xorg/mesa/depends
@@ -0,0 +1,19 @@
+bison make
+expat
+flex make
+libX11
+libXdamage
+libXext
+libXrandr
+libXrender
+libXxf86vm
+libdrm
+libelf
+libxcb
+libxshmfence
+llvm
+meson make
+python make
+python-mako make
+xorgproto
+zlib
diff --git a/xorg/mesa/sources b/xorg/mesa/sources
new file mode 100644
index 00000000..c7189578
--- /dev/null
+++ b/xorg/mesa/sources
@@ -0,0 +1 @@
+https://mesa.freedesktop.org/archive/mesa-19.2.6.tar.xz
diff --git a/xorg/mesa/version b/xorg/mesa/version
new file mode 100644
index 00000000..21a072a8
--- /dev/null
+++ b/xorg/mesa/version
@@ -0,0 +1 @@
+19.2.6 1
diff --git a/xorg/mtdev/build b/xorg/mtdev/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/mtdev/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/mtdev/checksums b/xorg/mtdev/checksums
new file mode 100644
index 00000000..b0ef807c
--- /dev/null
+++ b/xorg/mtdev/checksums
@@ -0,0 +1 @@
+6677d5708a7948840de734d8b4675d5980d4561171c5a8e89e54adf7a13eba7f mtdev-1.1.5.tar.bz2
diff --git a/xorg/mtdev/sources b/xorg/mtdev/sources
new file mode 100644
index 00000000..f6b66743
--- /dev/null
+++ b/xorg/mtdev/sources
@@ -0,0 +1 @@
+https://bitmath.org/code/mtdev/mtdev-1.1.5.tar.bz2
diff --git a/xorg/mtdev/version b/xorg/mtdev/version
new file mode 100644
index 00000000..3d29560a
--- /dev/null
+++ b/xorg/mtdev/version
@@ -0,0 +1 @@
+1.1.5 1
diff --git a/xorg/pango/build b/xorg/pango/build
new file mode 100755
index 00000000..f9f9fd37
--- /dev/null
+++ b/xorg/pango/build
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+
+export DESTDIR="$1"
+
+meson \
+ --prefix=/usr \
+ -Dgir=false \
+ -Dgtk_doc=false \
+ -Dintrospection=false \
+ . build
+
+ninja -C build
+ninja -C build install
+
+# Remove unneeded tests
+rm -rf "$1/usr/share/installed-tests"
+rm -rf "$1/usr/libexec/installed-tests"
diff --git a/xorg/pango/checksums b/xorg/pango/checksums
new file mode 100644
index 00000000..4669e91f
--- /dev/null
+++ b/xorg/pango/checksums
@@ -0,0 +1 @@
+66a5b6cc13db73efed67b8e933584509f8ddb7b10a8a40c3850ca4a985ea1b1f pango-1.44.7.tar.xz
diff --git a/xorg/pango/depends b/xorg/pango/depends
new file mode 100644
index 00000000..400e99c4
--- /dev/null
+++ b/xorg/pango/depends
@@ -0,0 +1,8 @@
+cairo
+fontconfig
+freetype-harfbuzz
+fribidi
+glib
+libXft
+libXrender
+meson make
diff --git a/xorg/pango/sources b/xorg/pango/sources
new file mode 100644
index 00000000..a212db0c
--- /dev/null
+++ b/xorg/pango/sources
@@ -0,0 +1 @@
+https://download.gnome.org/sources/pango/1.44/pango-1.44.7.tar.xz
diff --git a/xorg/pango/version b/xorg/pango/version
new file mode 100644
index 00000000..4d85154a
--- /dev/null
+++ b/xorg/pango/version
@@ -0,0 +1 @@
+1.44.7 1
diff --git a/xorg/pixman/build b/xorg/pixman/build
new file mode 100755
index 00000000..cb0b1bff
--- /dev/null
+++ b/xorg/pixman/build
@@ -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
index 00000000..41aff956
--- /dev/null
+++ b/xorg/pixman/checksums
@@ -0,0 +1 @@
+84abb7fa2541af24d9c3b34bf75d6ac60cc94ac4410061bbb295b66a29221550 pixman-0.38.4.tar.bz2
diff --git a/xorg/pixman/sources b/xorg/pixman/sources
new file mode 100644
index 00000000..a07081f1
--- /dev/null
+++ b/xorg/pixman/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/lib/pixman-0.38.4.tar.bz2
diff --git a/xorg/pixman/version b/xorg/pixman/version
new file mode 100644
index 00000000..fc098d80
--- /dev/null
+++ b/xorg/pixman/version
@@ -0,0 +1 @@
+0.38.4 1
diff --git a/xorg/python-mako/build b/xorg/python-mako/build
new file mode 100755
index 00000000..6efa479b
--- /dev/null
+++ b/xorg/python-mako/build
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+python3 setup.py build
+python3 setup.py install \
+ --prefix=/usr \
+ --root="$1"
diff --git a/xorg/python-mako/checksums b/xorg/python-mako/checksums
new file mode 100644
index 00000000..27a1cd78
--- /dev/null
+++ b/xorg/python-mako/checksums
@@ -0,0 +1 @@
+a36919599a9b7dc5d86a7a8988f23a9a3a3d083070023bab23d64f7f1d1e0a4b Mako-1.1.0.tar.gz
diff --git a/xorg/python-mako/depends b/xorg/python-mako/depends
new file mode 100644
index 00000000..fdc793e7
--- /dev/null
+++ b/xorg/python-mako/depends
@@ -0,0 +1 @@
+python
diff --git a/xorg/python-mako/sources b/xorg/python-mako/sources
new file mode 100644
index 00000000..b212ce3c
--- /dev/null
+++ b/xorg/python-mako/sources
@@ -0,0 +1 @@
+https://files.pythonhosted.org/packages/source/M/Mako/Mako-1.1.0.tar.gz
diff --git a/xorg/python-mako/version b/xorg/python-mako/version
new file mode 100644
index 00000000..cc57f911
--- /dev/null
+++ b/xorg/python-mako/version
@@ -0,0 +1 @@
+1.1.0 2
diff --git a/xorg/setxkbmap/build b/xorg/setxkbmap/build
new file mode 100755
index 00000000..373bceed
--- /dev/null
+++ b/xorg/setxkbmap/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/setxkbmap/checksums b/xorg/setxkbmap/checksums
new file mode 100644
index 00000000..a9832e32
--- /dev/null
+++ b/xorg/setxkbmap/checksums
@@ -0,0 +1 @@
+7e934afc55f161406f7dd99b5be8837e5d1478d8263776697b159d48461a1d3c setxkbmap-1.3.2.tar.gz
diff --git a/xorg/setxkbmap/depends b/xorg/setxkbmap/depends
new file mode 100644
index 00000000..0c497a66
--- /dev/null
+++ b/xorg/setxkbmap/depends
@@ -0,0 +1,2 @@
+libX11
+libxkbfile
diff --git a/xorg/setxkbmap/sources b/xorg/setxkbmap/sources
new file mode 100644
index 00000000..2f7c900a
--- /dev/null
+++ b/xorg/setxkbmap/sources
@@ -0,0 +1 @@
+https://www.x.org/archive//individual/app/setxkbmap-1.3.2.tar.gz
diff --git a/xorg/setxkbmap/version b/xorg/setxkbmap/version
new file mode 100644
index 00000000..a8cebfe5
--- /dev/null
+++ b/xorg/setxkbmap/version
@@ -0,0 +1 @@
+1.3.2 1
diff --git a/xorg/sowm/build b/xorg/sowm/build
new file mode 100755
index 00000000..7de21eed
--- /dev/null
+++ b/xorg/sowm/build
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/sowm/checksums b/xorg/sowm/checksums
new file mode 100644
index 00000000..ad41f283
--- /dev/null
+++ b/xorg/sowm/checksums
@@ -0,0 +1 @@
+60f3deaf2663fd35da3ac305143350f4b28dd41cea5f4ffc0fd7cf7f1e268098 1.0.tar.gz
diff --git a/xorg/sowm/depends b/xorg/sowm/depends
new file mode 100644
index 00000000..1903bba6
--- /dev/null
+++ b/xorg/sowm/depends
@@ -0,0 +1 @@
+libX11
diff --git a/xorg/sowm/sources b/xorg/sowm/sources
new file mode 100644
index 00000000..60a89833
--- /dev/null
+++ b/xorg/sowm/sources
@@ -0,0 +1 @@
+https://github.com/dylanaraps/sowm/archive/1.0.tar.gz
diff --git a/xorg/sowm/version b/xorg/sowm/version
new file mode 100644
index 00000000..f35ed484
--- /dev/null
+++ b/xorg/sowm/version
@@ -0,0 +1 @@
+1.0 1
diff --git a/xorg/st/build b/xorg/st/build
new file mode 100755
index 00000000..53074cc3
--- /dev/null
+++ b/xorg/st/build
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+sed -i 's|Liberation Mono|Monospace|g' config.def.h
+
+make
+make PREFIX=/usr DESTDIR="$1" install
diff --git a/xorg/st/checksums b/xorg/st/checksums
new file mode 100644
index 00000000..5643a2f4
--- /dev/null
+++ b/xorg/st/checksums
@@ -0,0 +1 @@
+aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 st-0.8.2.tar.gz
diff --git a/xorg/st/depends b/xorg/st/depends
new file mode 100644
index 00000000..5e3e4972
--- /dev/null
+++ b/xorg/st/depends
@@ -0,0 +1,4 @@
+fontconfig
+libX11
+libXft
+ncurses make
diff --git a/xorg/st/sources b/xorg/st/sources
new file mode 100644
index 00000000..7f853f09
--- /dev/null
+++ b/xorg/st/sources
@@ -0,0 +1 @@
+https://dl.suckless.org/st/st-0.8.2.tar.gz
diff --git a/xorg/st/version b/xorg/st/version
new file mode 100644
index 00000000..e1331499
--- /dev/null
+++ b/xorg/st/version
@@ -0,0 +1 @@
+0.8.2 2
diff --git a/xorg/xbitmaps/build b/xorg/xbitmaps/build
new file mode 100755
index 00000000..80ce93e8
--- /dev/null
+++ b/xorg/xbitmaps/build
@@ -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/xorg/xbitmaps/checksums b/xorg/xbitmaps/checksums
new file mode 100644
index 00000000..69278b0e
--- /dev/null
+++ b/xorg/xbitmaps/checksums
@@ -0,0 +1 @@
+b9f0c71563125937776c8f1f25174ae9685314cbd130fb4c2efce811981e07ee xbitmaps-1.1.2.tar.bz2
diff --git a/xorg/xbitmaps/depends b/xorg/xbitmaps/depends
new file mode 100644
index 00000000..8c98a973
--- /dev/null
+++ b/xorg/xbitmaps/depends
@@ -0,0 +1 @@
+xorg-util-macros make
diff --git a/xorg/xbitmaps/sources b/xorg/xbitmaps/sources
new file mode 100644
index 00000000..6b03aaeb
--- /dev/null
+++ b/xorg/xbitmaps/sources
@@ -0,0 +1 @@
+https://www.x.org/pub/individual/data/xbitmaps-1.1.2.tar.bz2
diff --git a/xorg/xbitmaps/version b/xorg/xbitmaps/version
new file mode 100644
index 00000000..909c7076
--- /dev/null
+++ b/xorg/xbitmaps/version
@@ -0,0 +1 @@
+1.1.2 1
diff --git a/xorg/xcb-proto/build b/xorg/xcb-proto/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/xcb-proto/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xcb-proto/checksums b/xorg/xcb-proto/checksums
new file mode 100644
index 00000000..a500a6cb
--- /dev/null
+++ b/xorg/xcb-proto/checksums
@@ -0,0 +1 @@
+7b98721e669be80284e9bbfeab02d2d0d54cd11172b72271e47a2fe875e2bde1 xcb-proto-1.13.tar.bz2
diff --git a/xorg/xcb-proto/depends b/xorg/xcb-proto/depends
new file mode 100644
index 00000000..ecc77727
--- /dev/null
+++ b/xorg/xcb-proto/depends
@@ -0,0 +1 @@
+python make
diff --git a/xorg/xcb-proto/sources b/xorg/xcb-proto/sources
new file mode 100644
index 00000000..716865c3
--- /dev/null
+++ b/xorg/xcb-proto/sources
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/xcb-proto-1.13.tar.bz2
diff --git a/xorg/xcb-proto/version b/xorg/xcb-proto/version
new file mode 100644
index 00000000..c63803d1
--- /dev/null
+++ b/xorg/xcb-proto/version
@@ -0,0 +1 @@
+1.13 1
diff --git a/xorg/xcb-util-cursor/build b/xorg/xcb-util-cursor/build
new file mode 100755
index 00000000..7ca84fcf
--- /dev/null
+++ b/xorg/xcb-util-cursor/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xcb-util-cursor/checksums b/xorg/xcb-util-cursor/checksums
new file mode 100644
index 00000000..b5b43252
--- /dev/null
+++ b/xorg/xcb-util-cursor/checksums
@@ -0,0 +1 @@
+a322332716a384c94d3cbf98f2d8fe2ce63c2fe7e2b26664b6cea1d411723df8 xcb-util-cursor-0.1.3.tar.gz
diff --git a/xorg/xcb-util-cursor/depends b/xorg/xcb-util-cursor/depends
new file mode 100644
index 00000000..9a1bd190
--- /dev/null
+++ b/xorg/xcb-util-cursor/depends
@@ -0,0 +1,5 @@
+libXau
+libxcb
+xcb-util
+xcb-util-image
+xcb-util-renderutil
diff --git a/xorg/xcb-util-cursor/sources b/xorg/xcb-util-cursor/sources
new file mode 100644
index 00000000..272f3902
--- /dev/null
+++ b/xorg/xcb-util-cursor/sources
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/xcb-util-cursor-0.1.3.tar.gz
diff --git a/xorg/xcb-util-cursor/version b/xorg/xcb-util-cursor/version
new file mode 100644
index 00000000..f8721162
--- /dev/null
+++ b/xorg/xcb-util-cursor/version
@@ -0,0 +1 @@
+0.1.3 1
diff --git a/xorg/xcb-util-image/build b/xorg/xcb-util-image/build
new file mode 100755
index 00000000..7ca84fcf
--- /dev/null
+++ b/xorg/xcb-util-image/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xcb-util-image/checksums b/xorg/xcb-util-image/checksums
new file mode 100644
index 00000000..8b74cbc7
--- /dev/null
+++ b/xorg/xcb-util-image/checksums
@@ -0,0 +1 @@
+cb2c86190cf6216260b7357a57d9100811bb6f78c24576a3a5bfef6ad3740a42 xcb-util-image-0.4.0.tar.gz
diff --git a/xorg/xcb-util-image/depends b/xorg/xcb-util-image/depends
new file mode 100644
index 00000000..a1267485
--- /dev/null
+++ b/xorg/xcb-util-image/depends
@@ -0,0 +1,3 @@
+libXau
+libxcb
+xcb-util
diff --git a/xorg/xcb-util-image/sources b/xorg/xcb-util-image/sources
new file mode 100644
index 00000000..f8a5eeab
--- /dev/null
+++ b/xorg/xcb-util-image/sources
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/xcb-util-image-0.4.0.tar.gz
diff --git a/xorg/xcb-util-image/version b/xorg/xcb-util-image/version
new file mode 100644
index 00000000..6f3c0f7f
--- /dev/null
+++ b/xorg/xcb-util-image/version
@@ -0,0 +1 @@
+0.4.0 1
diff --git a/xorg/xcb-util-keysyms/build b/xorg/xcb-util-keysyms/build
new file mode 100755
index 00000000..7ca84fcf
--- /dev/null
+++ b/xorg/xcb-util-keysyms/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xcb-util-keysyms/checksums b/xorg/xcb-util-keysyms/checksums
new file mode 100644
index 00000000..052b634d
--- /dev/null
+++ b/xorg/xcb-util-keysyms/checksums
@@ -0,0 +1 @@
+0ef8490ff1dede52b7de533158547f8b454b241aa3e4dcca369507f66f216dd9 xcb-util-keysyms-0.4.0.tar.bz2
diff --git a/xorg/xcb-util-keysyms/depends b/xorg/xcb-util-keysyms/depends
new file mode 100644
index 00000000..dc6f86ff
--- /dev/null
+++ b/xorg/xcb-util-keysyms/depends
@@ -0,0 +1,2 @@
+libxcb
+xcb-util make
diff --git a/xorg/xcb-util-keysyms/sources b/xorg/xcb-util-keysyms/sources
new file mode 100644
index 00000000..5df26df5
--- /dev/null
+++ b/xorg/xcb-util-keysyms/sources
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/xcb-util-keysyms-0.4.0.tar.bz2
diff --git a/xorg/xcb-util-keysyms/version b/xorg/xcb-util-keysyms/version
new file mode 100644
index 00000000..6f3c0f7f
--- /dev/null
+++ b/xorg/xcb-util-keysyms/version
@@ -0,0 +1 @@
+0.4.0 1
diff --git a/xorg/xcb-util-renderutil/build b/xorg/xcb-util-renderutil/build
new file mode 100755
index 00000000..7ca84fcf
--- /dev/null
+++ b/xorg/xcb-util-renderutil/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xcb-util-renderutil/checksums b/xorg/xcb-util-renderutil/checksums
new file mode 100644
index 00000000..e7cfba86
--- /dev/null
+++ b/xorg/xcb-util-renderutil/checksums
@@ -0,0 +1 @@
+55eee797e3214fe39d0f3f4d9448cc53cffe06706d108824ea37bb79fcedcad5 xcb-util-renderutil-0.3.9.tar.gz
diff --git a/xorg/xcb-util-renderutil/depends b/xorg/xcb-util-renderutil/depends
new file mode 100644
index 00000000..90b9d3b0
--- /dev/null
+++ b/xorg/xcb-util-renderutil/depends
@@ -0,0 +1,2 @@
+libXau
+libxcb
diff --git a/xorg/xcb-util-renderutil/sources b/xorg/xcb-util-renderutil/sources
new file mode 100644
index 00000000..3ae63f25
--- /dev/null
+++ b/xorg/xcb-util-renderutil/sources
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/xcb-util-renderutil-0.3.9.tar.gz
diff --git a/xorg/xcb-util-renderutil/version b/xorg/xcb-util-renderutil/version
new file mode 100644
index 00000000..fb042810
--- /dev/null
+++ b/xorg/xcb-util-renderutil/version
@@ -0,0 +1 @@
+0.3.9 1
diff --git a/xorg/xcb-util-wm/build b/xorg/xcb-util-wm/build
new file mode 100755
index 00000000..7ca84fcf
--- /dev/null
+++ b/xorg/xcb-util-wm/build
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --disable-static
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xcb-util-wm/checksums b/xorg/xcb-util-wm/checksums
new file mode 100644
index 00000000..9bb26156
--- /dev/null
+++ b/xorg/xcb-util-wm/checksums
@@ -0,0 +1 @@
+28bf8179640eaa89276d2b0f1ce4285103d136be6c98262b6151aaee1d3c2a3f xcb-util-wm-0.4.1.tar.bz2
diff --git a/xorg/xcb-util-wm/depends b/xorg/xcb-util-wm/depends
new file mode 100644
index 00000000..dc6f86ff
--- /dev/null
+++ b/xorg/xcb-util-wm/depends
@@ -0,0 +1,2 @@
+libxcb
+xcb-util make
diff --git a/xorg/xcb-util-wm/sources b/xorg/xcb-util-wm/sources
new file mode 100644
index 00000000..2a675524
--- /dev/null
+++ b/xorg/xcb-util-wm/sources
@@ -0,0 +1 @@
+https://xcb.freedesktop.org/dist/xcb-util-wm-0.4.1.tar.bz2
diff --git a/xorg/xcb-util-wm/version b/xorg/xcb-util-wm/version
new file mode 100644
index 00000000..3d58e2e2
--- /dev/null
+++ b/xorg/xcb-util-wm/version
@@ -0,0 +1 @@
+0.4.1 1
diff --git a/xorg/xcb-util/build b/xorg/xcb-util/build
new file mode 100755
index 00000000..7ca84fcf
--- /dev/null
+++ b/xorg/xcb-util/build
@@ -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
index 00000000..8e6359c8
--- /dev/null
+++ b/xorg/xcb-util/checksums
@@ -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
index 00000000..90b9d3b0
--- /dev/null
+++ b/xorg/xcb-util/depends
@@ -0,0 +1,2 @@
+libXau
+libxcb
diff --git a/xorg/xcb-util/sources b/xorg/xcb-util/sources
new file mode 100644
index 00000000..630c1388
--- /dev/null
+++ b/xorg/xcb-util/sources
@@ -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
index 00000000..6f3c0f7f
--- /dev/null
+++ b/xorg/xcb-util/version
@@ -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
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/xf86-input-libinput/build
@@ -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
index 00000000..2ce71aad
--- /dev/null
+++ b/xorg/xf86-input-libinput/checksums
@@ -0,0 +1 @@
+c28b56a21754b972db31798e6a4cf4dc9d69208d08f8fe41701a94def5e94bee xf86-input-libinput-0.29.0.tar.bz2
diff --git a/xorg/xf86-input-libinput/depends b/xorg/xf86-input-libinput/depends
new file mode 100644
index 00000000..f89a2267
--- /dev/null
+++ b/xorg/xf86-input-libinput/depends
@@ -0,0 +1,2 @@
+libinput
+xorg-server
diff --git a/xorg/xf86-input-libinput/sources b/xorg/xf86-input-libinput/sources
new file mode 100644
index 00000000..9d323db1
--- /dev/null
+++ b/xorg/xf86-input-libinput/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/driver/xf86-input-libinput-0.29.0.tar.bz2
diff --git a/xorg/xf86-input-libinput/version b/xorg/xf86-input-libinput/version
new file mode 100644
index 00000000..0b56a8aa
--- /dev/null
+++ b/xorg/xf86-input-libinput/version
@@ -0,0 +1 @@
+0.29.0 1
diff --git a/xorg/xf86-video-amdgpu/build b/xorg/xf86-video-amdgpu/build
new file mode 100755
index 00000000..3054c8be
--- /dev/null
+++ b/xorg/xf86-video-amdgpu/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+export LDFLAGS="-Wl,-z,lazy"
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xf86-video-amdgpu/checksums b/xorg/xf86-video-amdgpu/checksums
new file mode 100644
index 00000000..0d53d0ef
--- /dev/null
+++ b/xorg/xf86-video-amdgpu/checksums
@@ -0,0 +1 @@
+4f0ea4e0ae61995ac2b7c72433d31deab63b60c78763020aaa1b28696124fe5d xf86-video-amdgpu-19.1.0.tar.bz2
diff --git a/xorg/xf86-video-amdgpu/depends b/xorg/xf86-video-amdgpu/depends
new file mode 100644
index 00000000..0d1c94e3
--- /dev/null
+++ b/xorg/xf86-video-amdgpu/depends
@@ -0,0 +1,6 @@
+eudev
+expat
+libdrm
+libpciaccess
+mesa
+xorgproto
diff --git a/xorg/xf86-video-amdgpu/sources b/xorg/xf86-video-amdgpu/sources
new file mode 100644
index 00000000..9d4ca8e6
--- /dev/null
+++ b/xorg/xf86-video-amdgpu/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/driver/xf86-video-amdgpu-19.1.0.tar.bz2
diff --git a/xorg/xf86-video-amdgpu/version b/xorg/xf86-video-amdgpu/version
new file mode 100644
index 00000000..119d7b4b
--- /dev/null
+++ b/xorg/xf86-video-amdgpu/version
@@ -0,0 +1 @@
+19.1.0 1
diff --git a/xorg/xf86-video-ati/build b/xorg/xf86-video-ati/build
new file mode 100755
index 00000000..3054c8be
--- /dev/null
+++ b/xorg/xf86-video-ati/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+export LDFLAGS="-Wl,-z,lazy"
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xf86-video-ati/checksums b/xorg/xf86-video-ati/checksums
new file mode 100644
index 00000000..740c30d6
--- /dev/null
+++ b/xorg/xf86-video-ati/checksums
@@ -0,0 +1 @@
+c05c6e0c396a0148113f1836cfab7f2e43f784c9b7041f11e9cab40a4bc0c90f xf86-video-ati-19.1.0.tar.gz
diff --git a/xorg/xf86-video-ati/depends b/xorg/xf86-video-ati/depends
new file mode 100644
index 00000000..0d1c94e3
--- /dev/null
+++ b/xorg/xf86-video-ati/depends
@@ -0,0 +1,6 @@
+eudev
+expat
+libdrm
+libpciaccess
+mesa
+xorgproto
diff --git a/xorg/xf86-video-ati/sources b/xorg/xf86-video-ati/sources
new file mode 100644
index 00000000..b1a4fb8b
--- /dev/null
+++ b/xorg/xf86-video-ati/sources
@@ -0,0 +1 @@
+https://x.org/releases/individual/driver/xf86-video-ati-19.1.0.tar.gz
diff --git a/xorg/xf86-video-ati/version b/xorg/xf86-video-ati/version
new file mode 100644
index 00000000..119d7b4b
--- /dev/null
+++ b/xorg/xf86-video-ati/version
@@ -0,0 +1 @@
+19.1.0 1
diff --git a/xorg/xf86-video-intel/build b/xorg/xf86-video-intel/build
new file mode 100755
index 00000000..d0c7c0bd
--- /dev/null
+++ b/xorg/xf86-video-intel/build
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+
+export LDFLAGS="-Wl,-z,lazy"
+
+autoreconf -i
+
+./configure \
+ --prefix=/usr \
+ --libexecdir=/usr/lib \
+ --with-default-dri=3
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xf86-video-intel/checksums b/xorg/xf86-video-intel/checksums
new file mode 100644
index 00000000..6285661b
--- /dev/null
+++ b/xorg/xf86-video-intel/checksums
@@ -0,0 +1 @@
+10308bd230db2b35fe4371ffa06de36753a9a58dc725d43504ebf7f72c3c0395 xf86-video-intel-c6cb1b199598c572484fb4e30e1026be9d4ccc31.tar.gz
diff --git a/xorg/xf86-video-intel/depends b/xorg/xf86-video-intel/depends
new file mode 100644
index 00000000..b7fd39a8
--- /dev/null
+++ b/xorg/xf86-video-intel/depends
@@ -0,0 +1,10 @@
+autoconf make
+automake make
+eudev
+libXScrnSaver
+libXcursor
+libXinerama
+libXrandr
+libdrm
+libpciaccess
+libtool make
diff --git a/xorg/xf86-video-intel/sources b/xorg/xf86-video-intel/sources
new file mode 100644
index 00000000..fe655cdf
--- /dev/null
+++ b/xorg/xf86-video-intel/sources
@@ -0,0 +1 @@
+https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/archive/c6cb1b199598c572484fb4e30e1026be9d4ccc31/xf86-video-intel-c6cb1b199598c572484fb4e30e1026be9d4ccc31.tar.gz
diff --git a/xorg/xf86-video-intel/version b/xorg/xf86-video-intel/version
new file mode 100644
index 00000000..c5d89762
--- /dev/null
+++ b/xorg/xf86-video-intel/version
@@ -0,0 +1 @@
+c6cb1b199598c572484fb4e30e1026be9d4ccc31 1
diff --git a/xorg/xf86-video-nouveau/build b/xorg/xf86-video-nouveau/build
new file mode 100755
index 00000000..3054c8be
--- /dev/null
+++ b/xorg/xf86-video-nouveau/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+export LDFLAGS="-Wl,-z,lazy"
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xf86-video-nouveau/checksums b/xorg/xf86-video-nouveau/checksums
new file mode 100644
index 00000000..ff53e974
--- /dev/null
+++ b/xorg/xf86-video-nouveau/checksums
@@ -0,0 +1 @@
+304060806415579cdb5c1f71f1c54d11cacb431b5552b170decbc883ed43bf06 xf86-video-nouveau-1.0.16.tar.bz2
diff --git a/xorg/xf86-video-nouveau/depends b/xorg/xf86-video-nouveau/depends
new file mode 100644
index 00000000..4000b008
--- /dev/null
+++ b/xorg/xf86-video-nouveau/depends
@@ -0,0 +1,3 @@
+eudev
+libdrm
+xorgproto
diff --git a/xorg/xf86-video-nouveau/sources b/xorg/xf86-video-nouveau/sources
new file mode 100644
index 00000000..8c48367e
--- /dev/null
+++ b/xorg/xf86-video-nouveau/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/driver/xf86-video-nouveau-1.0.16.tar.bz2
diff --git a/xorg/xf86-video-nouveau/version b/xorg/xf86-video-nouveau/version
new file mode 100644
index 00000000..a4e01b6a
--- /dev/null
+++ b/xorg/xf86-video-nouveau/version
@@ -0,0 +1 @@
+1.0.16 1
diff --git a/xorg/xf86-video-vesa/build b/xorg/xf86-video-vesa/build
new file mode 100755
index 00000000..3054c8be
--- /dev/null
+++ b/xorg/xf86-video-vesa/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+export LDFLAGS="-Wl,-z,lazy"
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xf86-video-vesa/checksums b/xorg/xf86-video-vesa/checksums
new file mode 100644
index 00000000..581b5037
--- /dev/null
+++ b/xorg/xf86-video-vesa/checksums
@@ -0,0 +1 @@
+2982dd4eaf649101bd2c0dde37151a65157f6cbe120a692e6a6de764e36e03ea xf86-video-vesa-2.4.0.tar.gz
diff --git a/xorg/xf86-video-vesa/depends b/xorg/xf86-video-vesa/depends
new file mode 100644
index 00000000..831090ef
--- /dev/null
+++ b/xorg/xf86-video-vesa/depends
@@ -0,0 +1,3 @@
+libXi
+xorg-util-macros make
+xorgproto make
diff --git a/xorg/xf86-video-vesa/sources b/xorg/xf86-video-vesa/sources
new file mode 100644
index 00000000..d27258e8
--- /dev/null
+++ b/xorg/xf86-video-vesa/sources
@@ -0,0 +1 @@
+https://xorg.freedesktop.org/releases/individual/driver/xf86-video-vesa-2.4.0.tar.gz
diff --git a/xorg/xf86-video-vesa/version b/xorg/xf86-video-vesa/version
new file mode 100644
index 00000000..7afb4de6
--- /dev/null
+++ b/xorg/xf86-video-vesa/version
@@ -0,0 +1 @@
+2.4.0 1
diff --git a/xorg/xinit/build b/xorg/xinit/build
new file mode 100755
index 00000000..311b9d59
--- /dev/null
+++ b/xorg/xinit/build
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --with-xinitdir=/etc/X11/xinit
+
+make
+make DESTDIR="$1" install
+
+sed -i 's/enable_xauth=1/enable_xauth=0/' "$1/usr/bin/startx"
diff --git a/xorg/xinit/checksums b/xorg/xinit/checksums
new file mode 100644
index 00000000..7f0e5266
--- /dev/null
+++ b/xorg/xinit/checksums
@@ -0,0 +1 @@
+de9b8f617b68a70f6caf87da01fcf0ebd2b75690cdcba9c921d0ef54fa54abb9 xinit-1.4.1.tar.bz2
diff --git a/xorg/xinit/depends b/xorg/xinit/depends
new file mode 100644
index 00000000..54034cdd
--- /dev/null
+++ b/xorg/xinit/depends
@@ -0,0 +1 @@
+libX11 make
diff --git a/xorg/xinit/sources b/xorg/xinit/sources
new file mode 100644
index 00000000..7e32209b
--- /dev/null
+++ b/xorg/xinit/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/app/xinit-1.4.1.tar.bz2
diff --git a/xorg/xinit/version b/xorg/xinit/version
new file mode 100644
index 00000000..a50a0a64
--- /dev/null
+++ b/xorg/xinit/version
@@ -0,0 +1 @@
+1.4.1 2
diff --git a/xorg/xinput/build b/xorg/xinput/build
new file mode 100755
index 00000000..373bceed
--- /dev/null
+++ b/xorg/xinput/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xinput/checksums b/xorg/xinput/checksums
new file mode 100644
index 00000000..ffc3d73f
--- /dev/null
+++ b/xorg/xinput/checksums
@@ -0,0 +1 @@
+9f29f9bfe387c5a3d582f9edc8c5a753510ecc6fdfb154c03b5cea5975b10ce4 xinput-1.6.3.tar.gz
diff --git a/xorg/xinput/depends b/xorg/xinput/depends
new file mode 100644
index 00000000..4118e164
--- /dev/null
+++ b/xorg/xinput/depends
@@ -0,0 +1,2 @@
+libX11
+libXmu
diff --git a/xorg/xinput/sources b/xorg/xinput/sources
new file mode 100644
index 00000000..5cafdf91
--- /dev/null
+++ b/xorg/xinput/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/app/xinput-1.6.3.tar.gz
diff --git a/xorg/xinput/version b/xorg/xinput/version
new file mode 100644
index 00000000..05465e05
--- /dev/null
+++ b/xorg/xinput/version
@@ -0,0 +1 @@
+1.6.3 1
diff --git a/xorg/xkbcomp/build b/xorg/xkbcomp/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/xkbcomp/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xkbcomp/checksums b/xorg/xkbcomp/checksums
new file mode 100644
index 00000000..8c8385c8
--- /dev/null
+++ b/xorg/xkbcomp/checksums
@@ -0,0 +1 @@
+6dd8bcb9be7e85bd7294abe261b8c7b0539d2fc93e41b80fb8bd013767ce8424 xkbcomp-1.4.2.tar.bz2
diff --git a/xorg/xkbcomp/depends b/xorg/xkbcomp/depends
new file mode 100644
index 00000000..6d64af8e
--- /dev/null
+++ b/xorg/xkbcomp/depends
@@ -0,0 +1,2 @@
+libX11 make
+libxkbfile make
diff --git a/xorg/xkbcomp/sources b/xorg/xkbcomp/sources
new file mode 100644
index 00000000..e089a15b
--- /dev/null
+++ b/xorg/xkbcomp/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/app/xkbcomp-1.4.2.tar.bz2
diff --git a/xorg/xkbcomp/version b/xorg/xkbcomp/version
new file mode 100644
index 00000000..4ff136af
--- /dev/null
+++ b/xorg/xkbcomp/version
@@ -0,0 +1 @@
+1.4.2 1
diff --git a/xorg/xkeyboard-config/build b/xorg/xkeyboard-config/build
new file mode 100755
index 00000000..abfcca36
--- /dev/null
+++ b/xorg/xkeyboard-config/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --with-xkb-rules-symlink=xfree86,xorg \
+ --enable-compat-rules
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xkeyboard-config/checksums b/xorg/xkeyboard-config/checksums
new file mode 100644
index 00000000..59234a3b
--- /dev/null
+++ b/xorg/xkeyboard-config/checksums
@@ -0,0 +1 @@
+69adb25b0fc64e4075f8ec0eab8d869892419f474f91fb69db1713de2062bdce xkeyboard-config-2.28.tar.bz2
diff --git a/xorg/xkeyboard-config/depends b/xorg/xkeyboard-config/depends
new file mode 100644
index 00000000..0f146e0c
--- /dev/null
+++ b/xorg/xkeyboard-config/depends
@@ -0,0 +1,2 @@
+libX11 make
+xkbcomp
diff --git a/xorg/xkeyboard-config/sources b/xorg/xkeyboard-config/sources
new file mode 100644
index 00000000..2139e9dc
--- /dev/null
+++ b/xorg/xkeyboard-config/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.28.tar.bz2
diff --git a/xorg/xkeyboard-config/version b/xorg/xkeyboard-config/version
new file mode 100644
index 00000000..61245cf1
--- /dev/null
+++ b/xorg/xkeyboard-config/version
@@ -0,0 +1 @@
+2.28 1
diff --git a/xorg/xorg-server/build b/xorg/xorg-server/build
new file mode 100755
index 00000000..499f3435
--- /dev/null
+++ b/xorg/xorg-server/build
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+
+patch -p1 < rootless_modesetting.patch
+
+./configure \
+ --prefix=/usr \
+ --localstatedir=/var \
+ --disable-systemd-logind \
+ --disable-xwayland \
+ --disable-unit-tests \
+ --enable-glx \
+ --enable-dri \
+ --enable-dri2 \
+ --enable-dri3 \
+ --enable-glamor \
+ --enable-xorg \
+ --enable-config-udev \
+ --enable-config-udev-kms \
+ --with-sha1=libcrypto \
+ --with-systemd-daemon=off
+
+make
+make DESTDIR="$1" install
+
+rm -f "$1/usr/share/X11/xorg.conf.d/10-evdev.conf"
diff --git a/xorg/xorg-server/checksums b/xorg/xorg-server/checksums
new file mode 100644
index 00000000..709b48f7
--- /dev/null
+++ b/xorg/xorg-server/checksums
@@ -0,0 +1,2 @@
+6316146304e6e8a36d5904987ae2917b5d5b195dc9fc63d67f7aca137e5a51d1 xorg-server-1.20.6.tar.bz2
+c98ad9376f20ab25463ef74bb19f2dbe874a19918b27b430c8e632d272379129 rootless_modesetting.patch
diff --git a/xorg/xorg-server/depends b/xorg/xorg-server/depends
new file mode 100644
index 00000000..51901117
--- /dev/null
+++ b/xorg/xorg-server/depends
@@ -0,0 +1,24 @@
+bzip2
+eudev
+freetype-harfbuzz
+libX11
+libXau
+libXdamage
+libXext
+libXfixes
+libXfont2
+libXxf86vm
+libdrm
+libepoxy
+libfontenc
+libpciaccess
+libressl
+libxcb
+libxkbfile
+libxshmfence
+mesa
+pixman
+xinit
+xkeyboard-config
+xtrans make
+zlib
diff --git a/xorg/xorg-server/patches/rootless_modesetting.patch b/xorg/xorg-server/patches/rootless_modesetting.patch
new file mode 100644
index 00000000..d578208d
--- /dev/null
+++ b/xorg/xorg-server/patches/rootless_modesetting.patch
@@ -0,0 +1,14 @@
+--- xorg-server-1.20.3/hw/xfree86/drivers/modesetting/driver.c
++++ xorg-server-1.20.3/hw/xfree86/drivers/modesetting/driver.c
+@@ -1528,6 +1528,10 @@
+ if (ms->fd_passed)
+ return TRUE;
+
++ ret = drmIsMaster(ms->fd);
++ if (ret)
++ return TRUE;
++
+ ret = drmSetMaster(ms->fd);
+ if (ret)
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "drmSetMaster failed: %s\n",
+
diff --git a/xorg/xorg-server/post-install b/xorg/xorg-server/post-install
new file mode 100755
index 00000000..4185f793
--- /dev/null
+++ b/xorg/xorg-server/post-install
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+cat <<EOF
+
+NOTE: You must be a part of the video 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.
+
+-> addgroup USER video
+
+EOF
diff --git a/xorg/xorg-server/sources b/xorg/xorg-server/sources
new file mode 100644
index 00000000..1f481ed7
--- /dev/null
+++ b/xorg/xorg-server/sources
@@ -0,0 +1,2 @@
+https://www.x.org/releases/individual/xserver/xorg-server-1.20.6.tar.bz2
+patches/rootless_modesetting.patch
diff --git a/xorg/xorg-server/version b/xorg/xorg-server/version
new file mode 100644
index 00000000..7c34a547
--- /dev/null
+++ b/xorg/xorg-server/version
@@ -0,0 +1 @@
+1.20.6 1
diff --git a/xorg/xorg-util-macros/build b/xorg/xorg-util-macros/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/xorg-util-macros/build
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xorg-util-macros/checksums b/xorg/xorg-util-macros/checksums
new file mode 100644
index 00000000..cb85df29
--- /dev/null
+++ b/xorg/xorg-util-macros/checksums
@@ -0,0 +1 @@
+d7e43376ad220411499a79735020f9d145fdc159284867e99467e0d771f3e712 util-macros-1.19.2.tar.bz2
diff --git a/xorg/xorg-util-macros/sources b/xorg/xorg-util-macros/sources
new file mode 100644
index 00000000..91ad7613
--- /dev/null
+++ b/xorg/xorg-util-macros/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/util/util-macros-1.19.2.tar.bz2
diff --git a/xorg/xorg-util-macros/version b/xorg/xorg-util-macros/version
new file mode 100644
index 00000000..2148dd1e
--- /dev/null
+++ b/xorg/xorg-util-macros/version
@@ -0,0 +1 @@
+1.19.2 1
diff --git a/xorg/xorgproto/build b/xorg/xorgproto/build
new file mode 100755
index 00000000..20f084fe
--- /dev/null
+++ b/xorg/xorgproto/build
@@ -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
index 00000000..7f973586
--- /dev/null
+++ b/xorg/xorgproto/checksums
@@ -0,0 +1 @@
+46ecd0156c561d41e8aa87ce79340910cdf38373b759e737fcbba5df508e7b8e xorgproto-2019.2.tar.bz2
diff --git a/xorg/xorgproto/sources b/xorg/xorgproto/sources
new file mode 100644
index 00000000..0fbd8d2e
--- /dev/null
+++ b/xorg/xorgproto/sources
@@ -0,0 +1 @@
+https://xorg.freedesktop.org/archive/individual/proto/xorgproto-2019.2.tar.bz2
diff --git a/xorg/xorgproto/version b/xorg/xorgproto/version
new file mode 100644
index 00000000..7730caf9
--- /dev/null
+++ b/xorg/xorgproto/version
@@ -0,0 +1 @@
+2019.2 1
diff --git a/xorg/xprop/build b/xorg/xprop/build
new file mode 100755
index 00000000..373bceed
--- /dev/null
+++ b/xorg/xprop/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xprop/checksums b/xorg/xprop/checksums
new file mode 100644
index 00000000..70559e33
--- /dev/null
+++ b/xorg/xprop/checksums
@@ -0,0 +1 @@
+dddb6e208ffa515e68f001c22077a465f1365a4bcf91d9b37f336a6c0d15400d xprop-1.2.4.tar.gz
diff --git a/xorg/xprop/depends b/xorg/xprop/depends
new file mode 100644
index 00000000..4118e164
--- /dev/null
+++ b/xorg/xprop/depends
@@ -0,0 +1,2 @@
+libX11
+libXmu
diff --git a/xorg/xprop/sources b/xorg/xprop/sources
new file mode 100644
index 00000000..59cbf611
--- /dev/null
+++ b/xorg/xprop/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/app/xprop-1.2.4.tar.gz
diff --git a/xorg/xprop/version b/xorg/xprop/version
new file mode 100644
index 00000000..d66671c6
--- /dev/null
+++ b/xorg/xprop/version
@@ -0,0 +1 @@
+1.2.4 1
diff --git a/xorg/xrandr/build b/xorg/xrandr/build
new file mode 100755
index 00000000..373bceed
--- /dev/null
+++ b/xorg/xrandr/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xrandr/checksums b/xorg/xrandr/checksums
new file mode 100644
index 00000000..f64563e2
--- /dev/null
+++ b/xorg/xrandr/checksums
@@ -0,0 +1 @@
+7bc76daf9d72f8aff885efad04ce06b90488a1a169d118dea8a2b661832e8762 xrandr-1.5.1.tar.xz
diff --git a/xorg/xrandr/depends b/xorg/xrandr/depends
new file mode 100644
index 00000000..6a84a73f
--- /dev/null
+++ b/xorg/xrandr/depends
@@ -0,0 +1,2 @@
+libXrandr
+xorg-util-macros make
diff --git a/xorg/xrandr/sources b/xorg/xrandr/sources
new file mode 100644
index 00000000..597a5258
--- /dev/null
+++ b/xorg/xrandr/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/app/xrandr-1.5.1.tar.xz
diff --git a/xorg/xrandr/version b/xorg/xrandr/version
new file mode 100644
index 00000000..0872adad
--- /dev/null
+++ b/xorg/xrandr/version
@@ -0,0 +1 @@
+1.5.1 1
diff --git a/xorg/xrdb/build b/xorg/xrdb/build
new file mode 100755
index 00000000..373bceed
--- /dev/null
+++ b/xorg/xrdb/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xrdb/checksums b/xorg/xrdb/checksums
new file mode 100644
index 00000000..231c9077
--- /dev/null
+++ b/xorg/xrdb/checksums
@@ -0,0 +1 @@
+f23a65cfa1f7126040d68b6cf1e4567523edac10f8dc06f23d840d330c7c6946 xrdb-1.2.0.tar.bz2
diff --git a/xorg/xrdb/depends b/xorg/xrdb/depends
new file mode 100644
index 00000000..ea62ae5b
--- /dev/null
+++ b/xorg/xrdb/depends
@@ -0,0 +1,3 @@
+libX11
+libXmu
+xorg-util-macros make
diff --git a/xorg/xrdb/sources b/xorg/xrdb/sources
new file mode 100644
index 00000000..2e3a67f7
--- /dev/null
+++ b/xorg/xrdb/sources
@@ -0,0 +1 @@
+https://www.x.org/releases/individual/app/xrdb-1.2.0.tar.bz2
diff --git a/xorg/xrdb/version b/xorg/xrdb/version
new file mode 100644
index 00000000..8b9a47f0
--- /dev/null
+++ b/xorg/xrdb/version
@@ -0,0 +1 @@
+1.2.0 1
diff --git a/xorg/xset/build b/xorg/xset/build
new file mode 100755
index 00000000..80ce93e8
--- /dev/null
+++ b/xorg/xset/build
@@ -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/xorg/xset/checksums b/xorg/xset/checksums
new file mode 100644
index 00000000..16c65894
--- /dev/null
+++ b/xorg/xset/checksums
@@ -0,0 +1 @@
+e4fd95280df52a88e9b0abc1fee11dcf0f34fc24041b9f45a247e52df941c957 xset-1.2.4.tar.bz2
diff --git a/xorg/xset/depends b/xorg/xset/depends
new file mode 100644
index 00000000..16c5c7f9
--- /dev/null
+++ b/xorg/xset/depends
@@ -0,0 +1,2 @@
+libXmu
+xorg-util-macros make
diff --git a/xorg/xset/sources b/xorg/xset/sources
new file mode 100644
index 00000000..1dc1534b
--- /dev/null
+++ b/xorg/xset/sources
@@ -0,0 +1 @@
+https://x.org/releases/individual/app/xset-1.2.4.tar.bz2
diff --git a/xorg/xset/version b/xorg/xset/version
new file mode 100644
index 00000000..d66671c6
--- /dev/null
+++ b/xorg/xset/version
@@ -0,0 +1 @@
+1.2.4 1
diff --git a/xorg/xsetroot/build b/xorg/xsetroot/build
new file mode 100755
index 00000000..373bceed
--- /dev/null
+++ b/xorg/xsetroot/build
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+make
+make DESTDIR="$1" install
diff --git a/xorg/xsetroot/checksums b/xorg/xsetroot/checksums
new file mode 100644
index 00000000..b95d6eb3
--- /dev/null
+++ b/xorg/xsetroot/checksums
@@ -0,0 +1 @@
+9d007f5119be09924ac3a5d2bd506f32e6c164b82633c88d2aff26311e1a2a2b xsetroot-1.1.2.tar.gz
diff --git a/xorg/xsetroot/depends b/xorg/xsetroot/depends
new file mode 100644
index 00000000..9640b489
--- /dev/null
+++ b/xorg/xsetroot/depends
@@ -0,0 +1,5 @@
+libXmu
+libXrender
+libXfixes
+libXcursor
+xbitmaps
diff --git a/xorg/xsetroot/sources b/xorg/xsetroot/sources
new file mode 100644
index 00000000..82fa909f
--- /dev/null
+++ b/xorg/xsetroot/sources
@@ -0,0 +1 @@
+https://www.x.org/archive//individual/app/xsetroot-1.1.2.tar.gz
diff --git a/xorg/xsetroot/version b/xorg/xsetroot/version
new file mode 100644
index 00000000..909c7076
--- /dev/null
+++ b/xorg/xsetroot/version
@@ -0,0 +1 @@
+1.1.2 1
diff --git a/xorg/xtrans/build b/xorg/xtrans/build
new file mode 100755
index 00000000..6daf22f8
--- /dev/null
+++ b/xorg/xtrans/build
@@ -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
index 00000000..7d58cadb
--- /dev/null
+++ b/xorg/xtrans/checksums
@@ -0,0 +1 @@
+377c4491593c417946efcd2c7600d1e62639f7a8bbca391887e2c4679807d773 xtrans-1.4.0.tar.bz2
diff --git a/xorg/xtrans/sources b/xorg/xtrans/sources
new file mode 100644
index 00000000..8bba05b4
--- /dev/null
+++ b/xorg/xtrans/sources
@@ -0,0 +1 @@
+https://www.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
index 00000000..7f14d8f6
--- /dev/null
+++ b/xorg/xtrans/version
@@ -0,0 +1 @@
+1.4.0 2