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->